Add Subtitles to Video (SRT Burn-in)
Burn an SRT or VTT file permanently into the picture with full control over font, size, colour, outline and position. Captions are drawn by your own browser, so Chinese, Japanese, Thai, Arabic and emoji all render correctly.
Drag & drop an MP4, MOV or WEBM here, or
Drag & drop an .srt or .vtt file here, or
Press play — the captions below are drawn by your browser at the same settings FFmpeg will use.
Your ad blocker is preventing us from showing ads
MiniWebtool is free because of ads. If this tool helped you, please support us by upgrading for ad-free browsing and more daily uses, or allowlist MiniWebtool.com and reload.
- Allow ads for MiniWebtool.com, then reload
- Or upgrade for ad-free browsing and higher daily limits
About Add Subtitles to Video (SRT Burn-in)
Our Free Online Add Subtitles to Video (SRT Burn-in) tool takes a video and an SRT or VTT subtitle file and permanently paints the captions into the picture, with full control over the font, size, colour, outline, background box and position. Everything runs inside your browser with FFmpeg.wasm, so your footage is never uploaded.
How the Burn-in Works
Most browser subtitle burners hand the SRT file straight to the encoder and hope it owns a font that covers your language. This one does the opposite: every caption is drawn on a transparent canvas by your own browser, exactly as you see it in the preview, and only then handed to FFmpeg to be composited onto the frames it covers. That is why the preview is truthful and why Chinese, Thai, Arabic and emoji come out right.
Features:
- Client-Side Processing: The video and the subtitle file never leave your device. FFmpeg.wasm does the compositing in the browser tab.
- True WYSIWYG Preview: The caption you see over the playing video is drawn by the same code that produces the burned frames, so the preview is not an approximation.
- Any Language, Any Script: Captions are rendered with your browser's text engine, so Chinese, Japanese, Korean, Thai, Arabic, Hebrew, Cyrillic and emoji all work.
- Full Style Control: Font family, size as a percentage of frame height, bold, italic, capitals, text colour, outline colour and thickness, drop shadow, line spacing and maximum line width.
- Background Box: None, a per-line rounded box, or a full-width band — the three looks that cover almost every social and broadcast style.
- Nine Positions: Top, middle or bottom combined with left, centre or right, plus an adjustable safe margin. Per-cue
{\an8}overrides in the file are honoured. - Five Presets: YouTube Classic, TikTok Bold, Netflix Clean, Karaoke Pop and Minimal, as one-click starting points.
- Timing Shift: Move every caption earlier or later in tenths of a second when the subtitle file is out of sync with the audio.
- Editable Cue List: Click a timecode to jump the video there, and fix a typo in place before burning.
- Test-Burn in 10 Seconds: Encode a short sample around the first caption to check the style, instead of waiting for the whole clip.
- Broken File Repair: Zero-length cues, overlapping cues, cues past the end of the video and blank cues are corrected automatically and reported.
- Encoding Rescue: A subtitle file saved as Windows-1252 instead of UTF-8 is detected and re-decoded, so accented text stops arriving as mojibake.
- Output Control: Keep the original frame size or downscale to 1080p, 720p or 480p, at three quality levels.
Who Will Benefit?
- Social media creators: Feeds autoplay muted, and burned-in captions are the only ones that show. Reels, Shorts and TikTok all strip a sidecar SRT.
- Course and tutorial makers: Ship one file that carries its own captions to any LMS, with no separate track to lose.
- Translators and subtitlers: Deliver a hard-subbed preview to a client who has no subtitle-capable player.
- Accessibility teams: Guarantee that captions are present no matter where the file is replayed.
- Anyone with a language a wasm encoder cannot render: If other browser tools show your subtitles as empty boxes, this one draws them with your own system fonts.
How to Use:
- Wait for the engine: A progress bar shows the video engine (FFmpeg) loading.
- Load the video: Drag an MP4, MOV or WEBM onto the first drop area, or click "Select Video".
- Load the subtitles: Drop an SRT or VTT file onto the second area, click "Select Subtitle File", or paste the text and click "Use Pasted Text". "Load Sample" fills in an example.
- Style the captions: Pick a preset, then adjust font, size, colour, outline, box and position. Play the video and watch the live preview.
- Fix the timing: If the captions run early or late, change "Shift all timings" until they match the speech.
- Test-burn 10 seconds: Click "Test-burn 10s" to check the style on a short sample first.
- Burn: Click "Burn Subtitles Into Video" and watch the progress bar.
- Download: Preview the result and click "Download Subtitled MP4".
Note: Compositing happens on your own CPU, so a long or high-resolution clip takes time and memory. If a large file struggles, downscale the output to 720p, or cut the clip first with the Video Splitter.
Quick Answer
To burn subtitles into a video, load the video and the .srt file above, choose a caption style in the live preview, click Burn Subtitles Into Video and download the MP4. The captions become part of the picture, so they display on every player and survive re-uploading to any social platform. Everything runs in your browser with FFmpeg.wasm: no upload, no watermark, no account.
Burned-in vs Soft Subtitles
| Burned-in (hard subs) | Separate SRT (soft subs) | |
|---|---|---|
| Survives upload to social | Yes, always | Usually discarded |
| Shows on muted autoplay | Yes | Only if the player enables it |
| Look is guaranteed | Yes, pixel for pixel | No, the player restyles it |
| Viewer can switch it off | No | Yes |
| Searchable text for SEO | No | Yes |
| Needs re-encoding | Yes, once | No |
A common professional workflow is to do both: keep the SRT for platforms that index it, and post a burned-in copy wherever a sidecar file would be thrown away.
Caption Style Presets Explained
| Preset | Look | Best for |
|---|---|---|
| YouTube Classic | White text on a semi-transparent black band, bottom centre | Long-form landscape video, maximum legibility |
| TikTok Bold | Large heavy capitals with a thick outline, no box, raised above the bottom | Vertical clips where interface buttons cover the lower edge |
| Netflix Clean | Medium white text, thin outline, soft shadow, no box | Film and drama, where a box would be intrusive |
| Karaoke Pop | Yellow text with a strong dark outline, centred in the frame | Music, lyrics and anime-style fansubs |
| Minimal | Small text, per-line rounded boxes, bottom left | Screen recordings and documentation where the centre must stay clear |
Common Use Cases
Captioning a Reel, Short or TikTok
Vertical platforms discard a sidecar SRT on upload and autoplay muted. Burning the captions in is the only way to guarantee they appear. Use the TikTok Bold preset and raise the margin so the caption clears the interface buttons along the bottom edge.
Publishing a translated version of a course lesson
One video plus one translated SRT gives you a self-contained lesson file for every language, with no player configuration and no track to lose during transfer.
Sending a hard-subbed review copy to a client
Clients rarely have a player set up for external subtitle files. A burned-in copy plays correctly in a browser, a phone gallery and a slide deck.
Rescuing an out-of-sync subtitle file
Subtitle files downloaded for one release often sit a second or two out against another cut. Shift all timings by the offset, confirm it against the speech in the preview, then burn.
Burning captions in a language other encoders cannot draw
WebAssembly encoders ship without CJK, Thai or Arabic fonts, so the text is dropped or replaced by empty boxes. Rendering the caption in the browser first removes that limitation entirely.
Making a silent explainer for a website hero
Hero videos autoplay muted with no controls. Burned-in captions carry the message without any sound at all.
Tips for Readable Burned-in Subtitles
- Size with the frame, not in points. Caption height here is a percentage of frame height, so the same setting stays readable whether you export 480p or 1080p. Around 5% of frame height is the broadcast norm.
- Always use an outline or a box. Plain white text disappears the moment the shot cuts to a bright sky or a white wall.
- Keep to two lines. Reduce the maximum line width rather than letting a caption wrap to three or four lines.
- Respect the safe area. Leave at least 5% margin; vertical platforms need considerably more, because buttons and captions from the app itself sit over the lower edge.
- Test-burn first. A ten-second sample costs seconds; re-encoding a ten-minute clip twice costs a coffee break.
Frequently Asked Questions
How do I permanently burn an SRT file into a video?
Load the video and the SRT file here, style the captions in the live preview and click Burn Subtitles Into Video. Each caption is drawn as a transparent image and composited onto every frame it covers, then the clip is re-encoded to H.264 MP4. The text becomes part of the picture, so it plays everywhere and cannot be switched off.
What is the difference between burned-in subtitles and a separate SRT file?
A separate SRT is a text file the player draws on top of the video; the viewer can turn it off, restyle it, or lose it entirely when the file is re-uploaded. Burned-in subtitles are painted into the pixels, so they survive any upload, always look exactly as you designed them and show on players with no subtitle support, such as most social feeds with autoplay.
Does this tool support Chinese, Japanese, Arabic and emoji subtitles?
Yes. Captions are drawn by your browser's own text engine rather than by a font bundled with the encoder, so any script your device can display can be burned in, including Chinese, Japanese, Korean, Thai, Arabic, Hebrew, Cyrillic, Greek and emoji. Right-to-left text is laid out in the correct direction automatically.
Is my video uploaded to a server?
No. FFmpeg compiled to WebAssembly runs inside the browser tab. The video and the subtitle file are read from your device, composited on your own CPU and written straight back to a local download. Nothing is transmitted and nothing is stored.
My subtitles appear too early or too late. Can I fix that?
Use the Shift all timings control. A positive value pushes every caption later, a negative value pulls them earlier, in steps of a tenth of a second. Play the video while adjusting and the preview follows immediately, so you can match the speech before burning anything.
Why does my SRT file show strange characters?
The file was saved in a legacy single-byte encoding such as Windows-1252 or Latin-1 rather than UTF-8, which is what most accented European subtitles downloaded from subtitle sites still use. This tool decodes the file as UTF-8 first and, if that produces replacement characters, silently re-decodes it as Windows-1252 and tells you it did.
What subtitle formats can I load?
SubRip (.srt) and WebVTT (.vtt), in either comma or full-stop millisecond notation, with or without cue numbers. Basic inline markup is honoured: <i> and <b> set italic and bold for that caption, and an ASS-style {\an1} to {\an9} override moves it to the corresponding corner. Anything else is stripped so no stray markup ends up on screen.
How long does burning subtitles take?
Roughly one to three times the length of the clip on a modern laptop at 720p, and longer at 1080p or on a phone, because a WebAssembly encoder runs on a single thread. Downscaling the output is the fastest way to cut the wait, and the ten-second test burn lets you check the style without paying the full cost.
Does burning subtitles reduce the video quality?
The clip is re-encoded once, so there is a small generation loss, controlled by the quality setting. High re-encodes close to the original; Smaller file trades visible detail for size. The captions themselves are always sharp because they are drawn at the output resolution, not scaled up from the preview.
Why did my video fail with a decoder error?
The in-browser encoder has no AV1 decoder, so an AV1 file — common in recent WEBM downloads and some screen recorders — cannot be read even though your browser plays it. Convert it to H.264 MP4 first with the WebM to MP4 Converter, then burn the subtitles.
Related Tools
- Video Splitter — Cut a long recording down before burning captions into it.
- Add Watermark to Video — Composite a logo instead of text onto the picture.
- Video Compressor — Shrink the subtitled file for upload.
- Convert Video for Twitter (X) — Reframe and re-encode the finished clip for a timeline.
- WebM to MP4 Converter — Convert an AV1 or VP9 source the burner cannot decode.
- Video Cropper — Crop to vertical before positioning the captions.
Reference this content, page, or tool as:
"Add Subtitles to Video (SRT Burn-in)" at https://MiniWebtool.com/add-subtitles-to-video-srt-burn-in/ from MiniWebtool, https://MiniWebtool.com/
by miniwebtool team. Updated: October 3, 2026
Video Tools:
- Add or Replace Audio in Video
- Add Subtitles to Video (SRT Burn-in) New
- Add Watermark to Video
- Adjust Video Speed
- Convert Video for Twitter (X) New
- Flip Video Popular
- FPS Converter Popular
- GIF to MP4 Converter
- Loop Video
- Merge Videos Popular
- MP4 to GIF Converter
- Random Video Thumbnail Generator
- Remove Audio from Video
- Reverse Video
- Rotate Video
- Video Bitrate Calculator New
- Video Compressor Popular
- Video Cropper Popular
- Video Splitter Popular
- Video to Image Extractor Popular