An ASS file has three sections:
[Script Info]
Title: Example Script
ScriptType: v4.00+
Collisions: Normal
PlayResX: 1920
PlayResY: 1080
Timer: 100.0000
[V4+ Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, ...
Style: Default, Arial, 60, &H00FFFFFF, &H000000FF, &H00000000, &H00000000, 0, 0, ...
[Events]
Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: 0, 0:00:00.00, 0:00:03.00, Default, , 0, 0, 0, , Hello world!
The [V4+ Styles] section defines named styles (Default, Caption, Sign, etc.). The [Events] section is the actual dialogue with timestamps.
Karaoke is the killer feature for ASS:
{\k50} - syllable lasts 50 hundredths of a second (0.5s)
{\K50} - syllable highlights with sweep effect over 0.5s
{\kf50} - syllable highlights with fade effect over 0.5s
{\ko50} - syllable highlights with outline effect over 0.5s
For a song lyric:
Dialogue: 0, 0:00:00.00, 0:00:08.00, KaraokeStyle, , 0, 0, 0, ,
{\k20}Hel{\k15}lo {\k30}world {\k40}there
Each syllable highlights at its specified duration. The result: as the audio plays, each syllable lights up in sync with the singing.
For playing back with karaoke aware of timing, see SRT vs VTT vs ASS.
ASS styles control appearance:
Style: SongTitle, Impact, 80, &H00FFFFFF, &H000000FF, &H00000000, &H80000000, 1, 0, 0, 0, 100, 100, 0, 0, 1, 3, 0, 2, 50, 50, 100, 1
Format breakdown:
- Name: SongTitle
- Font: Impact
- Size: 80
- Primary color: &H00FFFFFF (white, hex BGR + alpha)
- Secondary color: &H000000FF (red, hex BGR)
- Outline color: &H00000000 (black)
- Back color: &H80000000 (semi-transparent black)
- Bold: 1 (yes)
- Italic: 0 (no)
- Underline: 0
- StrikeOut: 0
- ScaleX: 100
- ScaleY: 100
- Spacing: 0
- Angle: 0
- BorderStyle: 1 (outline + shadow)
- Outline: 3
- Shadow: 0
- Alignment: 2 (bottom center)
- Margins: 50, 50, 100
- Encoding: 1
For most basic ASS work, the Default style with Arial 60 white is fine. Complex projects define multiple styles.
ASS colors use BGR hexadecimal (not RGB):
| Color | RGB | ASS BGR |
|---|
| White | FFFFFF | &H00FFFFFF |
| Red | FF0000 | &H000000FF |
| Green | 00FF00 | &H0000FF00 |
| Blue | 0000FF | &H00FF0000 |
| Yellow | FFFF00 | &H0000FFFF |
| Magenta | FF00FF | &H00FF00FF |
The first two hex digits are alpha (00 = opaque, FF = fully transparent), then BGR.
Animate properties over time:
{\t(0,1000,\fscx120\fscy120)}
Scale to 120% over 1000ms (1 second).
{\move(100,100,500,500)}
Move from (100,100) to (500,500) during the line's duration.
{\fad(500,500)}
Fade in 500ms, fade out 500ms.
{\frx10}
Rotate 10 degrees on X axis.
{\1c&H0000FF&}
Change primary color to red mid-line.
For complex animation, combine multiple tags:
Dialogue: 0, 0:00:00.00, 0:00:05.00, Default, , 0, 0, 0, ,
{\fad(500,500)\t(0,1000,\fscx150\fscy150)}Title
Fades in over 500ms, scales up to 150% over 1000ms, then holds.
Position with \pos:
{\pos(960,540)}Centered text
For 1920×1080 reference: x=960, y=540 is screen center.
Anchor with \an:
{\an1} // bottom left
{\an2} // bottom center (default subtitle position)
{\an3} // bottom right
{\an4} // middle left
{\an5} // middle center
{\an6} // middle right
{\an7} // top left
{\an8} // top center
{\an9} // top right
For sign-style subtitles (text overlaid on video signs/posters), use specific positions to match the sign's location.
| Tool | Cost | Use case |
|---|
| Aegisub | Free, open-source | Industry standard for fansub work |
| Subtitle Edit | Free | Simpler interface, good for basic ASS |
| Karaoke Builder Studio | Paid | Karaoke-specific authoring |
| Sub Station Alpha | Free, archived | Original (now mostly historical) |
For 95% of ASS work in 2026: Aegisub. Polished UI, karaoke timing tools, automation scripts (Lua), preview window with video.
Producing karaoke from a song:
- Import audio + video to Aegisub
- Create script-info section
- Write lyrics with timing markers
- Use Aegisub's "Karaoke Timing" tool to assign syllable timestamps
- Apply karaoke effects (sweep, fade, outline)
- Preview against the audio
- Refine syllable timing for perfect sync
- Export ASS file
For a 4-minute song with full karaoke: 6-8 hours of authoring time. Faster with experience.
ASS is mostly for soft delivery, but for platforms that strip styling:
ffmpeg -i input.mp4 -vf "ass=subtitles.ass" output.mp4
The subtitles burn into the video frames. Loses the toggle ability but ensures styling appears on every device.
For stylized subtitles destined for YouTube, TikTok, Instagram: burning is often the right choice. The platforms strip soft subtitle styling.
For broader subtitle workflow, see Subtitles Burn vs Soft Mux.
Karaoke timing off by milliseconds: human ear hears the offset. Re-time using Aegisub's "Reset Timing to Audio" feature.
Fonts missing on different player: ASS references font name; player needs the font installed. Embed fonts in MKV (MP4 doesn't support embedded fonts).
Animation looks jerky: not enough animation samples. ASS interpolation is linear; complex curves need more keyframes.
Position wrong on different aspect ratio: PlayResX/PlayResY mismatch with video. Adjust to match video resolution.
Effects strip on YouTube upload: YouTube re-encodes and strips ASS effects. Burn into video first, or accept basic SRT-equivalent rendering.
Yes. Anime fansub work, karaoke, lyric videos, and stylized subtitles all use ASS. Mainstream services use SRT/VTT but stylized work uses ASS.
Yes via VLC or MX Player. Native players (Apple TV, Samsung) don't support ASS. For native playback: convert to SRT (loses styling) or burn into video.
ffmpeg -i input.mkv -map 0:s:0 -c:s copy subtitles.ass
The 0:s:0 selects the first subtitle track. For specific track: increment the index.
Yes. Subtitle Edit and Aegisub both have "Convert to ASS" features. The result is plain styled SRT; you'd add karaoke timing or animation manually.
TTML (Timed Text Markup Language) is broadcast subtitle XML. Less stylized than ASS. Used in BBC and some broadcast workflows. For consumer/web: SRT or VTT.
YouTube auto-converts soft subtitles to its own format, losing ASS styling. For karaoke videos on YouTube: burn the ASS into video before upload.
For ASS karaoke and stylized subtitle work: Aegisub is the production tool, embed fonts in MKV, burn into video for YouTube/TikTok delivery, use SRT for sites that strip styling. Karaoke timing per-syllable produces sync that other formats can't replicate. Our video converter hub handles subtitle extraction from various sources.