Turn a TTML subtitle file into an ASS subtitle file quickly—right in your browser, with no software installation needed.
.ttml, .dfxp, or .xml file onto the page, or click "Add Files" to browse. Batch upload is supported, so you can convert an entire season of Netflix-style subtitles in one pass. Files are processed in your browser session — nothing is sent to a server..ass). The converter reads the TTML <tt> document, walks every <p> element with begin/end attributes, and rewrites the cues into ASS Dialogue: lines under a [Script Info] / [V4+ Styles] / [Events] skeleton compatible with Aegisub, VLC, and mpv..ass file with the same base name as your source, or rename it to match your video container (movie.mkv → movie.ass) so MPC-HC, VLC, mpv, and Plex auto-load it. No sign-up, no watermark, no email gating.TTML (Timed Text Markup Language) is the W3C-standardized XML format used by Netflix, Disney+, HBO Max, Prime Video, BBC iPlayer, and most major OTT services for caption delivery. ASS (Advanced SubStation Alpha) is the format the desktop and fan-subbing world actually edits in — it ships with Aegisub, plays natively in VLC and mpv, and supports karaoke, override tags, and free-form positioning that TTML can express but few TTML-aware editors let you tweak. Converting from TTML to ASS is the standard first step whenever you need to actually work on a subtitle file pulled from a streaming source.
{\fnArial}, {\c&H00FFFF&}, or {\pos(960,1000)}.\k, \kf, or \ko tags in Aegisub to time syllables in centiseconds for music videos, anime openings, or language-learning subs.subtitles= filter and HandBrake's hardcoded-subtitle option both consume ASS directly with full styling preserved; TTML support is more limited and often falls back to plain-text rendering.Layer field in [Events].Need the reverse direction or a related format? See ASS to TTML for delivery-ready XML, TTML to SRT for a simpler player-agnostic file, or SRT to ASS when you start from plain SubRip cues.
| Property | TTML (.ttml / .xml / .dfxp) | ASS (.ass) |
|---|---|---|
| Standard | W3C Recommendation (TTML1 finalised Nov 2010; TTML2 finalised Nov 2018) | De facto, originally CS Low / "Kotus" tooling for SubStation Alpha v4+; no formal standards body |
| Syntax | XML (<tt>, <head>, <body>, <div>, <p>) |
INI-like sections: [Script Info], [V4+ Styles], [Events] |
| File extensions | .ttml, .xml, .dfxp |
.ass (and legacy .ssa for SubStation Alpha v4) |
| MIME type | application/ttml+xml |
text/x-ass (unofficial; commonly text/plain) |
| Timing precision | Tick-based, expressible to sub-millisecond | 10 ms (hundredths of a second) |
| Styling primitives | CSS-like attributes via tts: namespace, separate <style> definitions |
Style rows in [V4+ Styles] plus inline override tags ({\b1}, {\i1}, {\c&Hbbggrr&}, {\pos()}) |
| Karaoke / per-syllable timing | Not natively supported | Native via \k, \kf, \ko tags in centiseconds |
| Native player support | Streaming web players, Netflix/Disney+ pipelines, HLS via Apple's TTML support (WWDC 2017) | VLC, mpv, MPC-HC, Aegisub; most anime-community players |
| Industry use | OTT delivery, broadcast (EBU-TT, SMPTE-TT), accessibility compliance | Anime fan-subs, karaoke, typography-heavy custom subs |
| Profile / variants | DFXP, EBU-TT, SMPTE-TT, IMSC 1.0 / 1.1 (Netflix Japanese, Disney+, BBC) | SSA v4 (legacy), ASS v4+ (current), ASS v4++ (rare extensions) |
What survives a TTML-to-ASS conversion depends on which TTML features the source uses. Most streaming-ripped TTML stays close to the IMSC 1.x subset, which maps cleanly.
| TTML element / attribute | ASS equivalent | Notes |
|---|---|---|
<p begin="..." end="...">text |
Dialogue: 0,H:MM:SS.cs,H:MM:SS.cs,Default,,0,0,0,,text |
Timecodes are rounded to 10 ms; sub-millisecond precision is lost |
tts:fontStyle="italic" |
{\i1}…{\i0} |
One-to-one |
tts:fontWeight="bold" |
{\b1}…{\b0} |
One-to-one |
tts:color="#RRGGBB" |
{\c&Hbbggrr&} |
Note ASS uses BGR byte order, not RGB |
tts:textAlign="center" + region |
Style alignment field (2/5/8 for bottom/middle/top centre) | Region positioning approximated via [V4+ Styles] Alignment |
<br/> inside <p> |
\N literal in dialogue text |
Same line-break semantics |
Multiple <region> definitions |
Separate styles or {\pos(x,y)} override per cue |
Free positioning preserves screen coordinates; complex region animation is dropped |
tts:textDecoration="underline" |
{\u1}…{\u0} |
One-to-one |
| Ruby annotations (Japanese IMSC 1.1) | Not natively expressible in ASS | Ruby text is flattened into the main cue; consider keeping TTML for Japanese delivery |
SMPTE-TT animations (<animate>) |
Approximated with \t() transitions where possible |
Complex tweening is lossy |
Basic positioning does — if your TTML uses standard <region> definitions with tts:origin and tts:extent, the converter maps them to ASS \pos(x,y) overrides or to the Alignment field in [V4+ Styles]. Complex region-level animations and streaming-service custom regions are approximated; for pixel-perfect positioning of every cue you may want to open the result in Aegisub and use the visual typesetting tool to fine-tune coordinates against your video's real resolution (set PlayResX/PlayResY in [Script Info] to match).
Yes for the dialogue text and timing, with caveats for styling. Netflix delivers in TTML1 (or IMSC 1.1 for Japanese), and Disney+ standardises on IMSC 1.1; both are well-formed TTML profiles that the converter parses without trouble. What you may lose: Netflix's "forced narrative" flags, signs-and-songs region metadata, and any vendor-specific extensions sit outside the IMSC core and aren't representable in ASS — you'll get clean dialogue cues with default styling, ready to re-style in Aegisub.
ASS stores colours in BGR byte order, not RGB. A TTML tts:color="#FF0000" (red) becomes {\c&H0000FF&} in ASS — the bytes are reversed. The converter handles this automatically, but if you hand-paste a hex code from a web tool into an ASS file, you'll see blue where you expected red unless you swap the byte pairs.
Yes — tts:fontStyle="italic" becomes {\i1}…{\i0} and tts:fontWeight="bold" becomes {\b1}…{\b0} in the rewritten dialogue text. These map one-to-one and are preserved. Underline (tts:textDecoration="underline") and strike-through map similarly to {\u1} and {\s1} override tags.
SSA (SubStation Alpha v4) is the older format; ASS (Advanced SubStation Alpha, sometimes labelled SSA v4+) added the [V4+ Styles] section with extended properties (outline, shadow, alpha, BorderStyle) and override tags. This converter outputs ASS v4+ with a [V4+ Styles] block — the format Aegisub uses by default and what every modern player expects. If you specifically need legacy SSA v4, use the TTML to SSA variant instead.
ASS uses PlayResX and PlayResY in [Script Info] as the coordinate space for font sizes and \pos() overrides — everything is scaled relative to that resolution. The converter writes sensible defaults (1920×1080 or 1280×720 depending on the source), but if your video is a different resolution Aegisub offers to rescale on load. Accepting the rescale preserves visual layout; declining keeps the original numbers but may push cues off-screen.
Technically yes via ASS to TTML, but you'll lose ASS-specific features that don't have TTML equivalents — \k karaoke timings, complex \t() animations, and most override-tag styling collapses to plain text or a small subset of tts: attributes. For Netflix or Disney+ delivery, follow their published IMSC 1.1 templates rather than relying on a generic round-trip; the validator at partnerhelp.netflixstudios.com is the source of truth for what they accept.
Yes. DFXP (Distribution Format Exchange Profile) is the original name for what's now called TTML1, and the file structures are identical — only the extension differs. Rename .dfxp to .ttml if your browser refuses the upload, or paste the XML directly into the text panel. The same applies to .xml files written against the TTML schema.
No. The TTML parser and ASS writer run entirely in your browser using JavaScript — your subtitle files never leave the page. That matters if your TTML contains pre-release dialogue, embargoed translations, or anything else covered by an NDA you'd rather not pipe through a third-party server.