Burn subtitles permanently into video

subtitles

// what it does

Burns the subtitle file directly into the video frames using the libass-backed subtitles video filter. Because -vf applies a filter, the video stream is decoded and fully re-encoded, so the captions become part of the pixels and can never be toggled off. Reach for this when the target player has no subtitle support or when you need guaranteed rendering, e.g. social media uploads.

// shell

$ ffmpeg -i input.mp4 -vf "subtitles=subtitles.srt" output.mp4

// gotcha

The filter arg uses ':' as its option separator, so any colon or other special character in the path must be escaped — most painfully Windows drive letters. A plain Linux path (/home/user/subs.srt) needs nothing; the documented Windows form escapes the colon and doubles the backslashes, e.g. subtitles='C\:\\path\\to\\subs.srt'. You also can't pair this with -c:v copy, since burning requires a re-encode.