Add Subtitles to Video (Burn-In)
Add subtitles to a video permanently. Load an SRT or VTT, or let Whisper write one from the speech, then style the captions on a live preview and export an MP4 with the words on every frame.
The clip
The caption on the frame is the one that will be burned in. The burn cannot be undone.
Drop a video
MP4, WebM or MOV · it stays on this device · it plays here with the captions drawn over it
Captions
Bring in captions
A subtitle file or a paste. Writing them from the video's own speech needs the clip first.
Timing
Every cue moves together, and the frame above redraws as it does.
Captions
Captions in the picture
Burning them in
- Drop the clip on the page, then bring the captions in with Open .srt or .vtt, or drop the subtitle file onto the playing clip. Pasting SRT or VTT text into the box and pressing Load pasted captions works the same way.
- With no subtitle file to hand, press Write subtitles from the speech. The model downloads once on that first run, then the cues stream into the box and onto the preview as each stretch of audio is read.
- Play or scrub the clip and watch the captions land. If they are early or late, pause on a line and press Match this cue to the picture, type a number into Shift all cues, or stretch the track by two marks or by framerates when the drift grows over time.
- Set the style: Size, Text colour, Edge as Outline, Box, Shadow or None, Edge colour, and Position at top or bottom. Everything redraws while you drag.
- Press Burn and leave the tab open. The bar follows the clip's own timestamps, so 40% really is 40% of the way through the footage.
- The captioned result plays on the same stage behind The clip | Captioned; Download saves it, named after your original with -captioned.mp4 on the end.
About this tool
Add subtitles to a video and you have two routes: ship a .srt next to it and hope the player picks the file up, or draw the words into the picture. Instagram, TikTok, a WhatsApp forward, a phone's camera roll, a TV over Chromecast. None of those reliably reads a sidecar file. Burning in settles it by re-encoding the video with the caption text painted onto each frame, which makes the captions as permanent as the picture and impossible to switch off.
You do not have to arrive with a subtitle file. Whisper can write one from the video's own speech, on your machine, and it lands straight in the caption box where you can fix a name or a bit of jargon before anything is drawn. The speech model comes down from Hugging Face the first time you use it and is kept after that; the video itself never leaves the page. Picking Translate to English instead of Transcribe subtitles a clip in another language without a second pass.
The preview is what makes the styling workable. Your clip plays in the page with a canvas over the top, drawing the captions with the exact layout the encoder will use, so what you nudge is what you get. Caption size is a percentage of the video's height rather than a fixed pixel value, and the default of 5.5 puts the text at 59 pixels on 1080p footage, scaling down correctly on a 720p clip. Long lines wrap by themselves at about 90% of the frame width. Colour, an outline, a solid box or a soft shadow, top or bottom: all of it redraws live.
A vertical clip at the defaults
Take a 1080 by 1920 cut with a 22-cue .srt and change nothing. Size 5.5 works out as 5.5% of 1920, so the text is drawn at 106 pixels, white, with a black outline around 13 pixels thick, sitting 115 pixels up from the bottom edge.
That size also decides the wrapping. At 106-pixel text across a 1080-pixel frame a line breaks after 18 characters, which is why a wordy cue turns into three stacked lines. Drag Size down to 4 and the same cue fits in two. It is the one control worth touching before you encode.
Good to know
- Every frame is decoded, drawn on and encoded again, so budget roughly the length of the clip and rather more for 4K. The audio is re-encoded as well, at a middling AAC bitrate rather than copied byte for byte, which makes the output a sharing file rather than an archival master. A clip that arrived with no audio track comes out silent.
- Styling and positioning inside the subtitle file are dropped, and the whole video gets one consistent look instead. Italic markup, per-cue colours and VTT cue settings all go; when the file used any, a note above the captions says they were removed.
- Writing subtitles from the speech reads the whole soundtrack at about a quarter of real time on a laptop and slower on a phone, so a feature-length file is not a sensible input. Past half an hour the tool says so before you start. Whisper also guesses at names, acronyms and heavy accents, which is exactly why the result lands in an editable box rather than going straight to the encoder.
Frequently asked questions
Why can't I just attach the .srt file?
On VLC or a desktop player you can, and it works well. It falls apart the moment the video travels somewhere that ignores sidecar files: an Instagram or TikTok upload, an AirDrop to a phone, a WhatsApp send, most televisions. Burning in is how captions survive that trip.
Which subtitle formats does it read?
SubRip (.srt) and WebVTT (.vtt), either from a file or pasted straight into the box. WEBVTT headers and NOTE, STYLE and REGION blocks are skipped. Blocks whose timestamps cannot be read are counted and reported to you, which is usually the tell that the file is really an .ass or .sub.
Can I turn the captions off later?
Not once it is exported. The words are pixels in the picture from that point on. Keep your original video and the subtitle file if a clean version or a second language might come up.
How long does the encode take?
Plan on roughly the running time of the clip on a recent laptop, since each frame goes through decode, draw and encode. A 4K source takes noticeably longer than 1080p of the same duration. Cancel is available throughout if you change your mind.
Can it write the subtitles for me?
Yes. Press Write subtitles from the speech and Whisper transcribes the video's own audio on your device, then the cues are cut to the usual two lines of about 42 characters and dropped into the caption box. The model is fetched from Hugging Face on the first run and cached afterwards. Read the cues before you burn them in: names and technical words are where it slips.
Does the sound survive?
The audio is decoded and written back into the MP4 alongside the new picture, re-encoded at a middling bitrate rather than copied across untouched. Speech and music hold up perfectly well at that setting. Anything that started without an audio track stays silent.
Missing something in Add Subtitles to Video (Burn-In)? Suggest a feature →
Tell someone who needs this.