Turn a video into a subtitle file you can load in a player or hand to an editor. Speech recognition runs on your own device, and you can also time a script you wrote yourself without downloading anything.
How to generate a subtitle file
- Click Load caption model once. It fetches about 40 MB and your browser keeps it, so later visits start instantly.
- Choose an MP4, M4V, WEBM, MOV, MP3, WAV, M4A or OGG file up to about 15 minutes.
- Pick the spoken language, or leave it on auto-detect.
- Click Generate captions. Cues appear in the table as each 30-second window finishes.
- Correct any wording in the cue table, then click Download .srt or Download .vtt.
No file, no model, or an unsupported container? Paste your script into the second panel and the cue timer spaces it across the media length instead.
Subtitle Generator - Make SRT and VTT On Your Device
This subtitle generator listens to a video you choose and writes a timed caption file - an .srt or .vtt you can load into a player, upload beside a video, or open in an editor. The speech model runs inside your browser, so the video itself never travels anywhere. There is no watermark, no account, and no length-limited trial.
What you get, and what shape it is in
The output is a cue list, not a wall of text. Each cue carries a start time, an end time and one line of caption text, numbered in order:
1 00:00:00,000 --> 00:00:02,400 Welcome back to the workshop. 2 00:00:02,400 --> 00:00:05,800 Today we are wiring the motor controller.
That is the SRT form, with a comma before the milliseconds. The VTT download holds the same cues with a WEBVTT header and a dot instead of the comma, which is the format browsers expect from a <track> tag. Both files come from the same cue table, so a wording fix you make before exporting lands in whichever one you download.
Two ways to build the cues
The speech path recognises audio with Whisper, a compact model that arrives as a single 40 MB download the first time you ask for it. Your browser keeps it afterwards, so the second video you caption starts working immediately. Long media is walked in 30-second windows and the status line names the window it is on, which is why the progress bar moves instead of sitting still on a ten-minute file.
The second path expects nothing at all. If you already wrote the script, or the model cannot read your container, paste the lines into the script box and each line becomes a cue spread across the length of the file you picked. With no file loaded the cues fall back to a reading pace of about 160 words a minute. Longer lines get proportionally more time on screen, and no cue is shorter than 1.2 seconds.
Where the timing comes from
Cue boundaries are read out of the model's own segment timings rather than divided up evenly, so a pause in the speech becomes a gap between cues. When the model returns a segment without a closing time the tool falls back to the window edge and says so in the status line, so you know which cues to check. Because the 30-second windows overlap slightly to avoid cutting a word in half, a word can occasionally repeat where two windows meet. Both cases are quick to fix in the cue table before you export.
How it compares to the usual options
| Route | Video leaves your machine | Cost | Watermark |
|---|---|---|---|
| This page | No | Free, one 40 MB model download | None |
| Typical free web captioner | Yes, full upload | Free tier with minute caps | Often on the export |
| Desktop editor | No | Paid licence | None |
The trade is honest: a 40 MB model on your own hardware is not as sharp as a large hosted one. Expect to correct proper nouns, technical jargon and some punctuation. For a talking-head video in clear audio it gets most lines right on the first pass, and correcting five cues in the table is still faster than typing forty.
Related tools on this site
If you want the words rather than a timed file, the speech to text page dictates from a microphone and transcribes an audio file into plain prose. Reach for that one when you need a transcript to read; reach for this one when you need cues a player can display. To cut the video down before captioning it, the video trimmer and strip audio from video tools run in the browser too.
Frequently Asked Questions
Is my video uploaded anywhere?
No. The audio track is pulled out of your file and recognised inside the browser tab, and there is no server behind this page to receive it. The only thing fetched from the network is the caption model itself, which is a one-time download and carries none of your data.
Does this burn the subtitles onto the video?
No. It produces a separate .srt or .vtt file that sits alongside your video. Most players load a subtitle file automatically when it has the same name as the video in the same folder, and video platforms accept the file as a caption upload. Burning captions into the picture is an encoding job this page does not do.
Should I download the SRT or the VTT?
Pick SRT for desktop players, editing software and most upload forms - it is the most widely accepted of the two. Pick VTT when you are putting the video on a web page yourself, because that is the format an HTML video track element expects. The cues are identical in both; only the timestamp punctuation and the file header differ.
Which file types can I use?
MP4, M4V, WEBM and MOV for video, plus MP3, WAV, M4A and OGG for plain audio. The tool reads the audio track with the browser's own decoder, so the exact list follows what your browser supports. MKV usually does not work and returns a message naming the formats that do, rather than failing silently.
How long a video can I caption?
About 15 minutes per file. The limit keeps the tab responsive, since the recognition runs on your own processor or graphics card rather than on a server. For something longer, split it first and caption each part, or paste your own script into the timing panel which has no length limit.
Why did the same word appear twice in a row?
Long audio is processed in 30-second windows that overlap by two seconds, so no word gets sliced in half at a boundary. The cost of that overlap is that a word sitting exactly on a seam can be recognised twice. It shows up as a small repeat between two neighbouring cues and takes a second to delete in the cue table before you export.
How accurate is it?
Good enough that correcting is faster than typing, and not good enough to publish unread. It uses a compact 40 MB model, so clear speech in a quiet recording comes through well while proper nouns, product names and technical terms often need a fix. Punctuation is approximate. Read the cue table once before you export.
Can it translate the captions into another language?
No. It transcribes speech in the language that was spoken, and you can tell it which language that is to improve the result. It does not turn English speech into Spanish captions. Translating an exported file is a separate step in another tool.
Do I have to download the model every time?
No. Your browser stores it after the first run, so later visits skip straight to choosing a file. The speech to text page uses the same model, so if you have already used that one the download may be finished before you ask for it. Clearing site data removes the cached copy and the next run fetches it again.
What if I already wrote the captions myself?
Use the script panel underneath the speech panel. Put one caption per line and the timer spaces them across the length of the video you picked, or at a normal reading pace when no file is loaded. That path needs no model and no download at all, which also makes it the fallback when a container will not decode.