Add an SRT Subtitle Track to a Video with FFmpeg
Mux an external .srt file into an MP4 as a soft subtitle track that viewers can turn on or off, without re-encoding the video.
Run ffmpeg -i movie.mp4 -i movie.srt -c copy -c:s mov_text -metadata:s:s:0 language=eng output.mp4 to embed the subtitles as a toggleable track.
01Command
Command
$ ffmpeg -i movie.mp4 -i movie.srt -c copy -c:s mov_text -metadata:s:s:0 language=eng output.mp402What it does
This command adds the .srt file as a second input and copies the existing video and audio streams untouched (-c copy), so it finishes in seconds with no quality loss. The subtitles are converted to mov_text, the subtitle format the MP4 container supports, and tagged with a language code that players use to label the track. Because the track is soft, viewers can switch it on or off in their player, and the original picture is never altered.
03Risk
!Warning: Some standalone TV and media-box players ignore mov_text subtitles; if you need text visible on any device, use a burn-in (hardsub) approach instead.
04Undo
✓No undo needed — this command does not change persistent state.
05Sources
- ffmpeg(1) — Linux manual pageEvidence: Documents multiple inputs, per-stream codec selection with -c:s, and stream-specific metadata such as language tags.
- FFmpeg Formats Documentation (mov_text subtitle codec)Evidence: The MP4 container stores subtitles as mov_text; ffmpeg maps a second input to a subtitle stream with -c:s mov_text.
Last verified: 2026-09-18 · Category: Media