← Video Tools

Video to Subtitles with Editable Captions

How subtitles are generated from your video's speech

Generate SRT or VTT subtitle files from speech in a video. Choose the audio language or automatic detection, optionally select a translation language, and review the generated cues and timing before downloading. These are separate subtitle tracks rather than text burned into the picture. Use Auto Captions when the words should remain visible in the exported video itself.

Cost: Free within the available allowance. Usage limits apply; see the guide below.

How to generate subtitles from a video

  1. Upload one video

    Drop an MP4, M4V, MOV, MKV, WebM, AVI, MPEG or OGV file of up to 200 MB, or open Uploads to pick a video you already used in another tool. It needs an audio track with speech. For long recordings, trim to the part you need with Cut Video first.

  2. Choose model and language

    Whisper 1 · word timing is selected by default. Leave Video language on Auto-detect if one language is spoken throughout; set it for short clips or strong accents.

  3. Pick translation and file type

    Choose a target under Translate subtitles to if the subtitles should be in another language, then choose SRT + VTT, SRT or VTT under Subtitle files.

  4. Generate

    Click Generate Subtitles. The audio track is transcribed by the selected AI model, and the cue list appears below the preview when the job finishes.

  5. Review the cues

    The Generated Subtitles panel lists every cue with start, end and text. Click a cue's number to jump there, press Play and read along in the overlay to check the timing against the picture.

  6. Download or burn in

    Download SRT and Download VTT save your edited version as subtitles.srt and subtitles.vtt. Copy text copies the transcript without timestamps. Burn into video renders the cues into the picture as a new MP4 using the style and font size chosen under Burn-in style.

Settings explained

AI model
Whisper 1 · word timing (default) returns a timestamp for every word, so cue starts and ends follow the speech closely. Gemini 3.5 Flash Lite · cue timing and Gemini 3.6 Flash · cue timing return whole phrases with a start and end; when a phrase is split, the parts' times are estimated from the word count.
Video language
Auto-detect (default) or English, Spanish, French, German, Italian, Portuguese, Russian, Japanese, Chinese or Arabic. This tells the model what to expect; it never translates. For other spoken languages, keep Auto-detect.
Translate subtitles to
No translation (default) or one of 15 languages: the 10 above plus Hindi, Korean, Dutch, Polish and Turkish. Each cue's text is translated and keeps its timing; translated lines over 10 words or 84 characters are split, with the time divided by word count. If the target is the spoken language, nothing is translated. Translations often run longer, so check the chars/s values afterwards.
Subtitle files
SRT + VTT (default), SRT or VTT. Decides which files are saved to the shared file manager and which download buttons appear.
Burn-in style
Only used by Burn into video. Default is white text, Bold text is bold white, Large text is 10% larger and Yellow text is bold yellow.
Font size
Small, Default (default), Large or XL. The size is relative to the video resolution, not a fixed pixel value; see the pixel values below.

Checking and editing cues before export

A badge shows Timing QA passed, Timing valid with a warning count, or Timing needs attention, next to cue and overlap counts, the longest cue, the highest reading speed and the frame rate.

Start and End
Times are in seconds with three decimals, for example 12.500. Type a value and press Enter; Escape discards it. Times snap to video frames and stay within the video's length, so a 30 fps video moves in steps of about 0.033 seconds.
Subtitle text
Edit the words freely; Enter adds a second line. The duration and reading speed under the field turn into a warning above 25 chars/s; warnings don't block export.
Add cue and delete
Add cue inserts an empty cue of up to 2 seconds at the current preview position (set it with Play/Pause or a cue number). Give it text and make sure it doesn't overlap a neighbour. The bin icon removes a cue.
What blocks export
Downloads and Burn into video stay disabled while any cue overlaps the previous one, has no text, ends at or before its start or lasts longer than 7 seconds. The warning list names the problem.
Keeping your edits
Edits exist only in this browser tab; the SRT and VTT files in the shared file manager are the unedited original export. Download before you leave the page, switch videos, click Reset or generate again, because each of these replaces the list.

How the cues are built

First the video's first audio track is extracted and converted to mono 16 kHz FLAC with metadata stripped. Files without a real video stream (for example audio-only files) or without an audio track are rejected.

The speech is then grouped into cues of at most 10 words, 84 characters and 7 seconds. With Whisper 1, a new cue also starts after a pause longer than 0.65 seconds, and after a sentence ends once the cue holds at least 3 words. Where there is room before the next cue, a cue is extended to at least 0.7 seconds and to a reading speed of 25 characters per second or less.

Finally every start and end is snapped to a frame of your video (30 fps if the frame rate can't be read).

What Burn into video produces

Burning in draws your edited cues permanently into the picture in a sans-serif font with a thin outline on a black box at 65% opacity, bottom-centred with a margin of 8% of the frame height. Long cues wrap within the middle 84% of the width.

Sizes scale with the resolution. On a 1920x1080 or 1080x1920 video, Small, Default, Large and XL come out at about 34 px, 43 px, 54 px and 64 px; on 1280x720 at about 23 px, 29 px, 36 px and 43 px. The preview overlay shows the chosen style and size in proportion to your video.

The output is always an MP4 with H.264 video at CRF 20 and AAC audio at 192 kbps, whatever the input format. The first video stream and all audio tracks are kept; existing subtitle tracks are dropped. Because the whole picture is re-encoded at high quality, the file can be larger than your original.

Formats and limits

Input formats
MP4, M4V, MOV, MKV, WebM, AVI, MPEG/MPG, OGV with at least one audio track
Output formats
SRT and/or VTT (UTF-8); optional MP4 (H.264, AAC) with burned-in subtitles
Maximum file size
200 MB per video
Files per job
1 video
Processing
On our servers. Transcription jobs can run up to 60 minutes, burn-in jobs up to 15 minutes
External AI services
Whisper 1: the audio track goes to OpenAI's whisper-1 model via OpenRouter. Gemini models: the audio track goes to Google's Gemini API. Translation: cue text goes to Google's Gemini API
Watermark
None
Storage
Uploads and results are deleted automatically after 48 hours for guests and after 30 days for free accounts. Paid plans can keep files longer.

Frequently asked questions

Does this extract subtitles that are already in my video?

No. The tool transcribes the spoken audio. It doesn't read subtitle tracks stored inside an MKV or MP4, and it can't read text already burned into the picture. Burn into video also leaves existing subtitle tracks out of the new MP4.

Is my video sent to an AI service?

Only the audio. The first audio track goes as mono 16 kHz FLAC to the model you chose: OpenAI's Whisper via OpenRouter, or Google's Gemini API. With translation, the cue text also goes to Google's Gemini API. The picture is never sent, and the temporary audio file is deleted after the request.

Why did subtitle generation fail?

Common causes are a video without an audio track, an audio-only file, music or noise without intelligible speech, and a reached usage limit. A translation error saying not all lines came back is usually temporary; run the job again with the same settings. For a poor transcript, set Video language explicitly or switch the model.

SRT or VTT: which file should I use?

Choose the format your player, editor or upload form can import, and check the display there. WebVTT is used with the HTML <track> element. If your player can automatically load matching subtitle files, place the video and subtitles together with the same base name, for example holiday.mp4 and holiday.srt.

Should I burn subtitles in or keep a separate file?

Keep a separate file when viewers should be able to turn subtitles off or when you may fix typos later. Burn in when the player can't load subtitle files, such as clips that autoplay muted in a feed. For custom colours, position and words per line, use Auto Captions.