Free tool · Captions · Runs in your browser

Add captions to a video

No uploadNo watermarkReviewed October 11, 2026

Short answer

Choose a video and the tool writes captions from the speech, or takes your SRT, and burns them in as big, bold lines. On a vertical video they sit above the bottom 35% of the frame, where TikTok, Reels and Shorts put their buttons.

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

  • Placed for vertical feeds: above the bottom 35%, the largest bottom safe zone in the TikTok, Reels and Shorts files (34.375%, 35%, 35%).
  • Short lines of up to 32 characters when the words come from the speech, so each caption reads at a glance.
  • Inter Black at 7.5% of the video's shorter side, with a thick outline: 21 to 1 contrast on any background.
  • Measured: 92.8% of characters read back correctly on a vertical clip; drawing added about 0.3 s to a 10 s encode.
  • White or yellow text, top, middle or above the buttons.
  • Free, no upload, no watermark.

Where captions go on a vertical video

In our test the vertical captions came back 92.8% correct.

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

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.

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

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.

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

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 captions to a Reel, TikTok or Short?

Choose the vertical video, keep "Write them from the speech" and the Social style, and download the MP4. The captions sit above the area the apps cover.

Where should captions go on a vertical video?

Above the bottom 35% of the frame. The official safe-zone files of TikTok, Instagram Reels and YouTube Shorts keep the bottom 34.375%, 35%, 35% free.

Can I use my own captions file?

Yes, choose "Use my SRT or VTT file" or paste the text.

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. TikTok Auction In-Feed Ads: Safe zone files (TikTok Ads Help) (read 2026-10-03)
  2. Sales Video Ad Specs on Instagram Reels (Meta Ads Guide) (read 2026-10-03)
  3. About video ad specs: vertical Safe Zone overlay (Google Ads Help) (read 2026-10-03)
  4. FFmpeg Filters Documentation: ass and subtitles filters (read 2026-10-11)
  5. libass: portable subtitle renderer for the ASS/SSA format (read 2026-10-11)
  6. Inter typeface by Rasmus Andersson (SIL Open Font License 1.1) (read 2026-10-11)
  7. W3C WCAG 2.2: contrast ratio (read 2026-10-11)
  8. 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.