Generate subtitles for any video, right in your browser

Free · No upload · No sign-up · Any length

Drop a video here MP4 · MOV · WebM · MKV — or an audio file

Your video never leaves your device.

Already have a subtitle file?

No video loaded. Add the video file and the subtitles below will line up with it.

Ready to transcribe

Check the preview is the right clip, pick the spoken language, then generate. Recognition runs on this machine — nothing is uploaded.

Names and terms in this video (optional)

The model has never heard your colleagues’ names, your product names or your industry’s jargon, so it guesses at them. List them here, separated by commas, and it will get them right far more often. Nothing is sent anywhere — the list is handed to the model running on this machine.

The first run downloads the speech model once — the size is shown next to each option. After that it works offline.

Subtitles cps · len
00:00.0 / 00:00.0 Right-click for options · drag an edge to change timing · scroll to pan · ⌘/Ctrl + scroll to zoom
Timing

Use this when the whole subtitle track is early or late by the same amount — a positive number moves it later.

Find & replace
Burned-in look

Only affects Export Video. Subtitle files carry no styling — the player decides how they look.

More exports

Burns the subtitles into the picture and re-encodes the video. Slow, and viewers cannot turn them off — prefer the SRT wherever the platform accepts one.

No uploadThe video is read from your disk and never sent to a server.
No sign-upNo account, no email, no free-trial countdown.
Any lengthNo per-minute quota and no file size cap.
Works offlineAfter the model downloads once, the network is optional.

What you get

A speech model that does the boring part, and an editor built for the part it gets wrong.

Speech to subtitles

Whisper runs on your own machine through WebGPU, with a WebAssembly fallback. Three model sizes: a fast draft, a balanced default, and a larger one for difficult audio.

A waveform, not just a list

The timeline draws the audio. You can see where speech starts instead of scrubbing back and forth listening for it — which is the whole of subtitle timing.

Built for fixing things fast

Click a line to jump there. Enter splits at the playhead. Arrow keys walk the list, space plays, and everything is undoable fifty steps back.

Reading-speed warnings

Each line shows its characters per second. Anything too fast to actually read gets flagged, along with overlaps, empty lines and lines that are too wide.

Import what you already have

Open an SRT or VTT from anywhere — messy exports, missing sequence numbers, platform styling tags. It all loads, and comes back out clean.

Nothing to lose

Your work is saved locally as you go. Close the tab by accident and the page offers it back when you return.

Three steps

No tutorial, no account, no settings you have to understand first.

  1. 1

    Choose a video

    Drag it in or click. It stays on your machine — the page reads it the way a media player would.

  2. 2

    Generate subtitles

    Pick a language if you know it, or leave it on auto. Lines start appearing as the model works through the audio.

  3. 3

    Fix and export

    Play it back, correct the names and the timing, then download an SRT or VTT.

What people use it for

Every one of these is the same job underneath: get accurate text with accurate timings, without handing the video to anyone.

Compared with upload-based subtitle services

The differences all come from one decision: whether the video leaves your machine.

This toolTypical online service
Your videoStays on your deviceUploaded and stored for a while
AccountNoneEmail and password before you see anything
Length limitNoneA few minutes on the free tier
PriceFreePer minute, or a monthly plan
WatermarkNeverCommon on free tiers
Waveform timelineYesRare
Works offlineYes, after the first runNo
Speed on long filesDepends on your hardwareFast, once the upload finishes
Translation & dubbingNot offeredUsually the paid feature

What this does

Drop in a video and the speech in it becomes a subtitle track: text, split into lines, with a start and end time on each one. From there it is an editor — you play the video back, fix the words the model misheard, and drag the timing until each line appears when the person actually starts speaking. When it reads the way you want, you export an SRT or a VTT file and upload that alongside your video wherever it is going.

All of it happens inside this page. The video is opened from your disk the same way a media player opens it; the speech model runs on your own processor or graphics card; the subtitle file is written by your browser and saved to your downloads folder. No part of your video is sent anywhere, which is also why there is no length limit and no per-minute price — there is no server bill to pass on to you.

The model does the bulk, you do the last ten percent

Automatic speech recognition is good now, but it is not finished work. It will get ordinary sentences right and then spell a person's name three different ways, drop a question mark, or run two speakers together into one line. Planning for that is the difference between a subtitle tool you can use and one you fight: the goal is not a model that never makes mistakes, it is an editor where fixing thirty mistakes takes four minutes.

So the editing side is built for speed rather than for features. Click any line and the video jumps there. Press Enter in the middle of a line and it splits at the playhead. Arrow keys step through lines, space plays and pauses, and every change is undoable. A small number next to each line shows its reading speed in characters per second — when that number goes orange, the line is on screen too briefly for anyone to finish reading it, which is the single most common defect in machine-made subtitles.

Why there is a waveform

Most browser subtitle editors give you a list of lines and a video player, and nothing else. That is enough to fix a spelling mistake and hopeless for fixing timing, because timing is an audio problem: you need to know where the speech actually starts, and a list of text cannot tell you that. The usual workaround is to scrub back and forth listening for the first syllable, which takes about ten seconds per line and is why people give up on timing and ship subtitles that are half a second late all the way through.

The timeline underneath the video draws the audio itself. Silence is flat, speech is a block, and the gap between two sentences is visible as a gap. Subtitle blocks sit on top of the same time axis, so lining one up with the speech under it is a single drag. Hold ⌘ or Ctrl and scroll to zoom in until one second fills the screen when you need frame-level precision, or zoom out to see the shape of the whole conversation.

What runs on your machine, and what that costs you

The speech model is Whisper, running through WebGPU where your browser supports it and WebAssembly where it does not. The first time you generate subtitles, the model file downloads once and is then cached — after that the whole tool works with the network switched off. Three sizes are offered: a fast one for a quick draft or a long recording, a balanced one that is the default, and a larger one worth the extra wait when the audio is difficult, the accent is strong, or the vocabulary is technical.

The honest trade-off is speed. A service that uploads your file runs the same kind of model on a rack of datacentre GPUs and can be faster in wall-clock terms once your upload finishes. Here you are using your own hardware, so a laptop with WebGPU will transcribe several times faster than the same laptop falling back to WebAssembly, and an hour-long recording is a coffee break either way. What you get for the wait is that nothing left the room, there is no quota, and the tenth video costs exactly what the first one did.

Working from a subtitle file you already have

You do not have to start from a video. If you already have an SRT or VTT — exported from another tool, downloaded from a platform, or sent to you by someone else — open it directly and it loads into the same editor. Add the video afterwards and the two line up, which is the usual way to fix a subtitle track that drifts out of sync with its picture.

The parser is deliberately forgiving, because real subtitle files are messy: missing sequence numbers, Windows line endings, WebVTT cue settings, inline styling tags from a platform export, a missing newline at the end of the file. All of it is accepted and cleaned up on the way in. Export gives you back a well-formed file — SRT for the widest compatibility, VTT for the web, or plain text with the timings stripped out when what you actually wanted was a transcript.

Frequently asked questions

Is my video uploaded anywhere?

No. The video is read from your disk by the page itself, and the speech model runs on your own machine. The only thing that is ever downloaded is the model file, once. You can confirm it by opening your browser's network panel, or by disconnecting from the internet after the first run — everything still works.

Is there a length or file size limit?

No hard limit. The practical constraint is your own memory: the audio is reduced to 16 kHz mono, which works out to about 58 MB for a half-hour video and 115 MB for an hour. Very long recordings will warn you before they start. Recognition time scales with length, so a two-hour file is a long wait rather than a failure.

Which languages can it transcribe?

Whisper is multilingual and handles around a hundred languages, with quality varying a lot between them. Leaving the language on Auto detect works for clear audio; picking the language explicitly is noticeably more accurate when the recording is noisy or the speaker switches between languages.

Does it work on a phone?

Editing does; generating does not. Phone browsers cannot run the speech model — there is not enough memory and no WebGPU to speak of. On a phone you can open an existing SRT or VTT, edit the text and timings, and export. To generate subtitles from a video, use a desktop browser.

Can it burn the subtitles into the video?

Not yet. Right now it exports subtitle files, which is what YouTube, Vimeo, most players and most platforms want — they keep the text selectable and searchable and let viewers turn them off. Burning text permanently into the picture means re-encoding the whole video, which is a much heavier job; it is the next significant thing on the changelog.

Can it translate subtitles into another language?

No, and that is a deliberate line rather than a missing feature. Good translation means sending your text to a translation service, which would break the one promise this tool makes — that nothing leaves your device. If that changes it will be a clearly separate, clearly labelled option, never something that happens quietly in the background.

What happens if I close the tab by accident?

Your subtitles are saved to your browser's local storage as you work, so reopening the page offers to restore them. The video itself is not stored — it is far too large and it is already on your disk — so you pick the same file again and the restored subtitles line straight back up with it.

Which export format should I use?

SRT unless you have a reason not to: every platform and player accepts it. VTT is the web standard and what you want for an HTML5 video element or an HLS stream. Plain text is for when the subtitles were only ever a means to a transcript.

Ready when you are

Drop in a video. Nothing to install, nothing to sign up for, and nothing leaves your machine.

Back to the editor