Skip to content
SubtitleTools
October 23, 2026 · 10 min read

ASS Subtitles Explained: Structure, Styles and Override Tags

Open an .ass file in a text editor for the first time and it looks like a configuration file for something far more complicated than subtitles. In fact it follows a clear, consistent structure, and once you can read it you can fix problems, understand what a converter will keep and discard, and recognize why an ASS file looks different in different players. This guide takes an ASS file apart piece by piece.

What ASS and SSA are

SubStation Alpha (SSA, .ssa) is a subtitle format that was designed to give subtitle authors control over how text looks. Advanced SubStation Alpha (ASS, .ass) is its extended successor and is the version in common use today. The two share the same overall structure, which is why tools that read one can usually read the other, and why the converters on this site treat both in the same way.

Unlike SRT, which describes only text and time, an ASS file also describes the canvas the text is placed on, a set of reusable styles, and per-line instructions for fonts, colors, positions and effects. That extra power is why the format is popular for fansubbing, karaoke and any project where typography matters, and why fewer players support it fully.

The three main sections

An ASS file is divided into sections, each introduced by a name in square brackets. Three matter most:

SectionPurpose
[Script Info]General settings: title, script type, and the reference resolution (PlayResX and PlayResY) that all positions and sizes are measured against.
[V4+ Styles]A list of named styles. Each style defines the font, size, colors, outline, shadow, alignment and margins. (In the older SSA format this section is named [V4 Styles].)
[Events]The actual content: one line per subtitle (Dialogue) or note (Comment), each referring to a style by name.
A minimal but complete ASS file
[Script Info]
Title: Example
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,56,&H00FFFFFF,&H000000FF,&H00000000,&H64000000,0,0,0,0,100,100,0,0,1,2,1,2,60,60,50,1
Style: Italic,Arial,56,&H00FFFFFF,&H000000FF,&H00000000,&H64000000,0,1,0,0,100,100,0,0,1,2,1,2,60,60,50,1

[Events]
Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: 0,0:00:04.00,0:00:06.50,Default,,0,0,0,,Welcome back to the channel.
Dialogue: 0,0:00:07.00,0:00:09.20,Italic,,0,0,0,,(whispering) Let's begin.

Reading a Dialogue line

The Format line directly above the events tells you what each comma-separated field means. For the Dialogue line in the example:

Dialogue: 0,0:00:04.00,0:00:06.50,Default,,0,0,0,,Welcome back to the channel.
FieldValue in the exampleMeaning
Layer0Drawing order. Higher layers are drawn on top of lower ones.
Start0:00:04.00When the line appears.
End0:00:06.50When the line disappears.
StyleDefaultThe name of a style defined in the [V4+ Styles] section.
Name(empty)An optional speaker label. It is not displayed.
MarginL / MarginR / MarginV0, 0, 0Margin overrides for this line. A value of 0 means use the style's own margin.
Effect(empty)An optional effect name; usually empty.
TextWelcome back to the channel.The words to display, plus any override tags.

Two details are worth remembering. Times are written as H:MM:SS.cc, where the last two digits are centiseconds (hundredths of a second), not milliseconds. And because the Text field is last, it can contain commas freely; a parser reads the first nine fields by position and treats everything remaining as the text.

Styles, colors and alignment

A style bundles every visual decision about a line of text so that dialogue lines can simply name it. Defining a style once and reusing it is what keeps a large file consistent. Three details trip people up:

  • Colors are written as &HAABBGGRR. That is hexadecimal with the channels in blue-green-red order (not red-green-blue), preceded by an alpha value in which 00 is fully opaque and FF is fully transparent. So &H000000FF is opaque red, and &H00FF0000 is opaque blue.
  • Alignment uses the layout of a numeric keypad: 1, 2 and 3 are bottom-left, bottom-center and bottom-right; 4, 5 and 6 are middle-left, middle-center and middle-right; 7, 8 and 9 are top-left, top-center and top-right. The default bottom-center is 2.
  • Sizes and margins are measured in the units of the PlayRes canvas. If PlayResX and PlayResY do not match the video's resolution, the player scales everything proportionally, which is why text size can look different between files.

Override tags inside the text

The styling you set in a style applies to every line that uses it. To change something for part of a single line, ASS uses override tags in curly braces, placed directly in the text. A backslash introduces each tag, and several can share one pair of braces.

TagEffectExample
\an8Set alignment using the keypad numbers (8 = top-center){\an8}Text shown at the top
\i1 and \i0Turn italics on and offSay {\i1}what{\i0}?
\b1 and \b0Turn bold on and off{\b1}Warning{\b0}
\pos(x,y)Place the text at exact coordinates{\pos(960,200)}Sign text
\fsChange font size{\fs72}Big
\c&HBBGGRR&Change the primary color (note the blue-green-red order){\c&H0000FF&}Red text
\fad(in,out)Fade in and out, in milliseconds{\fad(300,300)}Fading
\kKaraoke timing for syllable-by-syllable highlighting{\k50}Ka{\k50}ra{\k50}o{\k50}ke
\NA hard line break inside the textFirst line\NSecond line

Tags are what make ASS files so expressive, and also what make them tricky to move into other formats. Everything inside curly braces is instructions to an ASS renderer, and no other subtitle format has a place to put them.

What happens when you convert ASS to SRT

Converting ASS or SSA to SRT is a one-way simplification. Here is what our ASS to SRT and SSA to SRT converters do with each part of the file:

In the ASS fileIn the SRT result
Dialogue text and start/end timesKept. Times become the SRT form 00:00:04,000 and the lines are numbered in order.
Hard line breaks (\N)Converted into real line breaks.
Override tags in curly braces (italics, bold, colors, positioning, fades)Removed. The visual effect of those tags is lost, and only the plain text remains.
Styles, fonts, colors and the PlayRes canvasDiscarded, because SRT has nowhere to store them.
Comment: linesIgnored, since they are not displayed subtitles.

Because the loss is permanent, keep the original .ass file. If you later need the styling, you will need to go back to it, since no SRT contains the information required to restore it.

Where ASS is and is not supported

ASS is rendered well by desktop players that include a dedicated subtitle renderer, such as VLC, mpv and MPC-HC, and it is supported by subtitle editors like Aegisub and Subtitle Edit. It is generally not supported by web browsers' native subtitle handling, and many platforms and hardware players either ignore it or show only plain text. If your audience is not using a player known to support ASS, plan to deliver an SRT or WebVTT version too.

Frequently asked questions

What is the difference between .ass and .ssa files?
SSA is the older format and ASS is its extended successor. They share the same structure, with small differences such as the style section name and the first column of the Dialogue format (Marked in SSA, Layer in ASS). Most tools read both.
Why are ASS colors written backwards?
ASS stores colors as &HAABBGGRR, which puts blue before green before red, the reverse of the red-green-blue order used on the web. So pure red is &H000000FF.
Can I get the styling back after converting to SRT?
No. SRT cannot store fonts, colors or positions, and the converter discards them. Always keep the original ASS file if you might need the styling again.
Why does my ASS file look different in different players?
Players differ in how fully they implement the format and how they scale the canvas, and the fonts named in the styles must be installed on the viewer's system. A missing font is replaced with a fallback, which changes the look.

Try the tools mentioned here