To add an SRT file to an MP4, choose one of two results. A soft subtitle track sits inside the MP4 and viewers can turn it on or off. Burned-in subtitles are drawn onto the picture and always show. For a soft track, run one FFmpeg command or use HandBrake's Subtitles tab. To burn subtitles in, use HandBrake's Burn In option or FFmpeg's subtitles filter. If you only want to watch the video yourself, you do not need to change the MP4 at all.
This guide covers all four routes, with commands you can copy and the fixes for the problems that usually stop subtitles from showing.
Soft subtitles or burned-in subtitles: which do you need?
Decide this first, because it changes the tool and the time it takes.
| Feature | Soft subtitle track | Burned-in subtitles |
|---|---|---|
| Viewer can turn them off | Yes | No |
| Several languages in one file | Yes | No, one track only |
| Re-encodes the video | No, it is a quick copy | Yes, slower and some quality cost |
| Shows on every player and social app | Not always | Yes |
| Easy to fix a typo later | Yes, swap the track | No, encode again |
Pick a soft track for files you share with people who use real video players, such as VLC, a TV media app or a phone gallery. Pick burned-in subtitles for Instagram, TikTok, WhatsApp and other places that ignore subtitle tracks, or when the subtitles must always be visible.
Before you start: check the SRT file
Most "my subtitles do not show" problems come from the SRT file, not the video. Take two minutes to check it.
- Name both files clearly, for example
interview.mp4andinterview.srt, and keep them in the same folder. - Save the SRT as UTF-8. Accented letters, Arabic or Chinese text can turn into strange symbols when the file uses an older encoding. Most text editors let you choose UTF-8 in the Save As dialog.
- Validate the cues. The free subtitle checker flags overlapping cues, lines over 42 characters and lines that go by too fast. It runs in your browser, and the file is never uploaded.
- Convert other formats first. If you have a VTT, ASS or SBV file, the subtitle converter turns it into SRT and keeps the timing.
- Fix the timing now. If every line is a second or two early or late, shift the whole file with the subtitle sync tool before you add it. Fixing timing after you burn subtitles in means encoding again.
No SRT yet? You can generate one from the speech in your video. Our guide on creating an SRT file from speech walks through it.
Method 1: Play an SRT with an MP4 in VLC (no changes to the file)
If the goal is only to watch the video with subtitles on your own computer, skip embedding.
- Put the SRT in the same folder as the MP4.
- Give it the exact same name, so
holiday.mp4pairs withholiday.srt. - Open the MP4 in VLC. It loads the matching SRT on its own.
- If it does not, use Subtitle > Add Subtitle File and pick the SRT.
You can switch or disable tracks from the Subtitle menu. Nothing is written into the MP4, so the subtitles stay behind when you send the video to someone else. For that, use one of the methods below.
Method 2: Add SRT to MP4 as a soft track with FFmpeg
FFmpeg is free, runs on Windows, macOS and Linux, and is the fastest way to embed an SRT without re-encoding. MP4 does not store SRT text directly, so FFmpeg converts it to the MP4 text subtitle format, called mov_text, while it copies the video and audio untouched.
ffmpeg -i video.mp4 -i subtitles.srt -map 0 -map 1 -c copy -c:s mov_text -metadata:s:s:0 language=eng output.mp4What each part does:
-i video.mp4 -i subtitles.srtreads the video and the subtitle file.-map 0 -map 1keeps every stream from both inputs.-c copycopies video and audio without re-encoding, so it finishes in seconds.-c:s mov_textconverts the SRT into the subtitle format MP4 supports.-metadata:s:s:0 language=englabels the track, so players show "English" instead of "Track 1". Use the three-letter code for your language, such asspa,fraordeu.
To add two languages, add a third input and a second label:
ffmpeg -i video.mp4 -i en.srt -i es.srt -map 0 -map 1 -map 2 -c copy -c:s mov_text -metadata:s:s:0 language=eng -metadata:s:s:1 language=spa output.mp4Open the result in VLC and check the Subtitle menu. If the video already had a subtitle track, the new track numbers shift by one, so adjust s:s:0 to match.
Method 3: Add SRT to MP4 with HandBrake
HandBrake is a free desktop app for Windows, macOS and Linux. It re-encodes the video either way, so it is slower than FFmpeg's copy, but you get buttons instead of a command line.
- Open HandBrake and load your MP4 as the source.
- Choose a preset and set the output container to MP4.
- Go to the Subtitles tab and use Tracks > Add External Subtitle Track (older versions label it Import SRT). Pick your SRT.
- Set the language for the track.
- For a soft track, leave Burn In unchecked. Tick Default if the subtitles should show when playback starts.
- For burned-in subtitles, tick Burn In.
- Click Start Encode.
Two limits from the HandBrake documentation are worth knowing. An MP4 can have only one burned-in subtitle track, while extra tracks must stay soft. HandBrake also has an Offset setting in milliseconds for SRT files, which helps when the whole file runs early or late.
Method 4: Burn subtitles into video with FFmpeg
Burning in is the right call for social video, presentation screens and any player that ignores subtitle tracks. FFmpeg's subtitles filter draws each line onto the frames:
ffmpeg -i video.mp4 -vf subtitles=subtitles.srt -c:a copy output.mp4The video is re-encoded, so this takes longer and the file size can change. The audio is copied as is. Your FFmpeg build needs libass, which most prebuilt downloads include. On Windows, a path with a drive letter needs escaping inside the filter, so the easiest fix is to run the command from the folder that holds both files.
Want a bigger or different font? Convert the SRT to ASS with the subtitle converter, set the style in the ASS file, and burn that file instead. ASS styling survives burn-in, while plain SRT uses the player's default look.
Uploading to YouTube or a video editor? Keep the SRT separate
If the MP4 is going to YouTube, do not embed anything. Upload the video, then add the SRT in YouTube Studio under Subtitles. YouTube lists SubRip (.srt) among its supported caption files, and a separate file lets you fix a typo without uploading the video again. Viewers can also pick the language they need.
The same applies to editing software. Premiere Pro, DaVinci Resolve and Final Cut import SRT as a caption track you can style and export. See our walkthrough on importing an SRT into Premiere Pro.
Need the subtitles in another language first?
Translate the SRT before you add it to the MP4, especially if you plan to burn it in. Aivently's subtitle translator returns the same SRT in your target language with the original timecodes and cue order kept, so it drops into any of the methods above without resyncing. You can try the first 20 lines free without an account, and your first 10 minutes are free once your email is verified. Run the translated file through the subtitle checker too, because translated lines often run longer than the original.
Troubleshooting: subtitles do not show after adding SRT to MP4
- The player shows no subtitle option. Some players, including many social apps, ignore soft tracks. Burn the subtitles in instead.
- Subtitles are there but off by default. Turn them on from the player's subtitle menu, or set the track as Default in HandBrake.
- Strange characters instead of letters. Re-save the SRT as UTF-8 and run the command again.
- FFmpeg says the subtitle codec is not supported. You probably used
-c copywithout-c:s mov_text. MP4 cannot hold SRT as is. - Subtitles drift further out of sync over time. The SRT was made for a different frame rate. Convert it in the subtitle sync tool, for example from 23.976 to 25 fps.
- Lines overlap or flash past. Check the file with the subtitle checker and fix the flagged cues.
FAQ
Can I add SRT to MP4 online?
Yes. Several web tools burn an SRT into an MP4 in the browser, but most upload your full video to their servers and some add a watermark on free plans. For private or long videos, the free desktop methods above (HandBrake or FFmpeg) keep the file on your computer and have no size limit.
How do I add an SRT file to an MP4 on a Mac?
HandBrake and FFmpeg both run on macOS and use the same steps as on Windows. Install FFmpeg with a package manager such as Homebrew, or use HandBrake's Subtitles tab. VLC for Mac also loads an SRT with the same name as the video.
Does adding subtitles reduce video quality?
A soft subtitle track added with -c copy does not touch the video, so quality stays identical. Burning subtitles in re-encodes the video, which can cost a little quality depending on your encoder settings.
Can one MP4 hold subtitles in several languages?
Yes, as soft tracks. Add one SRT per language and label each track, as in the two-language FFmpeg command above. Only one track can be burned in.
Why does my MP4 play subtitles in VLC but not on my TV?
The TV's player may not read the MP4 subtitle track, or it may expect a separate SRT with the same file name next to the video. Try the external SRT first. If that fails, burn the subtitles in.
