How to add subtitles to an MP4 video
On this page
To add subtitles to an MP4, you need a subtitle file (usually .srt) and a tool to combine them. Burn them in (always visible) with HandBrake's "Burn In" option or FFmpeg's subtitles filter, or add a soft track that viewers can switch on and off with FFmpeg. If you don't have an SRT yet, generate one from the audio first.
Step 1: get a subtitle file
If you don't have an .srt file, make one:
- YouTube Studio: upload the video (it can stay private), let YouTube auto-caption it, fix the text under Subtitles, then download the .srt.
- An editor like CapCut: generate auto captions, then export captions as SRT where available.
- Type it yourself in any text editor. An SRT is plain text: a number, a time range, and the line.
1
00:00:01,000 --> 00:00:03,500
The biggest mistake is never starting.
Step 2a: burn subtitles in with HandBrake
Burned-in subtitles are part of the picture, so they show everywhere, including social media.
- Open the MP4 in HandBrake.
- Go to the Subtitles tab and choose Import Subtitle (or Import SRT), then pick your file.
- Tick Burn In for that track.
- Pick a preset, choose where to save, and click Start Encode.
HandBrake re-encodes the video, so it takes a while on long files.
Step 2b: burn subtitles in with FFmpeg
bash
ffmpeg -i input.mp4 -vf subtitles=subs.srt -c:a copy output.mp4
To style them (font size, outline), convert to .ass and use -vf ass=subs.ass.
Step 2c: add a soft subtitle track
Soft subtitles stay a separate track inside the MP4. Players like VLC let viewers switch them on and off. No re-encoding, so it's instant:
bash
ffmpeg -i input.mp4 -i subs.srt -c copy -c:s mov_text output.mp4
Social platforms generally ignore soft tracks inside the file. For YouTube, upload the .srt separately in YouTube Studio instead.
Which should you use?
| Goal | Method |
|---|---|
| Posting to TikTok, Reels, Shorts | Burn in |
| Sharing a file people play in VLC or QuickTime | Soft track |
| Long YouTube video | Upload the SRT to YouTube Studio |
| Accessibility on your own site | A separate VTT file with the HTML video player |
See closed captions vs subtitles for the difference.
Skip the SRT entirely for short clips
If the goal is captioned Shorts or Reels from a long video, ClipFlame cuts the clips and burns in word-by-word animated captions in one step, in 9 languages. See the AI caption generator.
Common questions
Can I add subtitles to an MP4 without re-encoding?
Yes, as a soft track with FFmpeg's -c copy -c:s mov_text. Burning them in always re-encodes.
Why don't my subtitles show on Instagram?
Instagram ignores subtitle tracks inside the file. Burn them in, or use Instagram's own captions.
What's the difference between SRT and VTT?
Both are timed text formats. VTT is used by web players and supports some styling; SRT is the most widely supported.