Convert ASS to SBV

Converting ASS to SBV reduces a typeset subtitle track to the times and words YouTube’s caption format holds. Everything Advanced SubStation was built for is gone, and the useful thing to understand is that it was never going to arrive: YouTube styles captions itself and lets viewers restyle them again.

  • Where it runs In your browser. The file is never uploaded.
  • Rebuilt SBV works differently from an ASS, so this is not the gradual degradation a lossy codec applies. What SBV can express is reproduced faithfully; what it has no equivalent for does not survive at all.
  • File size limit Up to 100 MB per file, free, without an account.
  • Worth knowing Positioning, fonts and effects are dropped; only the text and its timing survive.

Up to 100 files at once. Mixed formats are fine.

A typeset track meeting a platform that restyles everything

Advanced SubStation Alpha exists to control appearance. Named styles with fonts, sizes, outlines and shadows; per-line overrides for colour and position; rotation, animation, karaoke timing and vector drawings. A fansub or a well-made talk track uses most of that, and losing it to a caption format feels like the conversion’s fault.

It is not. YouTube renders captions with its own typography and offers the viewer a settings panel to change the font, the size, the colour, the background opacity and the edge style. Whatever an uploaded file says about appearance is discarded on ingest, in every accepted format. So the question this page can actually answer is not how to keep the styling — nothing keeps it — but what to do about the parts of the track that were carrying meaning rather than decoration.

Signs become captions that sit on top of the dialogue

The parts carrying meaning are the signs: a shop name, a text message on a phone screen, a chapter title, a translated caption placed next to the thing it translates. In the ASS file each is positioned precisely, often styled to resemble the original, and timed to appear while dialogue is also on screen.

After conversion they are ordinary caption lines at the bottom of the frame, and because they overlap the dialogue in time, YouTube stacks them. A scene with two people talking under a sign becomes three lines competing for the same strip of picture, and the viewer cannot tell which is speech and which is a translated notice. On a track with a handful of signs this is untidy; on a heavily typeset one it makes the captions unusable.

Burning the typesetting into the picture instead

The standard answer, and the right one for any track where the typesetting is doing work. Render the ASS into the video during encoding — `ffmpeg -i input.mkv -vf "ass=subs.ass" -c:a copy output.mp4` does it in one pass, with the styling, positioning and animation exactly as the author intended — and upload that.

Then convert only the dialogue to SBV and upload it as a caption track, so the video still has searchable, accessible, translatable text. Delete the sign lines from the ASS before converting, or from the SBV afterwards; both are plain text and both are quick. That combination gives you the typesetting the track was made for and the accessibility a caption track provides, which no single file can do on this platform.

What actually crosses from the ASS into the SBV

Three things: the text, its line structure, and its timing. The dialogue text arrives as plain characters, hard breaks written as `\N` become real line breaks that YouTube shows as two lines, and the non-breaking space `\h` becomes an ordinary space.

Everything else is dropped: the style name each line referenced, the layer, the margins, the effect field, the actor name, and every override in curly braces. The SBV has no field for any of them, which is why the format is so easy to hand-edit — an entry is a timing line and some words, and there is nothing else in the file to break.

Override tags are removed rather than left in the text

An ASS dialogue line frequently begins with a block of instructions in curly braces — a position, a colour, a fade, an animation — and may carry more mid-line. Those are stripped before the SBV is written, so what you get is the sentence rather than the sentence preceded by machine code.

That is the correct behaviour and it hides one thing worth knowing. Karaoke timing is expressed as a tag before each syllable, so a lyric written as a sequence of timed syllables collapses into the whole line appearing at once. The words are all there and the effect that made them worth timing is not. For a music video that is a real loss and the burn-in route above is the only way to keep it.

Drawing commands leave a line of numbers in the captions

ASS can draw shapes: a drawing mode tag switches the text field into a coordinate language, and the "text" that follows is a path — `m 0 0 l 100 0 100 50 0 50` and so on. Typesetters use it for masks, backgrounds behind signs, and arrows.

Stripping the tags removes the mode switch and leaves the coordinates, so those lines arrive in the SBV as captions consisting of letters and digits. They are easy to spot and should be deleted before uploading — a viewer with captions on would otherwise see a burst of numbers. Searching the converted file for lines beginning with `m ` and a digit finds nearly all of them.

Comment lines in the ASS are not converted at all

An ASS events section holds two kinds of line: `Dialogue:` and `Comment:`. Only the first is read, so working notes, alternative translations, disabled signs and the typesetter’s reminders never become captions.

That is worth knowing in both directions. It means a file that looks full in Aegisub can convert to fewer cues than expected, because a chunk of it was commented out — if the count seems low, that is the first thing to check. And it means the file can safely carry notes, which is one of the reasons a working track is kept as ASS rather than as anything else.

Column order is read from the Format line, so odd files still work

The events section declares its own column order in a `Format:` line, and files genuinely differ — the order is conventional rather than fixed, and tools that generate ASS programmatically do not always follow the convention. The reader takes the start, end and text positions from that declaration rather than counting fields.

Text is always last and may itself contain commas, so only the fields before it are split. A line of dialogue containing a list therefore survives with its commas intact, which a naive field-splitting parser would mangle. The practical consequence is that files from Aegisub, from automatic subtitle tools and from muxed sources all read the same way.

Timestamps gain a digit on the way into SBV

ASS records time to a hundredth of a second — `0:01:23.45`. SBV records thousandths — `0:01:23.450`. Every timestamp therefore gains a trailing zero and nothing moves, since the conversion is a change of precision rather than of value.

Both formats leave the hour unpadded, so a cue in the first hour begins `0:` in both. The difference in the timing line itself is that ASS spells it out as fields inside a dialogue record while SBV writes the two values separated by a comma on their own line, followed by the text. Cue order follows the file rather than the clock, which matters for a typeset track: signs and dialogue are frequently interleaved out of chronological order, and they stay that way.

Keep the ASS, and where this conversion runs

The ASS file is the master and the SBV is an export. Everything that made the track worth making lives in the source, and none of it can be recovered from the captions — so regenerate the SBV whenever the translation changes rather than editing both. If the captions are corrected inside YouTube Studio, pull the corrected SBV back out and fold the text changes into the ASS, or the two will drift apart within a month.

The conversion is plain JavaScript running in this browser tab: nothing is uploaded, no engine is downloaded, there is no account and no daily allowance, and the network tab during a conversion is how to confirm it. Unreleased translation work is exactly the kind of file people are careful with, and here there is nothing to be careful about.

How to turn a typeset ASS track into YouTube captions

  1. Delete the sign and drawing lines from the ASS, or burn them into the video first.
  2. Drop the .ass or .ssa onto this page; tags are stripped in your browser.
  3. Check the SBV for leftover coordinate lines, then upload it as a caption track.

ASS and SBV: a typesetting language against a caption list

ASS compared with SBV
ASSSBV
Full nameAdvanced SubStation AlphaYouTube Subtitle
File extension.ass, .ssa.sbv
Media typetext/x-ssatext/plain
First published20022008
Published byGoogle
LicensingOpen standardPublished, not standardised
Standing todayCurrentNiche
Opens in a browserNo browserNo browser
Considered insteadSRT, VTTSRT, VTT

Opening the result

The usual programs do not overlap: ASS opens in Aegisub and VLC, SBV in YouTube Studio and Subtitle Edit — so whoever receives the result needs something from the second list.

What each format is for

SBV comes from Google and dates from 2008. YouTube Studio and Subtitle Edit all read it.

ASS to SBV: styling, signs and uploads

Are my ASS files uploaded anywhere?

No. This conversion runs entirely inside your browser, so the file never leaves your device. You can confirm it yourself: open the network tab of your browser's developer tools and convert something. You will see the page load, plus the analytics and advertising the site is paid for with — and nothing carrying your file.

Will any of the styling survive?

None, and it could not have. YouTube renders captions with its own typography and lets the viewer choose the font, size, colour and background, so an uploaded file’s styling is ignored whatever format it is in. The loss is the platform’s rather than this conversion’s.

What happens to signs and on-screen text?

They become ordinary captions at the bottom of the frame, overlapping the dialogue that was playing at the same time. On a platform that draws captions in one place, a track full of signs reads as a jumble. Burning them into the picture is the usual answer.

Are the override tags left in the text?

No. Everything in curly braces is removed before the SBV is written, so positioning, colour, karaoke and animation commands do not appear as visible junk. The hard break \N becomes a real line break and \h becomes a space.

What about vector drawings?

A drawing is stored as a coordinate string in the text field, and stripping the tags around it leaves the numbers behind. Those lines arrive as captions full of digits and should be deleted before uploading.

Does the timing change?

Only in precision, and upwards. ASS records hundredths of a second and SBV records thousandths, so each timestamp gains a digit that is always zero. Nothing shifts.

Should I upload SBV or SRT?

SRT unless your workflow is built on SBV. YouTube takes both; SBV is what Studio exports, so it is the format to use if the captions are going to be edited there and pulled back out again.

More about these formats