XConvert
Downloads
Pricing

Convert TTML to CSV Online

Turn TTML subtitle files into a CSV table you can edit and reuse in your workflow, then download the converted file instantly.

Input (TTML)
Output (CSV)

How to Convert TTML to CSV Online

  1. Upload Your TTML File: Drag and drop your .ttml, .xml, or .dfxp file onto the page, click "Add Files," or paste the XML directly into the text box. Multiple files can be queued at once. Conversion runs entirely in your browser session — nothing is uploaded to a server.
  2. Confirm CSV as the Output: CSV is preselected. The converter walks every <p> cue inside <body><div>, reads each cue's begin and end attributes, flattens any inline <span> or <br/> runs into a single string, and writes one row per cue.
  3. Review the Preview (Optional): Each cue appears as a single row with three columns — Start, End, and Text. Times are normalized to HH:MM:SS,mmm (the same millisecond-precision form SRT uses), so the spreadsheet sorts chronologically out of the box.
  4. Convert and Download: Click "Convert" and grab the .csv file. Open it in Excel, Numbers, Google Sheets, or any CAT tool that ingests delimited text. No sign-up, no watermark, no email gate.

Why Convert TTML to CSV?

TTML (Timed Text Markup Language) is a W3C XML standard for subtitles and captions, adopted by Netflix, Amazon, the BBC, and most streaming pipelines because it preserves precise timing, styling, and positioning data. The trade-off is that TTML is verbose XML — translators, QC reviewers, and analysts can't open it in a familiar tool and start editing. CSV strips the markup down to start time, end time, and text, which is exactly what spreadsheet-driven workflows need:

  • Hand off to translators without breaking timing — Give a translator a CSV column of source text in Google Sheets or Excel and a column for their target translation. They can't accidentally damage <tt:p> tags, namespace declarations, or xml:id attributes, because there aren't any to touch.
  • Bulk find-and-replace across an entire episode or season — Spelling corrections, character-name standardization, brand-name updates, and forbidden-word scrubs run in seconds in a spreadsheet. Doing the same in raw TTML risks corrupting the XML.
  • Word count, reading-speed audits, and timing checks — Add a column with =LEN(text)/((end-start)*0.001) to flag cues that exceed Netflix's 17 cps reading-speed cap, or filter by duration to find cues shorter than the BBC's 1-second minimum hold.
  • Import into translation memory and CAT tools — memoQ, Trados Studio, Smartcat, and Phrase all accept CSV with configurable column mappings; CSV is the universal handoff format that survives every step of a localization pipeline.
  • Archive captions in databases or search indexes — A cues table with start_ms, end_ms, and text columns gives you queryable transcripts for full-text search, analytics, or accessibility audits — far easier than reparsing XML on every read.
  • Build datasets for ML and speech alignment — CSV is the lingua franca of pandas, R, and Hugging Face datasets; forced-alignment training, caption generation evaluation, and dialogue extraction all start from a flat cue list.

Need to round-trip back to a player-ready format afterwards? Convert the edited spreadsheet with CSV to TTML, or jump to other delivery targets via TTML to SRT, TTML to VTT, or TTML to TXT for a transcript-only export.

TTML vs CSV — Format Comparison

Property TTML CSV
Type XML-based timed text Plain-text delimited values
Standard W3C TTML2 + IMSC 1.2 (Aug 2020) RFC 4180
File extension .ttml, .xml, .dfxp .csv
Timing precision Milliseconds; supports media, clock, and frame-rate-based time bases Milliseconds via HH:MM:SS,mmm text
Styling & positioning Full — colors, fonts, alignment, regions, animations None — text only
Used by Netflix, Amazon Prime, BBC iPlayer, HBO Max, IMSC-compliant pipelines Excel, Google Sheets, CAT tools, BI pipelines
Human-editable Painful — XML namespaces, strict schema Trivial — open in any spreadsheet
Player support Browsers via JS libs, broadcast workflows, video players Not a playback format
File size (1-hour caption track) ~150–400 KB ~30–60 KB

What the Output Looks Like

xconvert emits a three-column CSV with a header row. The columns match what every subtitle-aware CAT tool and most accessibility audit tools expect.

Column Format Example
Start HH:MM:SS,mmm 00:01:23,456
End HH:MM:SS,mmm 00:01:26,789
Text UTF-8 string; multi-line cues joined with \n; commas/quotes escaped per RFC 4180 "She said, ""hello"" — and walked away."

Times use a comma decimal separator (the same form SRT uses) so the file round-trips losslessly through any SRT-aware tool. Inline TTML <br/> becomes a newline inside the quoted text cell; styling attributes (tts:color, tts:fontWeight, region) are dropped because CSV has no place to put them.

Frequently Asked Questions

Why are the styling attributes from my TTML file missing in the CSV?

CSV is a flat, three-column tabular format — it has nowhere to store TTML's tts:color, tts:fontStyle, tts:textAlign, region, or <span> runs. The converter intentionally flattens every cue to plain text so translators and analysts can work in a spreadsheet. If you need to preserve styling, convert back with CSV to TTML and re-author the styling, or keep the original TTML alongside the CSV as your timing/styling reference.

Does this handle TTML's different time formats (clock time, offset, frame-based)?

Yes. TTML's begin/end attributes accept several forms — clock time (00:01:23.456), offset (83.456s, 1500ms, 1.5h), and frame-based (00:01:23:12 with a ttp:frameRate). The parser normalizes all of them to milliseconds and emits HH:MM:SS,mmm. Frame-based timing uses the ttp:frameRate and ttp:frameRateMultiplier declared in the document head (e.g., 24000/1001 = 23.976 for film).

Will Netflix-delivered IMSC 1.2 files work?

Yes. Netflix's caption-delivery spec is IMSC 1.1/1.2 (a W3C profile of TTML2), and those files use the same <tt><body><div><p> cue structure the parser walks. Styling-only attributes (tts:extent, tts:origin, tts:displayAlign) are read and ignored — the cue text and timing pass through cleanly. Image-only IMSC profiles, which embed PNG subtitle bitmaps, can't be flattened to text and aren't supported.

How does the converter handle multi-line cues and nested <span> runs?

Each <p> becomes one CSV row. Inline <br/> tags become embedded newlines inside the quoted text field — Excel and Google Sheets honor them when you turn on text wrap. Nested <span> runs are concatenated in document order; their styling attributes are dropped, but their text content is preserved. The result is one cue per row, no matter how complex the inline markup was.

Can I edit the CSV in Excel and convert it back to TTML?

Yes — use CSV to TTML for the reverse trip. The columns the importer expects are the same three the exporter writes (Start, End, Text). Two cautions: (1) Excel sometimes "helpfully" reformats 00:01:23,456 as a number or a date — format the column as Text before pasting, or use Google Sheets which leaves it alone. (2) Round-tripping discards the original styling and regions, so if you need to deliver styled captions, edit the text in CSV but apply styling in a TTML-aware editor afterwards.

Why does my Text column contain quotation marks around some rows?

That's RFC 4180 escaping. Whenever a cue contains a comma, a literal quote, or a newline, the entire field is wrapped in double quotes, and embedded quotes are doubled (" becomes ""). Every standards-compliant CSV parser (Excel, Sheets, pandas, R, Python csv module) handles this transparently — you'll see the original text once the file is loaded. If you're hand-parsing the file, use a real CSV library rather than text.split(',').

What if my TTML file uses a different namespace prefix, like xmlns:tt?

The parser matches elements by local name (p, span, br, body, div), not by prefix, so files declared with xmlns="http://www.w3.org/ns/ttml", xmlns:tt=..., or xmlns:tts=... all parse correctly. DFXP files — Distribution Format Exchange Profile, an older TTML1 profile still common in iTunes and SMPTE-TT pipelines — work too; rename the extension to .ttml first if the picker rejects .dfxp.

Is the file uploaded anywhere?

No. The entire conversion runs in your browser using JavaScript — your TTML file is read locally, parsed in memory, and the CSV is generated as a Blob your browser downloads directly. Confidential broadcast captions, unreleased streaming content, and NDA-protected localization files never touch our servers.

What's the difference between TTML, DFXP, and IMSC?

TTML is the base W3C standard for XML timed text. DFXP (Distribution Format Exchange Profile) is an older TTML1 subset widely used by Apple iTunes and SMPTE-TT pipelines. IMSC (TTML Profiles for Internet Media Subtitles and Captions) is the modern W3C profile family — IMSC 1.0/1.1/1.2 — used by Netflix, Amazon, and most streaming services. All three share the same <tt><body><div><p> cue structure, and all three flatten to the same CSV here.

Related Convert tools
TTML ConverterConvert Ttml To SrtConvert Ttml To VttConvert Ttml To AssConvert Ttml To SsaConvert Srt To CsvConvert Vtt To CsvConvert Ass To Csv

Image Tools

Image CompressorCompress JPEGCompress PNGCompress GIFCompress WebPImage ConverterJPG ConverterImage Resizer

Video Tools

Video CompressorCompress MP4MP4 to GIFVideo to GIFVideo ConverterMP4 ConverterVideo Cutter

Audio Tools

Audio CompressorCompress MP3Compress WAVAudio ConverterMP3 ConverterFLAC to MP3Audio Cutter

Document Tools

Compress PDFMerge Images to PDFSplit PDFPDF to JPGUnzip FilesRAR Extractor

Converters

Time Zone ConverterMeeting PlannerIST to ESTTime Zone AbbreviationsUnit ConverterLength ConverterFlow Rate Converter
© 2026 XConvert.com. All Rights Reserved.
About UsPrivacy PolicyTerms of ServiceContactHelp Us Grow