Subtitles Explained: SRT vs VTT vs ASS (+ How to Burn Them In)
Three text formats, one image-format trap, and the burn-vs-softcode decision that determines whether anyone ever sees your captions. Formats compared, exact commands, and the fixes for sync, gibberish, and invisible subs.
SRT vs VTT vs ASS: the one table you need
| SRT | VTT | ASS/SSA | |
|---|---|---|---|
| Styling | None (plain text) | Position, color, chapters | Full: fonts, karaoke, effects |
| Plays on | Everything | Web + most players | VLC, MPV, anime players; patchy on TVs |
| Best for | Universal subs, Plex, uploads | HTML5 video, web players | Fansubs, styled captions |
| Plex direct-play | Yes | Mostly | Often forces transcode |
Default rule: author in SRT unless you need web chapters (VTT) or heavy styling (ASS) — SRT converts cleanly into both, while the reverse loses formatting. And remember the fourth category: image subs (PGS/VOBSUB) are pictures, not text — the Plex-buffering culprits from our Plex guide.
Burn in or keep soft? Decide by destination
Burn in (hardcode) when…
- TikTok, Reels, Shorts — no player sub support to rely on
- Client previews and screen recordings — zero failure modes
- Styling must survive (ASS effects become pixels)
Keep soft when…
- Plex/Jellyfin libraries — viewers toggle languages
- YouTube uploads — platform renders and translates
- Archival — restyle or re-time later without re-encoding
Burn-in commands (FFmpeg)
Burn SRT in, keep audio untouched
ffmpeg -i in.mp4 -vf subtitles=subs.srt -c:v libx264 -crf 20 -c:a copy out.mp4
Burn with styling
ffmpeg -i in.mp4 -vf "subtitles=subs.ass:force_style='FontName=Arial,FontSize=20,PrimaryColour=&HFFFFFF&,Outline=1'" -c:v libx264 -crf 20 -c:a copy out.mp4
Shift out-of-sync subs by +2.5s
ffmpeg -itsoffset 2.5 -i subs.srt -i in.mp4 -c copy -map 0:s -map 1:v -map 1:a out.mkv
Extract first sub track from MKV
ffmpeg -i movie.mkv -map 0:s:0 subs.srt
Two gotchas: burning re-encodes video (set CRF explicitly — filter-only commands silently pick defaults), and gibberish glyphs mean a legacy codepage file — re-save as UTF-8 before anything else. Growing drift (not constant offset) means a framerate-mismatched sub file: fix with Subtitle Edit's point-sync, not offset guessing.
Whole season, one run
Burn subtitles across entire folders.
Twelve episodes, twelve matching .srt files, one consistent style. Formatif Pro ($8.95 one-time) batch-burns subtitle tracks across folders offline — file or embedded subs, adjustable font size, same recipe every file, per-file status — and extracts embedded tracks to SRT/VTT/ASS when you need the text instead. No terminal loops to babysit.
Subtitle questions, answered
SRT vs VTT vs ASS?
SRT: universal plain text. VTT: web-native with styling/chapters. ASS: full karaoke-grade styling, patchier support. Default SRT.
Burn in or keep soft?
Burn for TikTok/Reels/previews (zero failure modes). Soft for Plex, YouTube, archives (toggleable, restyleable).
FFmpeg burn-in command?
-vf subtitles=subs.srt with explicit -c:v libx264 -crf 20 -c:a copy. Style via force_style; burns require re-encode.
Subs not showing on Plex/TV?
Usually PGS/VOBSUB image subs or font-less ASS. Convert/OCR to SRT — direct-plays almost everywhere.
Fix out-of-sync subs?
Constant offset: -itsoffset shift. Growing drift: framerate-mismatched file — point-sync in Subtitle Edit.
Gibberish characters in subs?
Legacy codepage read as UTF-8. Re-save the .srt as UTF-8. Author everything UTF-8 from the start.
Extract subs from MKV?
ffmpeg -i movie.mkv -map 0:s:0 subs.srt. List tracks first to pick the language; PGS extracts need OCR.
Keep learning
Every episode captioned, one run.
Formatif Pro ($8.95 one-time) and Formatif AI ($12.95 one-time) handle video, image, and audio conversion offline — with batch workflows, no file size limits, and a 3-day free trial.
The FFmpeg commands above are complete and free forever — pick whichever method fits your episode count.
Written by
Founder of Formatif, a local-first offline media processing suite for Windows and Linux. Hadi writes about video, image, and audio formats, compression, and privacy-first desktop workflows.