Your files never leave this device — 100% in-browser

ASS to VTT Converter

Turn heavily styled ASS/SSA subtitles into clean WebVTT for browser players — dialogue and timing intact, locally converted.

Browsers can't render ASS — web players accept only WebVTT. This converter keeps dialogue and timing, strips the typesetting tags that would never render, and emits clean UTF-8 VTT ready for an HTML5 <track> element or any embedded player.

Last verified 2026-08-15 — this tool passed 79 automated end-to-end checks

→ SRT
Drop .ass / .ssa files here, or click to browse
converts to VTT · batch supported · encoding auto-detected
01 — PRIVATE
Subtitle files are parsed and rewritten entirely in your browser. Unreleased scripts and translations never touch a server.
02 — ENCODING-AWARE
UTF-8, UTF-16 and legacy EUC-KR files are detected automatically and always saved back as clean UTF-8.
03 — BATCH
Drop a whole season. Each episode converts in milliseconds and downloads separately with its cue count shown.

How to use

  1. Drop your file(s) into the box above — or click it to browse.
  2. Conversion starts immediately; the tabs switch to a different output format.
  3. Click Download on each finished file — or Download all (.zip) for a batch. Nothing was uploaded at any point.

Why web players reject your ASS file

ASS is a full typesetting system built for desktop renderers like libass — browsers have never supported it and never will. The HTML5 <track> element, Video.js, JW Player and the rest of the web stack accept exactly one caption format: WebVTT. So putting a fansub archive, a lecture recording, or any ASS-subtitled video onto the web means this conversion.

The converter parses the [Events] section honoring the declared Format: field order, strips every {\...} override tag (positions, colors, karaoke — none of it renders in a browser anyway), converts \N to line breaks, re-sorts cues chronologically, and writes centisecond ASS timing as VTT's dot-millisecond timestamps.

What survives ASS → VTT
FeatureIn ASSAfter conversion
Dialogue textYesKept exactly (commas included)
TimingCentisecondsDot milliseconds, same values
Line breaks \NYesReal line breaks
Styling {\i1}, colors, fontsYesStripped (no browser support)
Positioning {\pos}YesRemoved — cues render at player default
Chronological orderOften unsortedSorted

What about VTT styling?

WebVTT does have its own styling system (cue settings and ::cue CSS), but there is no faithful mapping from ASS typesetting — a {\pos(400,570)} sign translated literally would land in the wrong place on every player. This converter deliberately outputs plain, maximally compatible cues and leaves styling to your player's CSS, which is the approach that actually works across browsers.

When NOT to convert ASS to VTT

  • Desktop playback — VLC and mpv render ASS natively with full styling; converting loses the typesetting for nothing.
  • Karaoke and sign-heavy anime releases — the visual identity lives in the ASS tags; on the web those effects are gone regardless, but know what you're giving up.
  • If your target accepts SRT — some platforms take SRT uploads; ASS → SRT is the more portable choice there.

Frequently asked questions

Will my sign translations show up?

The text survives, but positioned signs render as normal bottom captions — browsers cannot reproduce ASS typesetting. Lines that were pure drawing commands are dropped.

Why plain cues instead of VTT positioning?

ASS coordinates are resolution-relative and player-specific; literal translation misplaces them everywhere. Plain cues + your own ::cue CSS is the combination that renders consistently.

Does a nonstandard Format: line break parsing?

No — the converter reads the declared field order rather than assuming the default column layout.