SRT, VTT, and ASS are all text files that pair lines of dialogue with start and end times; the difference is how much else they can describe, from SRT's bare text and timing, to WebVTT's web-oriented positioning and styling, to ASS's full typesetting with fonts, colors, exact positions, and effects.
All three can be opened in a plain text editor, which makes them easy to inspect and repair. The sections below show what each file actually looks like, where each one works, and what you give up when you move from one to another. If you only need to choose between SRT and WebVTT for a particular platform, the SRT vs VTT guide goes destination by destination, from YouTube to Premiere Pro.
SRT (SubRip): simple and everywhere
An SRT file is a list of numbered blocks. Each block has a sequence number, a timing line, one or more lines of text, and a blank line before the next block.
1 00:00:01,000 --> 00:00:03,500 Is anybody home? 2 00:00:04,200 --> 00:00:06,800 <i>Upstairs. Give me a minute.</i>
Timestamps use the form 00:01:02,500: hours, minutes, seconds, and milliseconds, with a comma before the milliseconds. The hours are always written out. Styling is informal: many players understand <i>, <b>, <u>, and <font color="#ffff00">, and many also honor the ASS-style tag {\an8} to move a line to the top of the screen, for example so it does not cover on-screen text. None of this is guaranteed, which is why most SRT files stick to italics.
VTT (WebVTT): built for the web
WebVTT looks like SRT at first glance, but it starts with a WEBVTT header, uses a period before the milliseconds, and lets you leave out the hours: 01:02.500 and 00:01:02.500 are both valid. Cue numbers are optional, and a cue can have any text identifier instead.
WEBVTT
STYLE
::cue(.loud) { color: yellow; }
NOTE This block is a comment and is never displayed.
00:01.000 --> 00:03.500
Is anybody home?
reply
00:04.200 --> 00:06.800 line:0 align:center
<v Sam><c.loud>Upstairs!</c>
Cue settings after the timing line control placement: line:0 puts the cue at the top of the video, and align, position, and size adjust it further. Text wrapped in <c.classname> can be styled with CSS, either in a STYLE block or on the web page itself, and <v Name> marks the speaker. NOTE blocks hold comments. Most importantly, WebVTT is the format browsers require for the HTML5 <track> element, so subtitles for a website need to be VTT.
ASS and SSA: full typesetting
Advanced SubStation Alpha (ASS) is the successor to the older SubStation Alpha (SSA) format. Both are organized into sections: script information, a list of named styles, and the events, which are the actual subtitles.
[Script Info]
ScriptType: v4.00+
PlayResX: 1920
PlayResY: 1080
[V4+ Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
Style: Default,Arial,64,&H00FFFFFF,&H000000FF,&H00000000,&H80000000,0,0,0,0,100,100,0,0,1,3,1,2,60,60,50,1
[Events]
Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: 0,0:00:01.00,0:00:03.50,Default,,0,0,0,,Is anybody home?
Dialogue: 0,0:00:04.20,0:00:06.80,Default,,0,0,0,,{\an8}{\i1}Upstairs.{\i0}\NGive me a minute.
Timestamps look like 0:01:02.50: a single-digit hour and centiseconds (hundredths) instead of milliseconds. Each dialogue line refers to a style that sets the font, size, colors, outline, shadow, and margins. Colors are written in blue-green-red order, so &H0000FFFF is yellow. Override tags in braces change things for one line: {\pos(960,100)} places text at exact pixel coordinates, {\k25} times karaoke syllables, and {\fad(200,200)} fades text in and out. In MKV files, the fonts can travel with the video as attachments, so the typesetting looks the same on every machine.
That is why anime fansub groups and the Aegisub editor work in ASS: signs, songs, and on-screen text can be translated in place, matching the look of the original. SSA uses a [V4 Styles] section and supports fewer features, and most software that reads ASS also reads SSA.
TXT: text without timing
A plain TXT file holds only the words, one line after another. That makes it useful as a transcript, for proofreading, or for sending to a translator, but no player can show it as subtitles because there are no times. Converting SRT to TXT drops the numbers and timestamps. Going the other way means each line has to be given times, which you will usually fine-tune afterward.
Compatibility at a glance
| Where | SRT | VTT | ASS / SSA |
|---|---|---|---|
| VLC, mpv (desktop) | Yes | Yes | Yes, with full styling |
HTML5 <track> | No | Yes (required) | No |
| YouTube upload | Yes | Yes | No, convert first |
| Plex, Jellyfin, Kodi | Yes | Usually | Usually; styling support varies by app and device |
| Smart TVs, USB playback | Usually | Sometimes | Rarely |
| Soft subtitles in MKV | Yes | Yes | Yes, styling kept |
| Soft subtitles in MP4 | Converted to mov_text | Converted to mov_text | Converted, styling lost |
Device support changes with firmware and app versions, so treat this as a general guide and test on your own hardware. The guide to adding subtitles to a video covers each setup in detail.
What you lose converting ASS to SRT
Converting ASS to SRT keeps every line of text and its timing, but SRT has no place for most typesetting:
- Positioning: exact
\poscoordinates have no SRT equivalent. At most a top-of-screen hint survives, and only some players honor it. - Fonts and sizes: the player's default font is used instead.
- Colors: partly kept at best, as
<font color>tags that only some players display. - Karaoke and effects: syllable timing, fades, rotation, and drawings are dropped.
- Layered signs: on-screen text that was placed beside the dialogue may now stack on top of it at the bottom of the screen.
Going the other way, SRT to ASS gives every line the default style, which you can then customize. SRT and VTT convert back and forth with little loss apart from VTT's cue settings and CSS classes; see SRT to VTT.
Which format should you choose?
- SRT for the widest compatibility: TVs, media servers, video platforms, and sharing files with other people.
- VTT for anything played in a web browser, including your own site's HTML5 player.
- ASS when the look matters: styled dialogue, karaoke, translated signs, or anime releases.
- TXT for transcripts, translation, and proofreading.
When in doubt, keep the richest version as your master copy and export simpler formats from it. The SubTweak converter handles SRT, VTT, ASS, and TXT in your browser without uploading the file anywhere.