← All articles

6 min read

ASS and SSA Subtitles: What Converting to SRT Loses

What ASS to SRT conversion discards, and the two faults that corrupt the result: assumed column order, and centisecond timestamps read as milliseconds.

Advanced SubStation Alpha, and its older SubStation Alpha sibling, are the formats used where subtitles are typeset rather than merely written. Fonts, colours, exact screen positions, karaoke timing and drawing commands all live inside the file. SRT carries none of that. So converting ASS to SRT is not really a format change, it is a decision about what to throw away, and it is worth knowing exactly what goes.

What survives

The words and the timing. Nothing else. Here is a real conversion, including a positioned and coloured cue and a hard line break:

Dialogue: 0,0:00:01.50,0:00:03.20,Default,,0,0,0,,{pos(960,200)c&H00FF00&}Look at the sky
Dialogue: 0,0:00:03.30,0:00:05.00,Default,,0,0,0,,First lineNSecond line

becomes

1
00:00:01,500 --> 00:00:03,200
Look at the sky

2
00:00:03,300 --> 00:00:05,000
First line
Second line

The override block in braces held the position and the colour, and it is gone. The \N was a hard line break and became a real one, which is correct, because SRT does express line breaks. If the styling was carrying meaning, and in typeset subtitles it often is, that meaning does not arrive in the SRT.

The column order is declared, not fixed

This is the first place naive converters break. The subtitles live under an [Events] heading, and immediately above them is a Format: line that states what the columns are:

[Events]
Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text

That line is part of the file, not part of the specification. A file that lists the columns in a different order is still perfectly valid. A converter that assumes the usual order and reads the third field as the end time will happily produce a file full of confident nonsense on any file that does not match. Read the header, or use something that does.

The timestamps are centiseconds

The second place converters break, and the harder one to spot, because the output looks plausible. An ASS timestamp is 0:00:01.50, and that final pair is hundredths of a second, not thousandths. So .50 means 500 milliseconds, not 50.

fraction   correct    read as ms   cue is early by
.05          50 ms         5 ms            45 ms
.50         500 ms        50 ms           450 ms
.99         990 ms        99 ms           891 ms

The error is never more than a second, which is exactly why it survives review. Nothing is obviously broken. The captions simply feel slightly ahead of the speaker, worst on the cues whose timings end in high fractions, and the file looks fine in a text editor. If subtitles from a converted ASS file feel subtly early, this is the first thing to check, ahead of the usual out-of-sync causes.

Not every line is a subtitle

An [Events] section can hold Comment: lines alongside Dialogue: lines. Comments are notes left by whoever made the file, translator remarks, timing markers, alternate takes, and they are not meant to be shown. A converter that treats every line under [Events]as a cue will publish someone's working notes on screen.

When not to convert at all

If the styling matters, converting to SRT is the wrong move and no tool will make it the right one. Two alternatives are usually better. Keep the ASS file and use a player or an encoder that renders it. Or, if the target is a web player, convert to WebVTT instead, which cannot do everything ASS does but can at least carry position, so a caption need not sit wherever the player defaults to. That distinction is covered in caption positioning and safe areas.

Convert to SRT when the words and timing are the point and the styling was decoration, which is the common case for a transcript, a translation base, or a platform that discards styling anyway. YouTube is one of those: it accepts many formats and applies its own presentation regardless, so styling the file for YouTube achieves nothing.

A short checklist

  1. Decide first whether the styling is decoration or meaning.
  2. Check the converter reads the Format: line rather than assuming column order.
  3. Spot-check one cue with a high fraction, such as .99, for centisecond handling.
  4. Confirm Comment: lines did not become subtitles.
  5. Use WebVTT rather than SRT if position needs to survive.

The ASS to SRT converter here reads the Format: header, treats the fraction as centiseconds, skips Comment: lines, and tells you how many cues lost styling rather than dropping it silently. If you are starting from the video rather than an existing subtitle file, the caption generator builds an editable track you can export as SRT or VTT directly.

Quick answers

What is lost converting ASS to SRT?

Fonts, colours, screen positioning, karaoke timing and drawing commands, because SRT carries no styling at all. The words and the timing survive, and hard line breaks written as \N become real line breaks. If the styling carried meaning rather than decoration, do not convert to SRT.

Why are my converted ASS subtitles slightly early?

Almost certainly centiseconds read as milliseconds. An ASS timestamp like 0:00:01.50 means 500 milliseconds, not 50. The resulting error is under one second, up to 891 milliseconds on a cue ending in .99, which is why it survives review while making captions feel subtly ahead of the speaker.

Why did my converted file show translator notes on screen?

Because an ASS Events section holds Comment: lines as well as Dialogue: lines, and a converter that treats every line as a cue publishes the working notes. Comments are annotations and should be skipped.

Subtitle StandardsSubtitle ExportSubtitle Editing

Related caption tools

More caption guides

Caption your next video with AutoCaption.

Upload a video in the browser, generate editable captions, then export subtitle files or a styled captioned video.

Open caption generator