Originally published at ffmpeg-micro.com FFmpeg's subtitles filter burns SRT or ASS captions directly into the video pixels. Unlike soft subtitles (which viewers can toggle off), burned-in subtitles are permanent. They show up everywhere: social media players that strip subtitle tracks, messaging apps, and platforms that don't support external caption files. The basic command is one line, but the filter's syntax for styling, positioning, and encoding has a few traps that waste hours if you don't know about them. The Basic Command ffmpeg -i input.mp4 -vf "subtitles=captions.srt" -c :v libx264 -crf 23 -c :a copy output.mp4 Enter fullscreen mode Exit fullscreen mode FFmpeg reads captions.srt , renders each subtitle at its timestamp, and encodes the result into a new MP4. The -c:a copy flag passes audio through untouched so you don't re-encode it for no reason. Two things to know up front: The subtitles filter requires FFmpeg compiled with libass.…