Edit videos like you edit text — fully offline, in your browser.
✨ Try it now: rescript.aashuu.tech
Rescript is an open-source, transcript-based video editor. Drop in a video 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 video. Export the final cut to MP4 — without your video ever leaving your device.
- 🔒 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
- 🧹 Filler removal — one-click cut of "um", "uh", and similar fillers (use Verbatim mode to keep them in the transcript)
- 🗣️ Speaker diarization — the transcript is grouped by speaker
- 🎬 Timeline — waveform, word labels, cut regions, playhead, zoom
- ⚡ Live preview — playback skips your cuts in real time
- 📦 In-browser export — frame-accurate MP4 render with ffmpeg.wasm
| Piece | Tech |
|---|---|
| App | Next.js + React + TypeScript + Tailwind |
| Transcription | transformers.js running whisper-base_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 |
npm install # also copies ffmpeg/onnxruntime WASM into public/vendor
npm run dev # dev server
npm run build # production build
npm run lint # eslintOpen http://localhost:3000 and drop in a video with an audio track.
Note on "offline": the AI models (~90 MB total) are downloaded from the Hugging Face Hub the first time you transcribe, then cached in browser 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.
- Extract — ffmpeg.wasm decodes the audio track to mono 16 kHz PCM.
- Transcribe — Whisper runs in a Web Worker with
return_timestamps: "word", streaming text as it goes; pyannote assigns a speaker to every word. Verbatim mode prompts Whisper to keep filler words so they can be edited. - 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.
- Export — the kept ranges are trimmed and concatenated with an ffmpeg
filter graph and re-encoded (
libx264/aac), so cuts are word-accurate.
A Chromium-based browser is recommended. The app requires SharedArrayBuffer
(served with COOP/COEP headers) and uses WebGPU for inference when available,
falling back to WASM otherwise.
MIT

