Skip to content
CaptionConvert

Convert VTT to TTML

Drop a .vtt file and download it as .ttml. Free, instant, and nothing is uploaded.

WebVTT .vtt

WebVTT (.vtt) is the subtitle format of the web. It is what the HTML5 track element, YouTube, Vimeo and every browser player expect, with optional positioning and styling.

TTML / DFXP .ttml

TTML (.ttml, .dfxp, .xml) is the W3C timed text standard used in broadcast and streaming, including Netflix deliveries, IMSC and EBU-TT. Verbose, but rich in styling and layout.

What changes when converting VTT to TTML

  • Timestamps are converted exactly, to the millisecond.
  • Italic, bold and underline are kept. WebVTT positioning and voice tags are dropped.
  • Line breaks inside a cue are kept.
  • The output is a minimal TTML document with one paragraph per cue, which DFXP players accept as well.

Supported formats

Every format converts to every other. Formatting is kept where the target supports it.

FormatExtensionSupportFormattingNotes
SubRip.srtRead and writeItalic, bold, underlineThe safe default when you are not sure what a player needs.
WebVTT.vttRead and writeItalic, bold, underlineCue position and alignment settings survive VTT to VTT.
Advanced SubStation Alpha.assRead and writeFull ASS stylingReads .ssa too. Writes a single default style at 1080p.
YouTube SBV.sbvRead and writeNoneSubViewer .sub files are read as SBV.
MicroDVD.subRead and writeNoneNeeds the frame rate. A wrong value makes subtitles drift.
TTML / DFXP.ttmlRead and writeItalic, bold, underlineAlso reads .dfxp and .xml. Layout and regions are dropped.
LRC lyrics.lrcRead and writeNoneNo end times. Each cue ends where the next begins.
JSON.jsonRead and writeNoneReads {start, end, text} arrays and Whisper segments.
Plain text.txtWrite onlyNoneOutput only. Timing is discarded.

Private by design

Parsing and conversion run in your browser with JavaScript. Files are read locally and never uploaded, so there is nothing to delete afterwards.

Exact timing

Timestamps convert to the millisecond. MicroDVD uses the frame rate you set, and ASS rounds to the centiseconds it supports.

Fix sync as you go

Shift every cue earlier or later in milliseconds, and strip formatting tags when a player shows them as raw text.

Questions

Is CaptionConvert free?

Yes. There are no limits, accounts or watermarks. Convert as many files as you like, as often as you like.

Are my subtitle files uploaded anywhere?

No. The conversion runs in your browser with JavaScript. Files are read on your device and nothing is sent to a server, so there is nothing to delete afterwards.

What is the difference between VTT and TTML?

WebVTT (.vtt) is the subtitle format of the web. It is what the HTML5 track element, YouTube, Vimeo and every browser player expect, with optional positioning and styling. TTML (.ttml, .dfxp, .xml) is the W3C timed text standard used in broadcast and streaming, including Netflix deliveries, IMSC and EBU-TT. Verbose, but rich in styling and layout.

Is formatting kept when converting VTT to TTML?

Italic, bold and underline are kept. WebVTT positioning and voice tags are dropped.

How do I fix subtitles that are out of sync?

Use the Shift field. Enter a positive number of milliseconds to delay every cue, or a negative number to bring them earlier, then download. 1000 ms is one second.

All conversions