Skip to main content
SubtitleMatrix

SRT to ASS

Format conversionSubRip (SRT)
Or paste subtitle text

What this conversion changes

1 thing is dropped or needs a decision

  • Precision

    timing precision — the output's clock is coarser, so every timestamp is rounded to the nearest 10 ms

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 rewrites an SRT file as an Advanced SubStation Alpha script. The two formats disagree about what a subtitle is: SRT is a list of cues with timestamps, while ASS is a script with a header, a table of styles and a list of Dialogue lines. So each cue becomes one Dialogue line, pointed at a single style, and the timings are rewritten in ASS notation: 0:00:01.00 rather than 00:00:01,000, because ASS counts hundredths of a second where SRT counts milliseconds.

Formatting is translated rather than pasted in. A run of italics in the source becomes an ASS override code that is switched on at the start of the run and off again at the end, and the same goes for bold. A line break inside a cue becomes the ASS line-break code, so two lines stay two lines inside one event instead of becoming two cues that happen to sit next to each other. What SRT has no way to say — a font, a position, a border — is not invented on your behalf; you get a clean script with one usable style, ready to restyle in any ASS editor.

One file or a whole season, no frame rate to work out (both formats store clock time), and nothing leaves your machine.

Examples

A typical SRT file, converted to ASS

Input

1
00:00:01,000 --> 00:00:03,500
Hello there.

2
00:00:03,500 --> 00:00:06,000
<i>Whispering</i> now.
And a second line.

3
00:00:06,000 --> 00:00:09,250
<b>Bold</b> statement.

Output

[Script Info]
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,&H00000000,0,0,0,0,100,100,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:03.50,Default,,0,0,0,,Hello there.
Dialogue: 0,0:00:03.50,0:00:06.00,Default,,0,0,0,,{\i1}Whispering{\i0} now.\NAnd a second line.
Dialogue: 0,0:00:06.00,0:00:09.25,Default,,0,0,0,,{\b1}Bold{\b0} statement.

Dropped in this output: precision. Everything else matches line for line.

The same conversion on an awkward input

Input

1
0:00:01,00 --> 0:00:03,500
<B>Bold</B> and <I>italic</I>.


2
00:00:03,500 --> 00:00:06,000


3
00:00:08,000 --> 00:00:09,000
Last one.

Output

[Script Info]
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,&H00000000,0,0,0,0,100,100,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:03.50,Default,,0,0,0,,{\b1}Bold{\b0} and {\i1}italic{\i0}.
Dialogue: 0,0:00:03.50,0:00:06.00,Default,,0,0,0,,
Dialogue: 0,0:00:08.00,0:00:09.00,Default,,0,0,0,,Last one.

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 does the output have a style table I never asked for?

Because ASS has no such thing as an unstyled cue. Every Dialogue line points at a style, so the script has to declare at least one. The converter creates a single style called Default — Arial, size 20, white with a dark outline — and points every line at it. Change that one row in the header and the whole file changes with it.

What does the number after the decimal point mean?

Hundredths of a second. ASS stores time to the centisecond, so a start at 00:00:01,250 in SRT is written 0:00:01.25. That is the finest resolution the format has; nothing subtler was in your file to begin with.

How do my italic and bold tags come across?

As real ASS styling. A run of italics becomes an italic override code around that run, and bold becomes a bold override. An ASS editor will show them as styling rather than as leftover markup, which is the difference between a script that opens cleanly and one that opens full of stray characters.

Is a hard line break in a cue preserved?

Yes, as the ASS line-break code. Two lines inside one SRT cue stay two lines inside one Dialogue event, so the timing of the second line is still the timing of the cue.

Will the output still line up with the same video?

Yes. Nothing here shifts or rescales time. The first cue starts at the same moment and the last one ends at the same moment; only what surrounds the words has changed.

Related tools