Free tool · Subtitles · Runs in your browser

Add subtitles to a video

No uploadNo watermarkReviewed October 11, 2026

Short answer

Choose a video and add your SRT or VTT file, or let the tool write the subtitles from the speech, then download an MP4 with the subtitles burned into the picture.

Where the words come from

The video is re-encoded once (H.264 at quality 23, AAC sound), so expect a small loss and a new file size. The subtitle font is Inter, which covers Latin, Cyrillic, Greek and Vietnamese.

Key takeaways

  • Three ways to get the words: your SRT or VTT file, pasted text, or written from the speech by the Whisper model.
  • Three styles: Classic outline, big Social captions and a Boxed band; every size scales with the video.
  • Measured: drawing subtitles added 0.1 to 0.6 s to a 10 s re-encode; file sizes stayed within a few percent.
  • Read back from the finished files: 92.8% to 99.3% of characters correct.
  • Contrast: white text on its black outline is 21 to 1; on the Boxed band it is at least 10.4 to 1.
  • Private and free: no upload, no account, no watermark.

Measured: how long it takes and what it does to the file

It runs in your browser with no upload. On our test clips the text was drawn with 96.1% to 99.3% of characters correct, and drawing added about a second to the encode.

The tool has to re-encode the video to draw on it, so most of the time is the re-encode itself, not the text. On our 10 second clips, drawing subtitles added 0.1 to 0.6 seconds to a plain re-encode with the same settings, and the file stayed within a few percent of the same size. The video is encoded as H.264 at quality 23 with the veryfast preset, with AAC sound at 192 kb/s, an MP4 that plays everywhere.

10 second clips, single-thread WebAssembly ffmpeg on one server core, the same engine your browser downloads.
ClipStyleRe-encode without textWith subtitlesFile size
1920 × 1080 landscapeClassic34.4 s35.0 s2.53 MB (+0.4%)
1920 × 1080 landscapeSocial captions34.4 s34.6 s2.55 MB (+1.2%)
1920 × 1080 landscapeBoxed34.4 s34.5 s2.42 MB (-3.9%)
1080 × 1920 verticalClassic42.9 s43.3 s3.00 MB (+1.6%)
1080 × 1920 verticalSocial captions42.9 s43.3 s2.96 MB (+0.2%)
1080 × 1920 verticalBoxed42.9 s43.3 s2.89 MB (-2.0%)

At this speed a one minute 1080p video takes about 3.5 minutes on one server core; a laptop is usually faster, and it is the same work any editor does when it exports.

Measured: is the text drawn right?

We read every cue back out of the finished videos with Tesseract, the engine of our image to text tool. To keep the cartoon from being read as letters, only the pixels that are near white in the subtitled frame and different from the same frame without subtitles count as text. 99.3% of the characters came back correctly in the best case (Classic, 1080 × 1920 vertical) and 92.8% in the worst (Social captions, 1080 × 1920 vertical).

Every cue read back from the finished video. 100% means every character came back exactly.
ClipStyleCuesCharacters read correctly
1920 × 1080 landscapeClassic496.1%
1920 × 1080 landscapeSocial captions895.0%
1920 × 1080 landscapeBoxed497.4%
1080 × 1920 verticalClassic499.3%
1080 × 1920 verticalSocial captions892.8%
1080 × 1920 verticalBoxed499.3%

The misses were letters that crossed the white fur of the rabbit: white text over a white area looks the same as the background to this test, though on screen the black outline still separates it. That is exactly the case the Boxed style is for.

Contrast: can people read it on any background?

A subtitle has to read over a bright sky and a dark room alike. The Classic and Social styles draw a thick black outline around every letter, so the text is always next to black; the Boxed style puts a dark band behind the line. Here are the contrast ratios, computed with the WCAG formula; 4.5 to 1 is the WCAG minimum for normal text and 7 to 1 the enhanced level.

Text and what is right behind itContrast ratio
White text, black outline (Classic, Social)21.0 to 1
Yellow text, black outline16.1 to 1
White text on the band, over a white background (Boxed, worst case)10.4 to 1
Yellow text on the band, over a white background8.0 to 1

Burned-in or a separate subtitle file?

A subtitle file (SRT or VTT) stays separate: YouTube accepts it as captions, and viewers can switch it off or pick a language. Burned-in subtitles are part of the picture, so they show everywhere the video plays, in every app and player, and nobody can switch them off. Use a file for YouTube and accessibility; burn them in for clips you post to feeds or send in a chat.

Free tools:Make an SRT or VTT fileCaption file for Shorts

Where captions go on a vertical video

On TikTok, Reels and Shorts the bottom of the screen is covered by the post caption, the sound label and the buttons. The official safe-zone files say to keep the bottom 34.375% (TikTok), 35% (Instagram Reels), 35% (YouTube Shorts) free. So on a vertical video the Social style sits above the bottom 35%, with 11.1% free on each side, the TikTok side margin. In our test the vertical captions were read back at 92.8%.

Free tools:TikTok safe zoneInstagram Reels safe zoneYouTube Shorts safe zone

How it works and why it is private

The tool writes the cues as an ASS subtitle file whose canvas is the size of your video, so every size is in real pixels, then ffmpeg's ass filter draws them with libass while the video is re-encoded. The font is Inter (SIL Open Font License), served from this site, in Bold for subtitles and Black for social captions. Everything runs in your browser: the video is read in place on your device and the new MP4 is made there. When the words come from the speech, the same Whisper model as our transcription tool writes them first.

Subtitles on every Short, without the editing

This tool draws one set of subtitles onto one video. Koldflux does it as part of making content: it transcribes a recording, finds the strongest moments, and puts timed subtitles on every scene of each vertical Short, where you can fix a single word without touching the audio.

How the numbers were measured

Two 10 second clips of Big Buck Bunny (Blender Foundation, CC BY 3.0), a 1920 × 1080 landscape cut and a 1080 × 1920 vertical crop, with a LibriSpeech sentence as the soundtrack. Each was encoded once without text and once per style with this tool's own ASS writer and ffmpeg arguments, on the single-thread WebAssembly ffmpeg the page uses, run in Node.js on our server. Frames at the middle of every cue were read back with Tesseract after the background was removed as described above. The clips, scripts and results are kept with the page's evidence.

Questions people ask

How do I add subtitles to a video for free?

Choose the video, then add an SRT or VTT file, paste the text, or let the tool write it from the speech. Press "Burn the subtitles into the video" and download the MP4.

Can it make the subtitles for me?

Yes. Choose "Write them from the speech" and the Whisper model transcribes the video first, in your browser.

What is the difference between burned-in and soft subtitles?

Burned-in subtitles are part of the picture and always visible. Soft subtitles are a separate file that a player can turn on and off; YouTube accepts SRT and VTT for that.

Is my video uploaded?

No. The video is read and re-encoded in your browser; nothing leaves your device.

Is there a watermark?

No. The tool only draws your text.

Will the quality drop?

Drawing on a video needs one re-encode, here H.264 at quality 23, which is visually close to the original for most videos. The file size changed by a few percent in our tests.

Which video formats work?

Any video your browser can open and ffmpeg can read, such as MP4, MOV, WebM and MKV. The result is always an MP4.

Which languages does the font cover?

Inter covers Latin, Cyrillic, Greek and Vietnamese. Scripts such as Chinese, Japanese, Arabic or Hindi are not in the font and will not draw correctly.

How long does it take?

About 35 seconds for a 10 second 1080p clip on one server core in our test, almost all of it the re-encode. A longer video takes proportionally longer.

Related

Sources and how we checked

  1. FFmpeg Filters Documentation: ass and subtitles filters (read 2026-10-11)
  2. libass: portable subtitle renderer for the ASS/SSA format (read 2026-10-11)
  3. Inter typeface by Rasmus Andersson (SIL Open Font License 1.1) (read 2026-10-11)
  4. W3C WCAG 2.2: contrast ratio (read 2026-10-11)
  5. YouTube Help: Supported subtitle and closed caption files (read 2026-10-11)
  6. TikTok Auction In-Feed Ads: Safe zone files (TikTok Ads Help) (read 2026-10-03)
  7. Sales Video Ad Specs on Instagram Reels (Meta Ads Guide) (read 2026-10-03)
  8. About video ad specs: vertical Safe Zone overlay (Google Ads Help) (read 2026-10-03)
  9. Big Buck Bunny (Blender Foundation, CC BY 3.0) (read 2026-10-11)

Reviewed October 11, 2026. Times, sizes and the read-back of every cue were measured with the tool's own subtitle writer and ffmpeg arguments on the WebAssembly engine the page uses; the clips and scripts are in data/seo/hub/evidence/2026-10-11/burn.