Skip to content
CaptionConvert

Convert JSON to TTML

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

JSON .json

JSON gives you the cues as plain objects with start and end in milliseconds, ready for code. It also reads Whisper transcripts, which use fractional seconds.

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 JSON to TTML

  • Timestamps are converted exactly, to the millisecond.
  • 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 JSON and TTML?

JSON gives you the cues as plain objects with start and end in milliseconds, ready for code. It also reads Whisper transcripts, which use fractional seconds. 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 JSON to TTML?

JSON has no formatting tags, so there is nothing to lose. Timing is converted exactly.

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