Skip to main content
SubtitleMatrix

SSA to ASS

Format conversionSubStation Alpha (SSA)
Or paste subtitle text

What this conversion changes

Nothing is lost in this direction — every feature of the source format has somewhere to go in the target format.

This list comes from the capability matrix for these two formats, not from the particular file you loaded. A specific file may lose more if it uses features the format allows but the matrix does not model.

This page converts the original SubStation Alpha format into the later Advanced variant. The dialogue lines come across untouched — the override codes, the karaoke markers and the timing notation are the same in both — and the change is in the header: the script type, the styles section heading, and the set of columns each style row is written in.

V4+ added columns that V4 never had: underline, strike-out, horizontal and vertical scale, letter spacing, angle. A file converted from SSA has nothing to put in them, so they are filled with neutral values and the settings that do exist in both dialects are carried over, including the outline colour, which the older format calls tertiary and the newer one calls outline. The result is a file the current generation of editors and encoders will restyle properly, without your having to retype anything.

There is nothing to configure, and the file is processed in your browser rather than sent anywhere.

Examples

A typical SSA file, converted to ASS

Input

[Script Info]
Title: Example SSA
ScriptType: v4.00
Collisions: Normal

[V4 Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, TertiaryColour, BackColour, Bold, Italic, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, AlphaLevel, Encoding
Style: Default,Arial,20,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,1,2,2,2,10,10,10,0,1

[Events]
Format: Marked, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: Marked=0,0:00:01.00,0:00:04.00,Default,,0,0,0,,Hello there.
Dialogue: Marked=0,0:00:05.00,0:00:08.00,Default,,0,0,0,,{\i1}Italic{\i0} line.
Dialogue: Marked=0,0:00:09.00,0:00:12.00,Default,,0,0,0,,Two\Nlines

Output

[Script Info]
Title: Example SSA
ScriptType: v4.00+

[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,20,&H00FFFFFF,&H000000FF,,&H00000000,0,0,,,,,,,1,2,2,2,10,10,10,1

[Events]
Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: 0,0:00:01.00,0:00:04.00,Default,,0,0,0,,Hello there.
Dialogue: 0,0:00:05.00,0:00:08.00,Default,,0,0,0,,{\i1}Italic{\i0} line.
Dialogue: 0,0:00:09.00,0:00:12.00,Default,,0,0,0,,Two\Nlines

Nothing is dropped here: compare the two sides line for line.

The same conversion on an awkward input

Input

[Script Info]
Title: Dirty SSA
ScriptType: v4.00

[V4 Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, TertiaryColour, BackColour, Bold, Italic, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, AlphaLevel, Encoding
Style: Default,Arial,20,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,1,2,2,2,10,10,10,0,1

[Events]
Format: Marked, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Comment: Marked=0,0:00:00.00,0:00:01.00,Default,,0,0,0,,not a subtitle
Dialogue: Marked=0,0:00:01.00,0:00:04.00,Default,,0,0,0,,{\b1}Bold{\b0} and {\u1}underlined{\u0}.
Dialogue: Marked=0,0:00:05.00,0:00:08.00,Default,,0,0,0,,A soft\nbreak and a {\p1}mystery{\p0} code.

Output

[Script Info]
Title: Dirty SSA
ScriptType: v4.00+

[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,20,&H00FFFFFF,&H000000FF,,&H00000000,0,0,,,,,,,1,2,2,2,10,10,10,1

[Events]
Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: 0,0:00:01.00,0:00:04.00,Default,,0,0,0,,{\b1}Bold{\b0} and {\u1}underlined{\u0}.
Dialogue: 0,0:00:05.00,0:00:08.00,Default,,0,0,0,,A soft\Nbreak and a {\p1}mystery{\p0} code.

This is the kind of damage real files have — mixed line endings, stray whitespace, fields left empty. Compare it with the tidy example above to see what the parser forgives.

Frequently asked questions

Why convert SSA to ASS at all?

Because V4+ is what modern tools write and read. Converting gives you a file your editor will restyle and your encoder will render with the styling intact, rather than one that shows the text but ignores the style table.

Do the columns the older format lacks end up empty?

They get neutral values, which is the honest answer: there was nothing in your file to put there. Every setting the two dialects share — font, size, colours, bold, italic, alignment, margins — is carried across with its value.

Where did the tertiary colour go?

It is still there under its newer name. The older dialect's tertiary colour and the newer dialect's outline colour describe the same thing, the line drawn around the text, and the converter maps the value to the matching column.

Are the timings or the text changed?

No. Both dialects store time the same way and both write Dialogue lines the same way, so the subtitles are byte-for-byte the same words at the same moments.

Can I convert a whole folder of scripts?

Yes. Drag in as many as you like; they are processed in order, you can cancel mid-run, and the converted files come down together in one ZIP.

Related tools