Convert a TTML subtitle file to SSA format directly in your browser for quick playback and editing compatibility.
.ttml, .xml, or .dfxp file onto the page, or click "+ Add Files" to pick from your device. Batch upload is supported — convert a whole season's worth of captions in one pass. Files stay in your browser session; nothing is uploaded to a server.<p> cue to an SSA Dialogue: event under the standard [V4+ Styles] "Default" style — timing is converted from TTML's HH:MM:SS.mmm clock-time to SSA's H:MM:SS.cs (centisecond) format.[V4+ Styles] block — font, colour, outline, margins — without re-running the conversion..ssa file individually or, for batches, as a ZIP. UTF-8 with BOM is the safe default for modern players (VLC, mpv, MPC-HC). No sign-up, no watermark, no email gating.TTML (Timed Text Markup Language, a W3C standard) is the captioning format the broadcast and streaming industry hands you — Netflix, BBC, Disney+, and the FCC's "safe harbor" interchange format (SMPTE-TT) are all TTML profiles. SSA/ASS (SubStation Alpha) is what video players, fansubbers, and offline tools actually prefer: a plain INI-style file with a [V4+ Styles] section that gives you font, colour, outline, shadow, and positioning control well beyond what TTML/IMSC exposes by default.
\k, \K, \kf), typesetting (\pos, \frx, \fry, \frz), and inline overrides. TTML you pulled from a streaming service strips all of that.mkvmerge, and most players (VLC, mpv, Plex, Jellyfin, Kodi) toggle SSA tracks the same way they toggle audio tracks. TTML tracks in MKV are rarer and inconsistently supported.Need a different output? Try TTML to SRT for the most universally-supported format, TTML to VTT for HTML5 <track> elements, or TTML to ASS if you specifically want the ASS (v4+) variant. Already have SSA? Convert back with SSA to SRT or SSA to ASS.
| Property | TTML (.ttml / .xml / .dfxp) | SSA (.ssa) |
|---|---|---|
| Syntax | XML, namespaced (xmlns="http://www.w3.org/ns/ttml") |
INI-style sections ([Script Info], [V4+ Styles], [Events]) |
| Standardisation | W3C Recommendation; IMSC 1.x profile is the streaming flavour | De-facto standard, originated with SubStation Alpha (1990s); spec maintained informally |
| Time format | HH:MM:SS.mmm clock-time or <frames>f media-time |
H:MM:SS.cs (centiseconds) |
| Styling model | CSS-like inline + <styling> head section |
Reusable named styles in [V4+ Styles] + inline {\override} tags |
| Positioning | <region> + tts:origin / tts:extent |
\pos(x,y), alignment numpad codes 1–9, MarginL/R/V |
| Animation | <animate> element (limited renderer support) |
\t(start,end,override) transforms, \move(), drawing commands \p |
| File size (1 hr) | Typically 200–400 KB (XML overhead) | Typically 40–80 KB |
| Primary use case | Broadcast / streaming delivery, FCC closed-caption compliance | Fansubs, anime, karaoke, editor-friendly local playback |
| Native editor | Caption authoring tools (EZTitles, MacCaption, WinCaps) | Aegisub, Subtitle Edit |
| Player support | Browser HTML5 (partial), Netflix/Disney+ players, some smart TVs | VLC, mpv, MPC-HC, PotPlayer; any libass-based renderer |
| Profile | Source / users | What to expect when converted to SSA |
|---|---|---|
| IMSC 1.0.1 / 1.1 Text | Netflix, Disney+, Apple TV+, most modern OTT | Clean conversion — cues, basic styles, italics, line-breaks all transfer |
| IMSC 1.x Image | Subtitles delivered as PNGs inside TTML | Cannot convert to SSA losslessly — SSA is text-only; output will be empty or skip image cues |
| SMPTE-TT | US broadcast / FCC safe-harbor | Converts cleanly; SMPTE-specific extensions (e.g., smpte:backgroundImage) are dropped |
| EBU-TT (EBU-TT-D) | BBC and European broadcasters | Converts cleanly; region/positioning collapses to default style unless you re-add \pos manually |
| DFXP (legacy) | Older authoring tools, some captioning houses | Converts; positioning attributes treated as IMSC-equivalent |
| TTML2 | Newer authoring workflows | Most features convert; advanced metadata (audio descriptions, ruby annotations) drop |
SSA refers to SubStation Alpha v4 (the original 1990s spec). ASS is "Advanced SubStation Alpha" — informally called v4+ — which adds the [V4+ Styles] section (extra colour channels, BorderStyle, ScaleX/Y, etc.) and richer override tags. In practice almost every modern player and editor uses the ASS feature set even for files saved with a .ssa extension. This tool outputs the ASS-compatible structure (V4+ Styles section, modern override tags) under the .ssa filename so the file works in any libass-based renderer. If you specifically need a .ass extension, run TTML to ASS instead.
Basic styling carries over: italic, bold, underline, font colour, and line breaks map directly to SSA equivalents. Position regions in TTML (used to put captions at the top of the screen for hard-of-hearing speaker identification) are flattened to the default alignment unless you re-add {\pos(x,y)} or change the SSA Alignment value in [V4+ Styles]. Animated/rolling captions and IMSC image cues do not survive — SSA is text only.
Yes. Both services deliver IMSC 1.1 text-profile TTML, which is the well-trodden path for this conversion (the open-source ttml2ssa project by Paco8 was built specifically for Netflix/HBO/Disney+/Prime Video files). The Events section in the resulting SSA contains one Dialogue: line per TTML <p> cue, in chronological order, ready to load into Aegisub or mux into MKV.
XML is verbose: every cue carries opening/closing tags, namespaces, and styling attributes. SSA collapses all of that into one INI header plus a single Dialogue: line per cue. A 90-minute Netflix subtitle file that is 280 KB of TTML typically becomes ~55 KB of SSA — same caption content, less than a quarter of the bytes.
Browsers (Chrome, Firefox, Safari, Edge) do not play SSA natively in the HTML5 <track> element — that element wants WebVTT. For browser playback, run TTML to VTT instead, or convert the SSA output with a separate step. YouTube accepts SSA on upload but strips the styling and converts it to plain text — for YouTube captions, TTML to SRT is the better starting point.
<br/> tags?Yes. TTML <br/> and explicit line-breaks inside <p> cues become \N (hard newline) in the SSA Dialogue: text field. <span tts:fontStyle="italic"> (or <i>) becomes {\i1}...{\i0} override pairs. Bold and underline work the same way ({\b1}, {\u1}). Mixed inline styles within a single line are preserved.
For editing: install Aegisub (Windows/macOS/Linux) — it is the standard SSA/ASS editor and lets you adjust timing, fonts, and styles visually. For playback: drop the .ssa next to your video file with the same base name (e.g., episode01.mkv + episode01.ssa), and VLC/mpv/MPC-HC will pick it up automatically. Plex and Jellyfin do the same.
No. TTML-to-SSA is a pure text-format conversion that runs entirely in your browser via JavaScript — your captions never leave your device. No account is required, there is no file-count limit, no size cap beyond what your browser's memory can hold, and there is no watermark or paid tier gating the converter.
SSA files are usually saved as UTF-8 (this tool defaults to UTF-8 with BOM, which is the most compatible choice). If your player shows boxes or mojibake for CJK, Arabic, or Cyrillic text, the player may be guessing the wrong encoding — in VLC, set "Subtitles / OSD → Default encoding" to UTF-8; in mpv, add --sub-codepage=utf-8 to your config. The TTML source's encoding is preserved through the conversion regardless.