Turn TTML subtitle files into SUB format in a few clicks—upload your TTML, convert, then download the SUB file.
.ttml, .xml, or .dfxp file or click "Add Files" to pick it from disk. You can also paste the XML directly into the editor. Batch is supported — queue multiple TTML tracks (IMSC, EBU-TT-D, iTT, SMPTE-TT) and convert them in one pass. Files never leave your browser session..sub — time-based cues with HH:MM:SS.cc start/end stamps and an [INFORMATION] header — not the legacy MicroDVD frame-numbered variant that drifts when the video frame rate changes.<span tts:fontStyle="italic"> / tts:fontWeight="bold" runs (mapped to <i> / <b>). It drops <region>, tts:textAlign, tts:color, tts:backgroundColor, multi-track metadata, and any nested <set> animations — SubViewer has no slot for those..sub ready for VLC, MPC-HC, KMPlayer, or DVD-authoring tools.TTML is the W3C-standardised XML format that broadcast and streaming workflows rely on — Netflix, Apple iTT, Amazon, EBU broadcasters, and ATSC/DVB systems all consume some flavour of it. SubViewer SUB is a much older desktop-player sidecar format that predates TTML by roughly a decade and has almost no overlap with the modern streaming stack. If you've pulled a TTML track out of a broadcast deliverable, a YouTube/Netflix download, or a captioning tool and now need it to load in a desktop player or burn to disc, conversion is the only path. Common reasons people make this switch:
.sub from the video folder. VLC supports both SubViewer and MicroDVD; MPC-HC and KMPlayer ship with strong SubViewer compatibility, which is why XConvert writes the SubViewer flavour by default..sub as a soft-subtitle source. They typically can't parse a TTML XML tree directly, so a flat time-stamped .sub is the practical hand-off format.<region> blocks, IMSC-specific styling, ruby text, and timing metadata that mean nothing to a desktop player. Converting to SUB produces a clean caption-text track that plays consistently everywhere..sub natively. Editors and proofreaders who don't want to wade through XML tags often prefer the much simpler SubViewer structure..srt or .sub next to the video file on a USB drive. TTML support on consumer hardware that old is essentially nonexistent.If you'd rather keep TTML's styling and positioning intact, ASS/SSA is the closer match — it supports inline colour, font, and on-screen positioning. SUB is the right pick when "plays in any old desktop player" matters more than "preserves the original styling."
| Property | TTML (Timed Text Markup Language) | SUB (SubViewer 2.0) |
|---|---|---|
| Standard / origin | W3C Recommendation; TTML1 finalised Nov 2010, TTML2 finalised Nov 2018 | SubViewer player format, released circa 1999-2000 |
| Structure | XML document with <tt>, <head>, <body>, <div>, <p>, <span> |
Plain-text cue blocks under an [INFORMATION] header |
| Timing model | Time-based, supports clock-time, offset-time, SMPTE timecode | Time-based, HH:MM:SS.cc (centiseconds) only |
| FPS dependent? | No (clock-time profile); SMPTE-timecode profile encodes the rate | No (this is SubViewer; MicroDVD .sub IS frame-based) |
| Styling | CSS-like (tts:color, tts:fontFamily, tts:fontSize, tts:textAlign) |
Basic <b>, <i>, <u> only |
| Positioning / regions | Yes (<region>, tts:origin, tts:extent) |
None |
| Multiple language tracks | Yes (xml:lang per <div> or document) |
No — one file per language |
| Typical adopters | Netflix (IMSC 1.1), Apple iTT, BBC iPlayer (EBU-TT-D), broadcast (SMPTE-TT) | VLC, MPC-HC, KMPlayer, DivX/legacy desktop players, DVD authoring |
| File size for the same track | Larger (XML overhead, styling, regions) | Much smaller (plain text only) |
.sub — Know Which One You NeedThe .sub extension is shared by two unrelated formats. XConvert writes the SubViewer flavour by default because it's FPS-independent and the modern default for .sub. Here's how to tell them apart:
| Flavour | Timing | First-line marker | Behaviour at 23.976 vs 25 fps |
|---|---|---|---|
| SubViewer 2.0 | 00:01:23.45,00:01:25.12 (centiseconds) |
[INFORMATION] header |
Identical — FPS-independent |
| MicroDVD | {1000}{1200}Text (frame numbers) |
{1}{1}23.976 or similar fps marker |
Drifts — must be re-converted for new fps |
If your downstream player specifically requires MicroDVD-style frame stamps (rare in 2026 — mostly very old DivX-era boxes), convert to SRT first and run a separate frame-stamping pass. For VLC, MPC-HC, DVD authoring, and smart-TV USB playback, SubViewer is the right .sub.
No. SubViewer doesn't carry colour, font, on-screen positioning, or region blocks — those are TTML-only constructs. The parser preserves cue text, timing, line breaks, and inline italic / bold runs (mapping <span tts:fontStyle="italic"> to <i> and tts:fontWeight="bold" to <b>). Everything else — tts:color, tts:backgroundColor, tts:textAlign, <region> placement, <set> animations, ruby text — is dropped because SubViewer has no equivalent. If you need to keep styling and positioning, ASS/SSA is the format that maps most closely from TTML.
The common ones used in the wild: plain TTML1, TTML2, IMSC 1 / IMSC 1.1 (used by Netflix's Japanese delivery pipeline, with TTML1 for other languages), EBU-TT-D (the BBC/EBU broadcast profile), Apple iTT, and SMPTE-TT. File extensions in the wild include .ttml, .xml, .dfxp, and .itt — XConvert reads them all and writes a single SubViewer .sub for each. Profile-specific extensions (e.g., IMSC's <image> regions for image-based subtitles, SMPTE-TT's Base64-tunnelled legacy data) are not converted; only text cues come through.
00:01:23:12) — will the cues line up?Yes. The parser detects SMPTE-timecode timing and converts it to wall-clock time using the rate declared in the document's ttp:frameRate attribute (commonly 24, 25, 29.97, or 30). If the frame rate isn't declared, the parser falls back to 30 fps, which can cause drift on European 25 fps content; in that case open the source TTML in a text editor and add ttp:frameRate="25" to the <tt> element before converting, or convert with the clock-time profile.
No — that's the most common mix-up because both use .sub. SubViewer uses real timestamps (HH:MM:SS.cc), so it plays at the right time regardless of whether the video is 23.976, 24, 25, 29.97, or 60 fps. MicroDVD uses frame numbers {start}{end} and DOES drift if the video frame rate changes. XConvert writes the SubViewer flavour specifically to sidestep that whole class of sync bug.
.sub?VLC reads both SubViewer and MicroDVD .sub and picks one parser based on the first line: [INFORMATION] triggers the SubViewer parser, {1}{1}... triggers MicroDVD. XConvert's output opens with [INFORMATION], so VLC reads it as SubViewer. If VLC still ignores the file, check (a) the filename matches the video (e.g., Movie.mkv and Movie.sub in the same folder), (b) the file is in the same folder as the video, and (c) "Subtitle Track" under the Video menu isn't set to "Disable." VLC's auto-load behaviour is filename-based, not content-based.
A single TTML document can carry several <div xml:lang="..."> blocks for different languages. SubViewer has no concept of multi-language packaging — one .sub file holds one language. The parser writes a separate .sub for each xml:lang it finds and suffixes the filename with the BCP-47 language tag (e.g., Movie.en.sub, Movie.es.sub, Movie.de.sub), matching the convention most media players use for picking the right sidecar subtitle.
UTF-8 by default, which handles every language including CJK, Arabic, Hebrew, Cyrillic, and emoji — important because TTML files frequently carry non-Latin scripts straight from Netflix or BBC pipelines. Some very old players (early-2000s DivX boxes, some hardware DVD players) expect ANSI / Windows-1252 and may show mojibake on UTF-8 files; in that case open the resulting .sub in a text editor that lets you re-save as the target codepage. Modern players — VLC, MPC-HC, PotPlayer, Kodi, Plex — all handle UTF-8 SubViewer correctly.
Yes. Drop the entire folder of .ttml, .xml, or .dfxp files into the queue and they all process in parallel in your browser. There's no per-file or quantity cap because nothing leaves your machine. Output filenames mirror the input (e.g., S01E01.en.ttml → S01E01.en.sub) so they auto-pair with the matching video files in players that do filename-based subtitle loading.
Technically yes — SUB-to-TTML conversion is available — but it's not a clean round-trip. The styling, regions, positioning, and metadata you lose going TTML → SUB cannot be reconstructed from a SubViewer file; reverse conversion produces a minimal TTML document with cue text and timing only. If you anticipate needing the full TTML feature set later (for re-delivery to a streamer, broadcast, or accessibility workflow), keep the original .ttml archived alongside the .sub rather than relying on round-tripping.