Last updated June 6, 2026 (UTC)
TTML and DFXP — broadcast-style timed text on the web
TTML (Timed Text Markup Language) and the older DFXP label describe XML-based caption documents common in broadcast, OTT, and some LMS stacks. On the open web, plain SRT or WebVTT still wins for simple uploads — but you will still see TTML when a client asks for “IMSC” or when a mastering house hands off a sidecar that is richer than a three-line SRT.
What makes TTML different from SRT or VTT
- XML tree. Cues, regions, styles, and metadata live in elements — not sequential blocks of plain text. A missing namespace or wrong profile can make a file invalid for a strict player even if it looks fine in a text editor.
- Timing vocabulary. TTML can express clock time, frame-based time, or tick-based time. If the frame rate in the document does not match the video you marry it to, cues slip — see timecode and frame rate.
- Styling and layout. TTML can describe fonts, regions, and alignment. Many web players and social uploaders ignore most of that and only ingest plain text cues. Assume styling will be flattened or dropped unless your delivery spec says otherwise.
Run your file through CaptionPass — free caption converter with a full QA report.
Convert & fix free →DFXP vs TTML in conversation
People still say “DFXP” when they mean an XML sidecar from an older broadcast toolchain. In practice, validate against what your receiver documents — YouTube, TikTok, HTML5, or an LMS — rather than assuming one TTML dialect maps cleanly to another without conversion.
Encoding and tooling
Like other text sidecars, TTML should be saved as UTF-8. If you strip namespaces or pretty-print aggressively, keep a checksum-friendly copy for regression tests — small XML edits can reorder whitespace and confuse diff-based review.
CaptionPass and TTML
CaptionPass can ingest TTML and emit platform-tuned outputs (for example SRT for short-form or WebVTT for HTML5) using presets documented in the HTTP API. When you need TTML out for an LMS pipeline, use the lms preset so the emitter targets TTML-friendly structure.
Run a TTML file through CaptionPass on the home page to see diagnostics and normalized output side by side.
Convert your captions free
Upload on CaptionPass, pick a delivery preset, and download upload-ready output with optional enhanced formatting — free tier, no account required.
Convert & fix free →More guides
- Free online caption converter — SRT, VTT, and delivery QAHow CaptionPass works as a free caption converter with upload-ready and enhanced exports, platform presets, and explainable fixes. Try the same presets on the homepage tool or Quick fix before you open a Pro project.
- SRT to VTT converter guide — headers, timestamps, and pitfallsWhen to convert SRT to WebVTT, what breaks if you rename extensions, and how to validate before HTML5 or YouTube delivery. CaptionPass converts and validates both formats in the dashboard workbench and v1 API.
- SRT vs VTT — when each format silently failsComma vs dot timestamps, WEBVTT headers, and where YouTube, TikTok, and HTML5 bite. Run either format through the homepage tool or POST /api/v1/process to see explainable fixes before delivery.
- Caption file encoding — UTF-8, BOM, and garbled textWhy uploads show mojibake or blank cues: UTF-8 vs legacy encodings and quick fixes. CaptionPass ingest reports flag encoding issues in the workbench Checks tab and v1 processing errors.
- Burned-in vs soft subtitles — what to deliver whenOpen captions burned into the picture vs separate SRT/VTT tracks — tradeoffs for editors and clients. Pro users can mux or burn-in via v1 render jobs after sidecar QA in the workbench.
- Reading speed for captions — CPS, line length, and platformsCharacters per second, lines per cue, and where YouTube, TikTok, and HTML5 push back. Platform presets in the dashboard and v1 API apply the same CPS and line-length rules automatically.
- YouTube caption upload issues — silent rejection and timingWhen Studio accepts a file but captions vanish: format, line length, drift, and how to validate before publish. Export with the YouTube preset from Deliver or v1 before you upload to Studio.
- YouTube rejected my SRT — invalid file and Studio errorsWhen YouTube Studio blocks an SRT upload: encoding, index gaps, bad timestamps, and how to validate before you retry. Quick fix and the homepage tool surface the same diagnostics as a failed v1 run.
- Caption timing drift after export from Premiere or DaVinciWhy captions slip after NLE export: frame rates, timecode starts, and how to normalize before YouTube or client delivery. Pro drift diff in the workbench compares revisions after you re-import from an NLE.
- CaptionPass vs generic subtitle convertersFormat swap tools vs delivery QA: explainable fixes, platform presets, and when each approach fits your workflow. CaptionPass adds Checks, receipts, and handoff packs on top of one-shot homepage conversions.
- CaptionPass vs Subtitle EditDesktop authoring vs delivery QA: when to use Subtitle Edit for editing and CaptionPass for platform-safe validation and API automation. Ship Subtitle Edit exports through the dashboard workbench or v1 API for final QA.
- Caption QA API for CI/CD pipelinesAutomate SRT and VTT validation in GitHub Actions or your build pipeline with POST /api/v1/process and Bearer API keys. Keys and usage meters live under dashboard Automate alongside export webhooks.
- TikTok subtitle format — short lines, CPS, and clean SRTVertical video reading speed, styling stripped on upload, and export settings that survive TikTok delivery. Use the social-shorts handoff profile or TikTok preset from Deliver before upload.
- Why your captions are not showing — a triage guideHTML5, YouTube, and TikTok checks when subtitles vanish after upload. Cross-check workbench preflight and History receipts to confirm what CaptionPass actually exported.
- Fix overlapping subtitlesWhat overlap means and why some players drop overlapping cues. CaptionPass flags overlapping_cues in Checks and can auto-fix via Fix again or v1 process.
- CaptionPass JSON IR and the developer-json presetLossless-ish cue interchange for tooling: when to use JSON IR, version tag, and how it pairs with the HTTP API. Request the developer-json preset from POST /api/v1/process or export it from the workbench.
- Timecode, frame rate, and caption syncWhy captions drift or jump: drop-frame vs non-drop, fractional frame rates, and export settings that survive upload. Pro drift panel and v1 diff help confirm sync after re-export from an NLE.
- WCAG-minded captions — reading speed, sound tags, and burned-in contrastHow WCAG 1.2.x thinking maps to real files: CPS, line length, SDH-style cues, and contrast for open captions. Platform presets in the dashboard enforce readable CPS before you hand off to clients.
- Educators & classrooms — CaptionPass for instructionPartner program for instructors: API keys, workspace pilots, Learn guides, and classroom-appropriate access. Students can start with the free homepage tool before moving to dashboard projects.
Fix in CaptionPass
Free caption converter · Homepage tool · HTTP API (v1) · Pro workspace