Captions for TikTok, Reels and Shorts
Most short-form video is watched with the sound off, so captions are not an accessibility extra — they are whether the video works at all. Generate, fix the brand names, export.
Read the guide →Free · No upload · No sign-up · Any length
Your video never leaves your device.
Already have a subtitle file?
Runs on this machine. Nothing is uploaded.
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 model downloads once, then works offline.
Subtitle generation needs a desktop browser — phones cannot run the speech model. You can still import, edit and export subtitle files here.
Use this when the whole subtitle track is early or late by the same amount — a positive number moves it later.
Only affects Export Video. Subtitle files carry no styling — the player decides how they look.
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.
Your video never leaves your device.
A speech model that does the boring part, and an editor built for the part it gets wrong.
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.
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.
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.
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.
Open an SRT or VTT from anywhere — messy exports, missing sequence numbers, platform styling tags. It all loads, and comes back out clean.
Your work is saved locally as you go. Close the tab by accident and the page offers it back when you return.
No tutorial, no account, no settings you have to understand first.
Drag it in or click. It stays on your machine — the page reads it the way a media player would.
Pick a language if you know it, or leave it on auto. Lines start appearing as the model works through the audio.
Play it back, correct the names and the timing, then download an SRT or VTT.
Every one of these is the same job underneath: get accurate text with accurate timings, without handing the video to anyone.
Most short-form video is watched with the sound off, so captions are not an accessibility extra — they are whether the video works at all. Generate, fix the brand names, export.
Read the guide →YouTube's own captions are unpunctuated and often wrong on names. Uploading your own SRT replaces them, and the text becomes something the search index can actually read.
Read the guide →A track that is consistently late needs one shift; a track that drifts needs the waveform. Both take a couple of minutes here.
Read the guide →Recordings that are sensitive by nature are exactly the ones you should not be uploading to a transcription service. Export plain text and skip the timings entirely.
Read the guide →The differences all come from one decision: whether the video leaves your machine.
| This tool | Typical online service | |
|---|---|---|
| Your video | Stays on your device | Uploaded and stored for a while |
| Account | None | Email and password before you see anything |
| Length limit | None | A few minutes on the free tier |
| Price | Free | Per minute, or a monthly plan |
| Watermark | Never | Common on free tiers |
| Waveform timeline | Yes | Rare |
| Works offline | Yes, after the first run | No |
| Speed on long files | Depends on your hardware | Fast, once the upload finishes |
| Translation & dubbing | Not offered | Usually the paid feature |
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Drop in a video. Nothing to install, nothing to sign up for, and nothing leaves your machine.