Home › Guides › Subtitle File Formats Explained

Subtitle File Formats Explained

Most “my subtitles won't load” problems are format problems. Here is what each container actually is, how to identify the file you have, and which one to deliver.

The five formats you will actually meet

Subtitle files are plain text. The differences are in how timestamps are written and how much styling the format can carry. That is the whole story, and it explains almost every compatibility problem you will run into.

FormatExtensionTimestampStylingPositioningTypical use
SubRip.srt00:00:01,000Inline <i><b><u>NoUniversal delivery, desktop editors
WebVTT.vtt00:00:01.000Inline plus STYLE blocksYesHTML5 video, streaming, broadcast
ASS / SSA.ass .ssa0:00:01.00Full script, karaoke, fontsYesFansubbing, heavily styled releases
SBV.sbv00:00:01.000NoneNoLegacy YouTube caption export
TTML / DFXP.ttml .xml00:00:01.000XML stylingYesBroadcast and streaming delivery specs

SubRip (.srt)

The de facto interchange format. Each cue is a sequence number, a timestamp line using a comma as the decimal separator, the text, then a blank line. Nothing else. That minimalism is exactly why it works everywhere — and why it cannot express position or styling beyond inline italics, bold and underline.

WebVTT (.vtt)

WebVTT is a W3C specification designed for the web. It looks like SubRip with a WEBVTT header and a period instead of a comma, but it adds real capability: NOTE comments, STYLE blocks that behave like scoped CSS, regions, voice spans for identifying speakers, and per-cue settings such as line: and align:.

It is the only format an HTML5 <track> element accepts. If you are publishing video on a web page, you need WebVTT — see adding subtitles to HTML5 video.

ASS and SSA (.ass, .ssa)

Advanced SubStation Alpha is a rendering format rather than a caption container. It carries a full stylesheet, font choices, karaoke timing and per-character effects. It is the standard in fansubbing and in any workflow where captions are part of the visual design. Most players and editors do not support it, so outside that world it is rarely a delivery format.

SBV (.sbv)

A YouTube-era export format that resembles WebVTT but has no header, no styling and no positioning. You will mostly meet it when downloading older captions from the platform. Convert it to SubRip or WebVTT for anything else.

TTML and DFXP (.ttml, .xml)

Timed Text Markup Language is an XML-based specification used in broadcast and by streaming services delivering to specific device profiles. It is verbose and rarely hand-edited, but it is what professional delivery specifications usually ask for.

How to identify a subtitle file

Open it in a plain text editor and read the first few lines.

  • Starts with WEBVTT → WebVTT.
  • Starts with [Script Info] → ASS or SSA.
  • Starts with <?xml or <tt → TTML.
  • Starts with a number, then a line containing --> with a comma → SubRip.
  • Contains --> with a period but no WEBVTT header → SBV, or a WebVTT file missing its header.

Never trust the file extension alone. Files get renamed constantly, and a .vtt that begins with a cue number and a comma is SubRip content carrying the wrong name.

Which format should you deliver?

Web page or browser player: WebVTT, because it is the only format the browser reads. Use the SRT to VTT converter.

Desktop editor, mobile player or a platform upload box: SubRip. It is the most widely accepted and the least likely to be rejected. Start from the VTT to SRT converter if you have WebVTT.

Broadcast or streaming specification: follow the specification. It will name the format, and it will also mandate things a converter cannot guess — maximum characters per line, minimum and maximum cue duration, reading speed limits.

Captions as visual design: keep ASS as the master and generate a plain delivery copy, accepting that positioning and styling will be lost.

Reading speed is a constraint no format enforces

Every format above will happily store a cue containing three dense lines displayed for half a second, and none of them will warn you. Broadcast and streaming guidelines typically land in the range of about 15 to 20 characters per second for adult audiences, and lower for children or for content that will be read in a second language. If a cue feels too fast, it is too fast — split it or shorten the text. No tool can fix that for you, because it is an editorial decision.

Tools mentioned in this guide

SRT to VTT Converter

Convert .srt subtitle files to WebVTT (.vtt) for HTML5 video, right in your browser.

Open tool →

VTT to SRT Converter

Turn WebVTT files back into SubRip (.srt) for editors, players and upload platforms.

Open tool →

Remove Timestamps from Subtitles

Strip timestamps and cue numbers to get a clean, readable transcript.

Open tool →

Clean Up AI-Generated Subtitles

Remove sound cues, HTML tags, speaker labels and duplicate cues from auto-generated captions.

Open tool →

Shift Subtitle Timing

Move every subtitle cue earlier or later to fix out-of-sync captions.

Open tool →

Resync Subtitles by Frame Rate or Speed

Fix subtitles that drift progressively out of sync by resampling them to your video's frame rate or playback speed.

Open tool →

SBV to SRT Converter

Convert YouTube .sbv caption files to SubRip (.srt), right in your browser.

Open tool →

Merge Subtitle Files

Combine two SRT or VTT files into one track, with the second file appended after the first.

Open tool →

Subtitles to CSV Converter

Export SRT or VTT cues to a CSV spreadsheet with start time, end time, duration and text.

Open tool →

Split Subtitle Files

Cut one SRT or VTT track into two files at any timestamp, right in your browser.

Open tool →

Fix Garbled Subtitles (Encoding Repair)

Repair mojibake — subtitles showing é, ’ or привет instead of real characters.

Open tool →

Subtitle Timing Checker

Audit an SRT or VTT file for cues that are too fast, too short, too long or overlapping.

Open tool →

ASS / SSA to SRT Converter

Turn SubStation Alpha (.ass, .ssa) subtitles into clean SubRip (.srt) — in your browser, with nothing uploaded.

Open tool →

SRT to ASS Converter

Turn SubRip (.srt) subtitles into a complete ASS v4+ script with a default style, ready for styled players.

Open tool →

TTML / DFXP to SRT Converter

Turn TTML and DFXP captions (.ttml, .dfxp, .xml) into SubRip (.srt) in your browser — including offset times such as 10s, 100ms and 30f.

Open tool →

Plain Text to SRT Converter

Turn a transcript — one line per caption — into a valid .srt file with evenly spaced timing you can retime later.

Open tool →

Last updated 2026-09-21. All tools run locally in your browser.