Image

Add Subtitles to Video (Burn In)

Permanently burn .srt or .vtt subtitles onto a video as hardsubs that show in every player.

Loading interactive tool…

About this tool

Burn Subtitles into Video renders your .srt or .vtt subtitle file directly into the video pixels — they become permanent hardsubs that appear in every player, on every device, with no way to toggle them off. This is the right choice for social media uploads (Instagram, TikTok, LinkedIn) where most viewers watch with sound off and platforms strip soft subtitle tracks. The tool downloads a DM Sans TTF font on demand and uses FFmpeg's subtitles filter with a configurable force_style. Pick font size (14-48), outline thickness (0-6), text color and outline color. Everything runs in your browser via ffmpeg.wasm — your video and subtitle files never upload anywhere.

Why use it

  • 100% private — neither video nor subtitle file ever leaves your device

  • Hardsubs work in every player and on every social platform

  • Custom font size, outline, and colors for readability over any background

  • DM Sans font for a clean modern look matching the rest of the site

  • Visually transparent CRF 22 re-encode preserves video quality

  • Works offline after the first ffmpeg.wasm and font cache

How to use

  1. Drop your video (MP4, WebM, MOV) into the first upload area.
  2. Drop your .srt or .vtt subtitle file into the second upload area.
  3. Adjust font size, outline thickness, text color and outline color to taste.
  4. Click 'Burn Subtitles into Video' and wait — re-encoding takes a minute or two for typical clips.
  5. Preview the result inline to confirm subtitles render correctly.
  6. Click Download to save the hardsubbed MP4.

When it helps

  • Social media uploads where viewers watch muted (Instagram, TikTok, LinkedIn, X)
  • Distributing tutorials to platforms that strip soft subtitle tracks
  • Producing accessibility-compliant captions for non-toggle-able playback
  • Adding translated subtitles for international video distribution
  • Burning final captions onto deliverables for clients who need universal compatibility
  • Preparing kiosk / trade-show video that auto-plays without subtitle controls

Examples

Caption a TikTok clip

Input

30 MB 1080×1920 MP4 + 4 KB .srt, font size 32, outline 3

Expected result

~32 MB hardsubbed MP4 ready for TikTok / Reels

Burn translated subtitles

Input

200 MB tutorial MP4 + 12 KB .vtt, font size 22, outline 2

Expected result

~210 MB hardsubbed MP4 for international distribution

Accessibility deliverable

Input

100 MB MOV + 8 KB .srt, font size 26, outline 3, white-on-black

Expected result

~104 MB MP4 with permanent captions for any player

Tips

  • For social media (TikTok, Reels, Shorts), use font size 28-36 and outline 2-3 — viewers see the video small on phones.
  • White text with black outline is the most universally readable combination across light and dark backgrounds.
  • If your .srt has formatting tags (italics, bold), they render correctly in the burned output.
  • Verify your subtitle timecodes against the video before burning — fixing them after burn requires re-encoding from scratch.
  • For videos longer than 5 minutes, expect proportionally longer burn times since every frame is processed.
  • After the first run ffmpeg.wasm and the font are cached, so subsequent burns start instantly even offline.

Frequently Asked Questions

Does my video leave my device?
No. Both video and subtitle files stay on your device — burning runs 100% locally via ffmpeg.wasm with no upload to any server.
Why does it require Chrome / Edge?
ffmpeg.wasm needs SharedArrayBuffer for multi-threaded WebAssembly, which is gated by COOP/COEP cross-origin isolation. Chrome, Edge, Brave, and Arc all support this.
What's the file size limit?
No server limit. Browser memory caps practical input around 500 MB. Burning re-encodes the video stream so it uses more CPU than stream-copy operations.
What's the difference between burn (hardsubs) and embed (softsubs)?
Hardsubs are rendered into the pixels — permanent, work everywhere, can't be turned off. Softsubs are a separate selectable track inside the file — toggle-able but stripped by some platforms.
What subtitle formats are supported?
.srt (SubRip) and .vtt (WebVTT). Both are plain text formats with timecodes and dialogue.
Why is the burn step slower than other tools?
Burning requires decoding every frame, drawing the subtitle text, and re-encoding to H.264. Other tools (mute, trim, loop) can stream-copy without decoding pixels.
Will it reduce video quality?
Slightly — re-encoding at CRF 22 is visually transparent for most content but technically lossy. Audio is copied untouched.
Why does the first run take longer?
ffmpeg.wasm (~30 MB) plus the DM Sans font file (~235 KB) download on first use. After that the engine and font stay loaded for the rest of your session, so later burns start right away.

Explore the category

Glossary

Hardsubs
Subtitles burned into video pixels — permanent and visible in every player.
Softsubs
Subtitles stored as a separate text-based stream inside the container — toggle-able by the viewer.
subtitles filter
FFmpeg video filter that draws a SubRip / VTT / ASS subtitle file onto each frame.
force_style
Subtitles-filter parameter that overrides the file's default styling — font, size, colors, outline, alignment.
ffmpeg.wasm
WebAssembly port of FFmpeg that runs locally in your browser tab.
SharedArrayBuffer
JS memory primitive needed for multi-threaded WebAssembly; gated by COOP/COEP.
A LITTLE HELP. A LOT DONE.
Good tools.
Great flow.

Your shortcut to the everyday. Create, convert, calculate,
and get back to what you love.

✓ Free to use✓ No sign-up✓ 500+ possibilities