Burning captions is a one-way decision
There are two ways a video can carry subtitles. A soft track sits beside the picture as its own stream, and a player draws it on demand: you can switch it off, restyle it, or swap languages. A burned-in caption is part of the picture, painted into every frame during encoding, exactly like a broadcast chyron.
Burning wins on survival and loses on flexibility, and there is no middle ground. Once a caption is in the pixels, it is in every copy anyone ever makes of that file, on every player, in feeds that autoplay muted, and in re-shares that would have stripped a separate track. It also cannot be turned off by a viewer who does not want it, cannot be corrected without going back to the source video, and will be baked at whatever size and position you chose today.
That is the trade this page makes for you. It is the right trade for a clip going into a social feed or to a client who should not have to find a settings menu, and the wrong one for a film you might subtitle in a second language later. Keep the source video and the subtitle file, always: they are what you would need to redo the burn differently.
Two style values reach the renderer, and no more
The captions are drawn by the subtitle renderer built into FFmpeg, and this page forces exactly two style values into it: the font size you set, and an alignment code derived from Subtitle position (a bottom-centre code for Bottom, a top-centre code for Top). Everything else is whatever the renderer’s own defaults are.
That means no font picker, no colour picker, no outline or shadow control, no per-line styling and no karaoke or animation effects. If your .srt contains inline styling tags, do not count on them being honoured. It is a deliberate limit rather than a missing feature list: two controls that reliably do what they say beats a dozen that half work through a filter graph.
Position is more useful than it looks. Bottom is the default because that is where viewers look for captions, but if your footage already has a lower third, a logo bug or a platform’s own UI overlay eating the bottom of the frame, moving the text to the top is the difference between readable and buried.
Feeding the page a video and its subtitle file
- Drop the video and the subtitle file onto the box above together, or use Choose files and add them one after the other. MP4, MOV, M4V and WEBM are accepted on the video side,
.srtand.vtton the subtitle side, and the two are told apart by extension so order does not matter. - Choose Subtitle position, Bottom or Top.
- Set Font size, anywhere from 12 to 48.
- Press Add Subtitles to Video and keep the tab open. Every frame is being redrawn and re-encoded, so this is not instant and it scales with the length of your clip.
- Download the result, which arrives as an MP4 with
-subtitledadded to the video’s own name.
When the burn finishes but the result is wrong
Three failures account for most of them, and none produces an error message, because from the encoder’s point of view nothing went wrong.
Captions that never appear usually mean the timestamps do not overlap the clip. Captions that appear but are unreadable are almost always a size problem rather than a rendering one, and one short test clip settles it faster than guessing. Garbled accented characters come from a subtitle file that was not saved as UTF-8, which is decoded before FFmpeg sees it and cannot be recovered afterwards.
The one thing you cannot fix after the fact is timing drift. If the captions run steadily ahead of or behind the speech, fix the subtitle file first with Shift Subtitle Timing, which moves every timestamp earlier or later and can also stretch them to correct a framerate mismatch, then burn the corrected file. Re-burning a video whose captions are already baked in is not a repair.
Getting the subtitle file itself in shape first
If the captions you want are already inside an MKV or MP4 as a soft track, you do not need to retype them: Extract Subtitles from Video lists the embedded tracks and saves the ones you pick as SRT or VTT, which is exactly what this page then takes. If you are starting from nothing, the subtitle editor lets you write cues against real playback and export them. And if a tool downstream of you insists on one format when you have the other, Convert SRT to VTT moves a file between the two, although you will not need it just for this page, which accepts both.
The whole burn runs through a WebAssembly build of FFmpeg inside your own browser tab, so an unreleased edit or a client’s footage is never uploaded to be processed. That also means the encode uses your device’s own hardware, which is why a long recording takes real time rather than finishing the moment you click.