ASS Subtitle Styling: A Beginner's Guide | AllSubConverter
Most subtitle formats are content to be plain text with timestamps. ASS (Advanced SubStation Alpha) is different — it is a full styling language for subtitles, with control over fonts, colors, outlines, shadows, on-screen position, and even per-syllable karaoke animation. It is the format behind anime fansubs, karaoke videos, and a large share of professional video post-production. This guide walks through the essentials so you can style subtitles that look polished instead of default.
Turn plain SRT subtitles into a styled ASS file you can customize — free, in your browser.
Convert SRT to ASS →How an ASS file is organized
An ASS file has two parts that matter for styling. The first is the [V4+ Styles] section, which defines reusable style templates — think of each style as a CSS class for your subtitles. The second is the [Events] section, where each dialogue line references one of those styles by name and can layer extra formatting on top with inline override tags.
A style definition is one long comma-separated line. Here is a typical default style:
[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,48,&H00FFFFFF,&H000000FF,&H00000000,&H80000000,0,0,0,0,100,100,0,0,1,2,1,2,30,30,40,1
It looks intimidating, but each field controls exactly one visual property. The rest of this guide breaks them into groups.
Colors — primary, outline, and back
ASS uses four color fields per style, and the most important thing to know up front is that they are BGR, not RGB, with an alpha channel in front. A color code looks like &HAABBGGRR, where AA is alpha (00 = fully opaque, FF = fully transparent).
- PrimaryColour — the main fill color of the text. This is what you usually think of as "the subtitle color."
- SecondaryColour — used for karaoke: the color a syllable starts as before it gets highlighted.
- OutlineColour — the color of the border drawn around each glyph.
- BackColour — the color of the drop shadow, or the background box if you use BorderStyle 3.
| Code | Meaning |
|---|---|
&H00FFFFFF | Opaque white |
&H000000FF | Opaque red (BGR!) |
&H0000FF00 | Opaque green |
&H00FF0000 | Opaque blue |
&H80FFFFFF | Semi-transparent white |
&HFFFFFFFF | Fully transparent |
Common trap: because ASS stores colors as BGR,
&H0000FFis blue, not red. If your subtitles come out the wrong color, swap the red and blue bytes and try again.
Fonts, weight, and slant
The Fontname and Fontsize fields do what you would expect. Bold, Italic, Underline, and StrikeOut are binary — use -1 for on and 0 for off. Reliable cross-platform font choices include Arial, Helvetica, Open Sans, Roboto, and Noto Sans; if you pick something unusual, the player will fall back to a default when the font is not installed.
Style: Default,Arial,48,... (normal)
Style: Title,Bebas Neue,64,... (large heading)
Style: Whisper,Arial,42,...,-1 (the -1 turns Bold on)
Outlines and shadows for readability
Two fields control the edge treatment of your text. Outline is the border thickness in pixels around each glyph, and Shadow is how far the drop shadow is offset. BorderStyle decides what those fields mean: 1 gives you outline plus shadow (the default, and the most readable), while 3 turns the area behind the text into an opaque box.
Outline: 2, Shadow: 1— clean, readable default for most content.Outline: 4, Shadow: 2— heavy border for low-contrast footage.BorderStyle: 3— solid background box, good for captions over busy imagery.
Alignment and positioning
The Alignment field uses numpad notation, where the numbers 1 through 9 map to screen positions exactly like a keyboard numpad:
7 8 9 (top row)
4 5 6 (middle)
1 2 3 (bottom row)
2 is the classic bottom-center subtitle position, 8 puts text at the top (useful for titles or speaker labels), and 5 centers text on screen. The MarginL, MarginR, and MarginV fields then nudge text inward from the alignment edge in pixels.
Five ready-to-use styles
Here are five practical styles you can paste straight into a [V4+ Styles] section. Each one is a complete Style: line.
- Clean modern subtitle — white text, black 2px outline, subtle shadow, bottom center:
Style: Modern,Arial,52,&H00FFFFFF,&H000000FF,&H00000000,&H80000000,0,0,0,0,100,100,0,0,1,2,1,2,30,30,40,1 - Karaoke highlight — bold, thick outline, ready for color-fill effects:
Style: Karaoke,Arial,48,&H00FFFFFF,&H0000FFFF,&H00000000,&H80000000,-1,0,0,0,100,100,0,0,1,3,2,2,30,30,50,1 - Top title — large heading anchored at the top:
Style: TopTitle,Bebas Neue,64,&H00FFFFFF,&H000000FF,&H00000000,&H80000000,0,0,0,0,100,100,0,0,1,3,1,8,60,60,30,1 - Italics narration — gray italic for off-screen voiceover:
Style: Narration,Arial,42,&H00CCCCCC,&H000000FF,&H00000000,&H80000000,0,-1,0,0,100,100,0,0,1,1,1,2,40,40,35,1 - Bold yellow caption — the classic movie look:
Style: Caption,Arial Black,38,&H00FFFF00,&H000000FF,&H00000000,&H80000000,-1,0,0,0,100,100,0,0,1,2,1,2,30,30,40,1
Inline override tags
Styles apply to a whole line, but ASS also lets you override formatting mid-line with tags wrapped in curly braces. These are how you change color for a single word, nudge one line to a different position, or build karaoke timing. The table below covers the tags you will reach for most often.
| Tag | What it does | Example |
|---|---|---|
{\b1} / {\b0} | Bold on / off | {\b1}Important{\b0} |
{\i1} / {\i0} | Italic on / off | {\i1}Whisper{\i0} |
{\u1} / {\s1} | Underline / strikethrough | {\u1}Note{\u0} |
{\c&HBBGGRR&} | Set primary color (BGR) | {\c&H0000FF&}Red |
{\3c&HBBGGRR&} | Set outline color | {\3c&H000000&}Black outline |
{\fnName} | Change font | {\fnGeorgia}Serif |
{\fsN} | Change font size | {\fs64}Big |
{\anN} | Set alignment (numpad 1-9) | {\an8}Top title |
{\pos(x,y)} | Pin to exact pixel position | {\pos(320,50)}Title |
{\move(x1,y1,x2,y2)} | Animate position over the cue | {\move(50,50,300,50)} |
{\fad(in,out)} | Fade in and out (ms) | {\fad(300,200)} |
{\frxN} / {\fryN} / {\frzN} | Rotate text on an axis (degrees) | {\frz15}Tilted |
{\kN} / {\kfN} | Karaoke timing (centiseconds) | {\kf20}Word |
Animation basics
Three tags carry most of the motion in ASS. {\fad(in,out)} fades a line in and out over a number of milliseconds — perfect for soft title appearances. {\move(...)} slides a line from one set of coordinates to another across the cue's duration, which is how you get text to drift in from the side. {\t(...)} is the general-purpose transform tag that interpolates any other tag over time, letting you grow, rotate, or recolor text mid-line.
Karaoke effects use the {\k} family. {\k20} reserves 20 centiseconds for a syllable and swaps it from the secondary color to the primary color at the right moment; {\kf} produces the smooth fill sweep most people associate with karaoke videos.
Getting started from SRT
If your subtitles are currently SRT, the fastest path to a styled result is to convert them to ASS first and then edit the [V4+ Styles] section. The conversion preserves every line and timestamp, so you only have to think about the look. We cover that end-to-end workflow in the SRT to ASS styling walkthrough.
Common mistakes to avoid
- ✅ Using RGB instead of BGR. Remember
&H0000FFis blue, not red. - ✅ Forgetting the alpha channel. Always include two alpha digits before the color.
- ✅ Over-styling. Layering transforms, rotations, and shadows on every line hurts readability — restraint reads as professional.
- ✅ Ignoring font availability. If the font is not installed on the playback machine, the player silently substitutes another.
- ✅ Not testing across players. VLC, mpv, and MPC-HC render ASS slightly differently; check your output in more than one.
Start styling your subtitles
Once you have a styled ASS file, every player that supports ASS — which is most of them — will render your subtitles exactly as you designed them. Convert your SRT to ASS, drop in one of the ready-made styles above, and iterate from there.
Last updated: March 20, 2026