Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

210 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Rescript logo
Edit video and audio like you edit text β€” fully offline, on your device.

rescript.

Join the Discord Follow @wassgha on X

✨ Try it in the browser wassgha.github.io/rescript or download the Desktop App

Rescript Demo

Rescript is an open-source, transcript-based media editor. Drop in a video or audio file and it is transcribed locally with per-word timestamps and speaker labels. Delete words in the transcript and the corresponding clip is cut from the media. Export the final cut β€” without your file ever leaving your device.

Download

Download for macOS β€” Apple Silicon Β  Download for macOS β€” Intel Β  Download for Windows Β  Download the AppImage for Linux

See the Releases page. Desktop builds auto-update from GitHub Releases. Prefer the browser? Use the web app β€” same editor, no install.

  • πŸ”’ Private by design β€” no server, no auth, no uploads; all media processing happens on-device
  • πŸ“ Word-level editing β€” select words, press ⌫, the cut follows the text
  • πŸ“₯ Import your own transcript β€” skip Whisper and edit with an SRT, VTT, or JSON caption file
  • πŸ“€ Export hub β€” video (MP4/WebM, 720p–4K), audio (M4A/MP3/WAV), transcript (TXT/MD), or subtitles (SRT/VTT/JSON)
  • 🧹 Filler removal β€” one-click cut of "um", "uh", and similar fillers
  • πŸ”‡ Silence removal β€” one-click cut of pauses and dead air (β‰₯0.3s)
  • πŸ—£οΈ Speaker diarization β€” the transcript is grouped by speaker
  • 🎬 Timeline β€” waveform, wordbar with draggable timing handles, Split, cut regions, playhead; scroll to zoom, side-scroll to pan
  • βœ‚οΈ Split & trim β€” blade clips at the playhead; drag clip edges to refine cuts beyond word boundaries
  • 🎯 Word timing β€” zoom in and drag a word's edges when ASR alignment is off
  • πŸ”΄ Cut edges β€” drag either edge of a cut to trim independently of Whisper timestamps; double-click to reset
  • ⚑ Live preview β€” playback skips your cuts in real time
  • πŸ“¦ In-browser / desktop export β€” frame-accurate re-encode with ffmpeg.wasm
  • 🎧 Audio files β€” edit podcasts, voice notes, and interviews the same way as video
  • πŸ–₯️ Desktop app β€” macOS, Windows, and Linux via Electron (signed + notarized on Mac)

Stack

Piece Tech
App Next.js + React + TypeScript + Tailwind
Desktop Electron + electron-builder (auto-update from GitHub Releases)
Transcription transformers.js running whisper-base_timestamped or whisper-small_timestamped (WebGPU with WASM fallback) in a Web Worker
Speaker labels pyannote-segmentation-3.0 (ONNX)
Media processing ffmpeg.wasm (multi-threaded) for audio extraction and export
State zustand

Development

npm install     # also copies ffmpeg/onnxruntime WASM into public/vendor
npm run dev     # Next.js web app (http://localhost:3000)
npm run electron:dev   # Electron shell + Next.js dev server
npm run build   # production web build
npm run dist    # unsigned desktop installers into dist/
npm run lint    # eslint

Open http://localhost:3000 and drop in a video with an audio track. For desktop packaging, signing, and cutting releases, see RELEASING.md.

Note on "offline": the AI models (Whisper Base ~200 MB, or Small ~600 MB, plus a small speaker model) are downloaded from the Hugging Face Hub the first time you transcribe, then cached in browser / app storage. After that, everything β€” transcription, editing, export β€” works with the network fully disconnected. Your media and transcript never leave the device; the only third-party request the app makes is anonymous page analytics (Google Analytics), which fails silently when offline.

How it works

Rescript Promo

  1. Extract β€” ffmpeg.wasm decodes the audio track to mono 16 kHz PCM.
  2. Transcribe β€” Whisper runs in a Web Worker with return_timestamps: "word", streaming text as it goes; pyannote assigns a speaker to every word. Choose Whisper Base, Whisper Small, or Import transcript (SRT / VTT / JSON) on the homepage.
  3. Edit β€” deleting words produces "cut ranges" of the original media. The preview player skips them in real time and the timeline shows them in red. Remove fillers cuts every detected "um" / "uh" / etc. in one click. Remove silences cuts pauses and dead air of 0.3s or longer.
  4. Export β€” the kept ranges are trimmed and concatenated with an ffmpeg filter graph and re-encoded (libx264/aac), so cuts are word-accurate.

Browser support

A Chromium-based browser is recommended for the web app. It requires SharedArrayBuffer (served with COOP/COEP headers) and uses WebGPU for inference when available, falling back to WASM otherwise. The desktop app bundles Chromium via Electron and sets the same isolation headers on its app:// protocol.

License

Copyright (c) 2026 Wassim Gharbi and Rescript contributors.

Licensed under the PolyForm Noncommercial License 1.0.0. You may use, modify, and share Rescript for noncommercial purposes only, and you must retain the required copyright notice. Commercial use (including reselling or redistributing the software for a fee) is not permitted under this license. Contact the author for commercial licensing.

Prior releases published under the MIT License remain available under MIT for those versions only.


License: PolyForm Noncommercial Platforms Electron Stars Latest release

Built by @wassgha β€” follow along on X for updates, or come say hi in the Discord.

Releases

Contributors

Languages