NoCloud Media

Video tool

Burn Subtitles Into Video

Drop a video and an SRT/VTT file. We render the captions directly onto every frame so they show up everywhere, even where soft subtitles get stripped.

1. Video file

2. Subtitle file

How it works

  1. 1

    Drop your video

    MP4, MOV, WebM, MKV, AVI, or M4V. The file stays on your device.

  2. 2

    Drop your subtitle file

    .srt, .vtt, .ass, or .ssa. Each line gets rendered at its own timestamp.

  3. 3

    Pick the look

    Subtitle size (Small / Medium / Large) and an optional resolution downscale. Burn-in always re-encodes, so a downscale is essentially free.

  4. 4

    Burn in your browser

    We use FFmpeg.wasm with libass to render every caption directly into the video frames. Output is MP4 (H.264 + AAC, faststart enabled).

  5. 5

    Download the subtitled video

    Captions are now part of the picture — they show up on every player, every platform, even where soft subtitles get stripped.

Why use Burn subtitles into video?

Private — your video and your subtitle file never leave your browser. Useful when the captions contain personal names, internal context, or pre-release content.

Universal playback — soft subtitles (.srt alongside the video) get stripped or ignored on Twitter, Instagram, TikTok, and many web players. Burned-in captions show up everywhere because they're part of the picture.

No watermarks, no upload size limit beyond your browser's memory, no sign-up.

Common use cases

  • Burn translated captions into a marketing clip before posting to Instagram or TikTok
  • Hard-code English subtitles into a foreign-language interview before sharing internally
  • Add accessibility captions to a tutorial video that'll auto-play muted on social
  • Embed song lyrics into a music video clip
  • Bake a transcript into a recorded talk so it can be re-shared without losing the captions
  • Add open captions to an accessibility-required deliverable for a client

About MP4 and MP4

There are two kinds of subtitles. **Soft subtitles** sit alongside the video as a separate text file (or stream) and the player composites them at playback time — flexible, but they get lost the moment the video crosses a player that doesn't read them. **Hard subtitles** (also called burned-in or open captions) are rendered directly into the picture during encoding, so they're indistinguishable from the rest of the video. NoCloud Media uses FFmpeg's libass renderer via the `subtitles=` filter, which supports SRT, WebVTT, ASS, and SSA. Output is always MP4 (H.264 + AAC) with `+faststart`. Resolution downscaling can happen in the same pass without extra cost since burn-in already re-encodes the picture.

Frequently asked questions

Are my files uploaded to a server?
No. NoCloud Media burns subtitles into your video entirely in your browser using WebAssembly. Both the video file and the subtitle file stay on your device.
Which subtitle formats do you accept?
SRT (the most common), WebVTT (.vtt), and the styled ASS / SSA formats. The SubRip (SRT) format is what most subtitle apps export by default.
Why don't soft subtitles work everywhere?
Many social platforms, browsers, and embedded players ignore the subtitle track in a video container, or strip it during transcoding. Burning the captions into the picture sidesteps that — the captions are part of the video itself, so they always show up.
Does burn-in lose video quality?
Slightly, because we re-encode the video at H.264 CRF 23 (the streaming-service default). For most viewers the loss is invisible. If you want maximum quality, drop the resolution to a lower target so the bitrate budget per pixel goes up.
Can I customize the font, color, or position?
We offer three size options (Small / Medium / Large). Color, font, and position default to libass's standard rendering (white text with a black outline, bottom-center). For finer styling, edit your subtitle file as ASS / SSA — those formats support per-line styling that libass will respect.
Will non-Latin scripts (CJK, Arabic, Cyrillic) render?
The default font included with our FFmpeg.wasm core covers Latin and most Western European characters. Non-Latin scripts may show as boxes if the embedded font doesn't have those glyphs. For now, stick to Latin-script captions; broader font support is a planned improvement.
What's the maximum file size?
Combined input (video + subtitle) is bounded by your browser's available memory. Most devices handle 500 MB videos smoothly; 2 GB is the hard ceiling.
Which browsers are supported?
Chrome, Edge, Firefox, and Safari 15+. We require WebAssembly and SharedArrayBuffer, both standard in modern browsers.

Related tools