ASS to SRT Converter

Convert Advanced SubStation subtitles to SubRip. Reads the centisecond timestamps correctly, drops the override tags, and throws away the vector drawings rather than printing their coordinates on screen.

Processed on your device — no upload

termiva subs convert film.ass --to srt
0 chars
Convert to
0 chars
cues nothing uploaded

How to use it

  1. Paste the subtitles, or choose an .ass or .ssa file.
  2. Pick SubRip or WebVTT.
  3. Copy or download the result.

How it works

Advanced SubStation Alpha is what Aegisub saves and what almost every fansub is distributed as. It is not a slightly different SubRip file — it is a different kind of file, with a script header, a style table and events that carry a layer, a style name, three margins and an effect before they get to the words. Four things have to be handled to convert ASS to SRT correctly, and most converters handle two.

The timestamps are in centiseconds. ASS writes 0:00:05.50 and means five and a half seconds. SubRip writes 00:00:05,500 and means the same thing with three digits. Hand those two digits to a millisecond parser and .50 becomes fifty thousandths — every cue in the file lands 450 milliseconds early, which is small enough to feel like sloppy timing rather than like a broken conversion.

The column order is declared, not fixed. Each events block opens with a Format: line naming its columns. SubStation Alpha v4 starts them with Marked, ASS v4+ with Layer, so every field after the first sits one place along. A converter counting positions rather than reading that line takes the start time out of the layer number and produces nothing usable from an SSA file.

Override tags are instructions, not dialogue. {\an8} moves the line to the top of the frame, {\i1} turns italics on, {\c&HFFFFFF&} sets a colour. SubRip has nowhere to put any of them, so they are removed rather than carried across — because a converter that carries them across puts {\an8} on screen as a line of the film.

Drawings are not text at all. An event wrapped in {\p1}{\p0} is a vector shape — used for signs, logos and karaoke effects — and its body is a run of coordinates. Strip only the braces and m 0 0 l 240 0 240 60 arrives in the middle of the film. The whole event is discarded, and counted in the status line so you know something was there.

Comment: lines are skipped as well. They have the same shape as a Dialogue: line and the renderer never draws them, which is why translators use them for working notes. Converting them puts the notes on screen.

A worked example

Press Load a sample. It is a five-event ASS file, and four of the five events are there to break something.

Convert it. You get three cues, not five. The Comment: line is gone because it was a note to the client, and the last event is gone because it was a rectangle rather than a sentence — the status line reads skipped 1 so that disappearance is visible rather than silent.

Look at the second cue’s timing: 00:00:05,500 --> 00:00:09,200. The ASS source said 0:00:05.50 and 0:00:09.20. Five hundred milliseconds, not fifty, and 200 rather than 20.

Its text keeps the comma in "It has been a long time," and breaks where the \N was. The comma is the one that catches naive converters: the text field is last on the line and is allowed to contain commas, so splitting the event on every comma truncates the sentence at the first one.

If the converted track is also out of sync, retime it. If it came from a fansub and the lines are long, check the line lengths — ASS files are frequently written wider than a broadcast track would allow, because the renderer that drew them was free to shrink the font.

Questions

Is my subtitle file uploaded?

No. It is read by your own browser and never leaves the device. That matters more here than in most places: a subtitle file is the complete script of a video, often one that has not been released.

What is the difference between ASS and SSA?

SSA is the older version and ASS is SubStation Alpha v4+. SSA to SRT and ASS to SRT are the same conversion here. The practical difference is that their events declare different columns — SSA begins with Marked, ASS with Layer — so the column order has to be read from the Format line rather than assumed.

Why does the converted file have fewer cues than the original?

Comment lines and events that were only a vector drawing are removed. Neither of them is dialogue: a comment is a note the renderer never draws, and a drawing is a shape whose text is a list of coordinates. The number removed is shown in the status line.

Does it keep the styling, colours and positions?

No, and nothing can. SubRip holds a start, an end and some text, and there is nowhere in it for a font, a colour or a position. They are removed rather than written out as literal text, which is what a converter that tries to keep them ends up doing.

Can I convert SRT back to ASS?

Not here. Writing an ASS file means writing a script header and a style table, and inventing those from a SubRip file would be presenting a guess as data. Aegisub will import a SubRip file and give you real styles to work with.

What happens to italics?

The ASS tags for them are removed. Converting {\i1}word{\i0} into <i>word</i> is possible in principle, but the tag can be opened in one event and closed in another, and reconstructing that across a file is where converters start producing italics that never end.

Why are my timings slightly early in other converters?

Because ASS uses two digits after the full stop and they are centiseconds. A converter that treats them as milliseconds reads 0:00:05.50 as 5.05 seconds instead of 5.5, so the whole track sits about half a second early.

Can it read a file with Windows line endings or a byte-order mark?

Yes. CRLF, LF and a lone CR are normalised on the way in, and a byte-order mark is removed before anything else — it is invisible in every editor and attaches itself to the first line of the file.

Is ASS to SRT Converter free to use online?

Yes — free, with no account, no daily limit and no watermark. It runs online in your browser, and because the work happens on your own device it keeps working offline once the page has loaded.

Reading