From a styled script to plain dialogue
An ASS file is a small document: a [Script Info] header, one or more [V4+ Styles]
definitions, and an [Events] section where each Dialogue: line carries timing, a style
name, margins, and the text — often wrapped in override tags like {\i1} or {\pos(640,80)}.
SRT keeps none of that scaffolding. This tool reads the events, converts each one, and writes a clean numbered list.
input.ass — [Events]
Dialogue: 0,0:00:04.18,0:00:07.92,Default,,0,0,0,,{\i1}Who's there?{\i0}
output.srt
1
00:00:04,180 --> 00:00:07,920
<i>Who's there?</i>
Centisecond timestamps (0:00:04.18) are expanded to SRT’s millisecond form
(00:00:04,180). The {\i1}…{\i0} italic toggle becomes <i>…</i>.
Layer, style, margin and effect fields are dropped — SRT has no place for them.
When you need SRT instead of ASS
ASS is the format of fansubs and serious typesetting, but plenty of devices choke on it. Smart-TV subtitle readers, many hardware media players, and some streaming/embedding pipelines accept only SRT. Converting gives you a file that plays everywhere, at the cost of the styling — usually an acceptable trade when the alternative is no subtitles at all.
What’s kept, what’s dropped
- Dialogue text and timing — preserved exactly; commas inside the text are handled correctly.
- Bold / italic / underline —
{\b1} {\i1} {\u1}become<b> <i> <u>. - Positioning, colour, fonts, fades, rotation, karaoke — removed, with a per-cue count so you know what changed.
- Line breaks — ASS
\\Nbecomes a real line break;\\hhard spaces become normal spaces. - Comment events — dropped (they aren’t shown dialogue).
- Encoding — legacy-encoded fansubs are detected and decoded to UTF-8 automatically.
Limits
None worth noting — it runs in your browser with no size cap, instantly, and offline after first load. If you need to keep the styling, don’t convert: edit the ASS directly, or convert the other way with SRT to ASS.