Burn Subtitles into a Video with FFmpeg (Hardsub)
Render an .srt file directly onto the video frames so the text becomes part of the picture and plays everywhere, with styling control via force_style.
Run ffmpeg -i movie.mp4 -vf "subtitles=movie.srt:force_style='FontSize=24'" -c:a copy output.mp4 to permanently burn the subtitles into the picture.
01Command
Command
$ ffmpeg -i movie.mp4 -vf "subtitles=movie.srt:force_style='FontName=Noto Sans CJK SC,FontSize=24'" -c:a copy output.mp402What it does
The subtitles filter uses libass to draw each subtitle line onto the video frames as they are re-encoded, so the text can never be turned off — which is exactly what you want for maximum compatibility. force_style lets you pick the font, size and colors without editing the .srt or an ASS style file; use a CJK-capable font like Noto Sans CJK SC for Chinese subtitles. Audio is stream-copied, so only the video track is re-encoded.
03Risk
!Warning: Burning subtitles requires re-encoding the whole video, which takes time and slightly reduces quality; the text cannot be removed afterwards, so keep the original file.
04Undo
✓No undo needed — this command does not change persistent state.
05Sources
- FFmpeg Filters Documentation (subtitles filter)Evidence: The subtitles filter renders text subtitles onto frames via libass and accepts a force_style option to override font, size and colors.
- ffmpeg(1) — Linux manual pageEvidence: Documents -vf video filtering and audio stream copying with -c:a copy during re-encode operations.
Last verified: 2026-09-18 · Category: Media