The ASS / SSA subtitle format, explained
Advanced SubStation Alpha is the format of fansubs and serious typesetting. Where SRT stores lines, ASS stores a whole styled document — fonts, colours, positioning, karaoke and signs.
SubStation Alpha (SSA) appeared in the late 1990s as a subtitle editor for anime fansubs. Its successor, Advanced SubStation Alpha (ASS, version 4.00+), added far more control and became the standard for high-quality soft subtitles — especially anything that needs typesetting: positioned signs, multiple speakers in different colours, karaoke, and fonts that match the source. If you've seen subtitles that look designed, they were almost certainly ASS.
A document in sections
An ASS file is an INI-style document split into bracketed sections. The three that matter are
[Script Info], the styles table, and [Events]:
[Script Info]
ScriptType: v4.00+
PlayResX: 1920
PlayResY: 1080
[V4+ Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, ... , Alignment, MarginL, MarginR, MarginV, Encoding
Style: Default,Arial,72,&H00FFFFFF,&H000000FF,&H00000000,&H64000000,0,0,0,0,100,100,0,0,1,3,0,2,60,60,40,1
[Events]
Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: 0,0:01:14.80,0:01:17.20,Default,,0,0,0,,{\i1}Are you there?{\i0} [Script Info]
Metadata and, crucially, PlayResX/PlayResY — the reference resolution all positioning and
font sizes are relative to. Render the same file at a different resolution and the renderer scales everything to fit.
The styles table
[V4+ Styles] (or [V4 Styles] in legacy SSA) defines named styles. A Format:
line lists the fields, then each Style: line is a named preset: font, size, colours, bold/italic,
outline and shadow thickness, alignment, and margins. Colours use the ASS &HAABBGGRR notation —
note it is blue-green-red order with an alpha-first byte, not the web's #RRGGBB.
[Events] and Dialogue lines
Each visible line is a Dialogue: event whose fields follow that section's own Format: line —
the order can vary between files, so a robust parser reads the format line rather than assuming positions. Key fields:
- Start / End — time in
H:MM:SS.cc, whereccis centiseconds (hundredths), not milliseconds. - Style — the name of a style from the table.
- Layer — higher layers draw on top, for overlapping signs.
- MarginL/R/V, Effect — per-line overrides.
- Text — the last field; it may contain commas, so everything after the ninth comma is text.
Lines can also be Comment: events — present in the file but not displayed (notes, disabled karaoke, work
in progress). These are dropped on conversion to a display format.
Override tags: the power and the problem
Inside the text field, curly-brace override tags change rendering mid-line. A few examples:
{\i1}…{\i0}— italics on, then off (also\bbold,\uunderline).{\pos(960,1020)}— place the line at exact coordinates.{\c&H00FFFF&}— set the primary colour.{\fad(200,200)}— fade in and out.{\k50}— karaoke timing for the following syllable.{\frz30},{\t(...)}— rotation and animated transforms.
\N forces a line break and \h inserts a non-breaking space. This expressive syntax is why
ASS can do things SRT and even WebVTT cannot — and why flattening it to a simpler format loses the typesetting.
Converting ASS to SRT
Going to SRT keeps the dialogue and timing but discards the styling layer: positioning,
colours, fonts, fades, rotation and karaoke all have no SubRip equivalent. Bold, italic and underline survive
because SRT supports them; centisecond times are expanded to milliseconds; \N becomes a real line break.
Our converter reports how many override tags it removed per line, so the loss is never silent. Signs and karaoke,
being pure positioning and timing, simply flatten to their plain text.
The reverse, SRT to ASS, can't invent styling — it wraps your lines in a valid ASS document with one clean default style, ready to open in Aegisub and build on.
SSA vs ASS, and tooling
SSA (v4) is the older format; ASS (v4.00+) added alpha channels, richer override tags and more style fields. Files are largely compatible, and modern renderers (libass, used by VLC, MPV and mpc-hc) handle both. The reference editor is Aegisub. For quick text and timing fixes without leaving the browser, our subtitle editor opens ASS, lets you edit the dialogue and timing, and exports back to ASS, SRT or VTT. Fansub files are also frequently in legacy encodings — if the text looks garbled, run the encoding fixer first.