AI Video Subtitle Generator
A video subtitle generator built on Whisper. Feed it an MP4 and get SRT, WebVTT or a plain transcript, with cues capped at two lines of 42 characters.
Runs entirely in your browser — your files and text never leave your device. The AI model downloads the first time you run this tool, then stays on this device — so later runs work offline.
Downloads the speech recognition model (~178 MB) the first time you run it, then works offline.
Drag & drop your file here, or
English-only model: no language detection, no translation. Language and Task unlock again the moment you pick a multilingual one — your language is held, not thrown away.
Splits videos over about three minutes across several CPU workers. Each worker keeps its own copy of the model, so it trades memory for speed — leave it off on a machine that's tight on RAM.
Runs on your device — the model downloads once on first use, then works offline. Your video is never uploaded. Long videos take longer to transcribe.
How to use
- Drop a video into the Video box. It takes anything the browser reports as video, plus .mkv by extension, and it needs an audio track; a silent clip stops with a message saying there is no audio track it can read.
- Choose a Model. Balanced is already selected. The two larger ones need WebGPU, and where your browser cannot run them the option is greyed out with the reason written into the option text itself.
- Set Language if you know it or leave it on Auto-detect, and switch Task to Translate to English for foreign-language footage. Both controls grey out while the English-only model is selected.
- Press Generate subtitles. Text streams into the box as each two-minute stretch of audio finishes, then pick a Format and press Download.
How this works
Drop in a clip and the audio is the first thing to move. The whole track is pulled out of the container, downmixed to mono and resampled to 16 kHz, which is the rate Whisper was trained on, and then handed to a Whisper model running inside this tab. That makes it a video subtitle generator with no queue in front of it, and the file stays where you dropped it. Four model sizes sit in the Model list, each carrying the download figure for the machine you are actually on. Balanced is picked for you at roughly 278 MB, or 178 MB if your browser has WebGPU.
Whisper hands back blocks of text with timestamps, and those blocks are the wrong shape for subtitles, so they get re-cut before you see them. No cue runs wider than 42 characters on a line or taller than two lines. None sits on screen for under 1.2 seconds or over 7. How long each one holds is worked out from its length at 15 characters a second, which is roughly the reading pace broadcast subtitle guidelines aim for. A long sentence is split at word boundaries across as many cues as it needs, each one picking up where the last ended.
When it finishes, the cues are attached to the player above as a WebVTT track and switched on, so you can watch the clip with its own captions and catch the lines the model fluffed. Nothing is burned into the picture and the video file itself is untouched. Export from the Format picker: SRT for editors and YouTube, WebVTT for web players, or a plain transcript with the timings stripped out. The download takes the video's own name with the extension swapped, so interview.mp4 saves as interview.srt.
Good to know
- Styling is not on offer. Every cue is plain text, placed wherever the player decides to put it, in whatever font the player uses. No colour, no italics, no positioning, no karaoke timing. SRT barely carries any of that anyway, so treat the file as a starting point your editor takes further rather than a finished asset.
- Accuracy falls off where you would expect. Overlapping speakers, music sitting under dialogue, thick accents and proper nouns are the usual four culprits. There is no speaker labelling either, so a two-person interview comes back as one undivided stream of text with no indication of who said what. Watch it through the preview before you hand it to anybody.
Frequently asked questions
Which model should I pick?
Balanced is the default and it is the right answer for most footage: multilingual, and the largest of the four that still runs without WebGPU. Fast is an English-only build and noticeably rougher on anything but clean speech. Accurate and Best are better again, at about 391 MB and 537 MB, and both need WebGPU. Each option prints its own size next to its name once the page has worked out what your machine can do.
Language and Task are greyed out. What did I do?
Nothing wrong. You are on the Fast model, which is an English-only build of Whisper: it cannot detect a language and it cannot translate, so both controls lock while it is chosen and a note underneath says so. Move to any multilingual model and they unlock with your earlier language choice still in place rather than reset to Auto-detect.
It says the model needs WebGPU. Is there a way around that?
Not for those two. Accurate and Best only ship in formats that want a GPU backend, so without WebGPU they are disabled outright and the option text tells you why. Fast and Balanced both have WebAssembly builds and run anywhere. If the model you had selected turns out to be unavailable once the page finishes checking your hardware, it drops back to Balanced on its own.
Why is the first run so much slower than the second?
The model downloads the first time you use it, somewhere between 114 MB and 537 MB depending on the tier and the backend, and the browser caches it afterwards. Every later video skips that step and needs no network at all. The status line beside the button walks you through the stages: reading the audio, then the download as a percentage, then transcribing.
What does the Subtitle long videos faster checkbox actually do?
It splits anything over about three minutes across several CPU workers so chunks transcribe side by side instead of one after another. The catch is in the label: each worker loads its own copy of the model, so memory use multiplies by the number of workers. Leave it off on a machine that is already tight. The checkbox is hidden on phones and tablets, where it would cost more than it gives.
Can I get English subtitles for a Hindi video?
Set Task to Translate to English and leave Language on Hindi or on Auto-detect. Whisper translates as it transcribes, so the cues come out in English against the original timings. The dropdown names 24 languages; Auto-detect is not limited to that list, since the detection happens inside the model. The Fast model cannot do any of this.
Which file do I hand to YouTube?
SRT. Pick it in Format, press Download, then upload the .srt next to the video in YouTube Studio. WebVTT is the one you want for a <track> element on your own site. The plain transcript carries no timings at all and is meant for pasting into a doc, a blog post or show notes.
There is a wrong word in one cue. Can I fix it here?
Not in the output box, which is read-only. Switching Format re-renders it from the timed segments, so an edit would be wiped the moment you flipped to WebVTT anyway. Copy the text out, or download the SRT and correct it in your editor. The timestamps make a bad line quick to find in the file.
Where did Thanks for watching come from, and why is it gone now?
That is Whisper hallucinating over silence, a habit it picked up from the YouTube audio it was trained on. Cues consisting of nothing but a subscribe or thanks-for-watching phrase are filtered out before the file is written, along with cues that are only punctuation and ones that are only a bracketed label like [MUSIC]. The match has to cover the whole cue, so a genuine thank-you inside a sentence survives.
Missing something in AI Video Subtitle Generator? Suggest a feature →