Skip to content

VTT to TTML Subtitle Converter

Turn timestamped WebVTT cues into a basic TTML XML document.

Drag & drop your VTT file here

or click to browse

Supports .vtt files up to 50 MB

Core Engine Architecture

About VTT to TTML

This browser-based converter reads timestamped WebVTT cue blocks and writes a basic UTF-8 TTML document. Cue start and end times become second-based begin and end attributes, physical line breaks become <br/> elements, and XML special characters are escaped. VTT cue identifiers, settings, regions, comments, and styling are not mapped to TTML presentation metadata.

Payload & Syntax Inspector

VTT to TTML Code Syntax & Structure Inspection

Side-by-side code inspection illustrating header definitions, timestamp syntax, and cue payload formatting

Millisecond Sync
input.vtt
VTT SOURCE
WEBVTT
 
00:00:01.000 --> 00:00:04.000
Hello, world!
 
00:00:04.500 --> 00:00:08.000
This is a subtitle file.
 
00:00:08.500 --> 00:00:12.000
Converted locally!
output.ttml
TTML RESULT
<?xml version="1.0" encoding="UTF-8"?>
<tt xml:lang="en" xmlns="http://www.w3.org/ns/ttml">
<body>
<div>
<p begin="1.000s" end="4.000s">Hello, world!</p>
<p begin="4.500s" end="8.000s">This is a subtitle file.</p>
<p begin="8.500s" end="12.000s">Converted locally!</p>
</div>
</body>
</tt>
Specification Sheet

VTT vs TTML Technical Specifications

Standard Compliant
Input Format

VTT

VTT

VTT (WebVTT) is a text subtitle format for web video. A VTT file starts with a WEBVTT header and uses HH:MM:SS.mmm --> HH:MM:SS.mmm cue timing. It can also contain cue identifiers, cue settings, inline tags, NOTE blocks, regions, and style metadata.

Output Format

TTML

TTML

TTML (Timed Text Markup Language) is a W3C XML subtitle format. This converter generates a basic UTF-8 document with a default TTML namespace, xml:lang="en", body and div elements, and one <p> element per cue with second-based begin and end attributes.

Format Differences

VTT starts with a WEBVTT header; this TTML output starts with an XML declaration and <tt> root.
VTT uses HH:MM:SS.mmm cue timing; this output uses second-based begin and end attributes.
VTT cue settings and regions are discarded rather than mapped to TTML layout metadata.
VTT inline tags are escaped as literal text rather than becoming TTML spans.
VTT comments and identifiers are not carried over.
The output contains a basic TTML body without styling or profile metadata.

Conversion Troubleshooting & Gotchas

Practical solutions for player compatibility, character encoding, and timing synchronization

4 Common Gotchas
GOTCHA #1

Subtitle timing drifts or appears out of sync on media players

Video files frequently differ in framerate (e.g., 23.976 fps vs 25 fps). If the timing drifts steadily, use our Subtitle Sync tool to adjust the global offset or framerate stretch.

GOTCHA #2

Characters appear as garbled symbols or question marks (Mojibake)

Legacy files saved in Windows-1252, Shift-JIS, or GBK may render incorrectly. Our exporter standardizes output to clean UTF-8. Use our Subtitle Encoding Converter if the source file is corrupted.

GOTCHA #3

Overlapping captions when multiple speakers talk simultaneously

Different formats handle overlapping dialogue differently. If your target player cannot render stacked cues cleanly, open the file in our Subtitle Editor to adjust individual cue timings.

GOTCHA #4

Video editing software (Premiere, DaVinci, Final Cut) rejects the file

Professional NLE software enforces strict syntax rules. Our converter eliminates malformed line breaks and non-standard tags, producing clean, standardized files.

Features

Reads timestamped WebVTT cue blocks directly in your browser
Writes a basic UTF-8 TTML XML document
Converts timing to second-based begin and end attributes
Converts cue line breaks to <br/> elements
Escapes ampersands and angle brackets in text nodes
Processes files up to 50 MB without uploading them

Why Convert?

TTML stores cues as structured XML rather than WebVTT text blocks.
Some streaming, broadcast, and localization tools accept TTML input.
A basic TTML draft can be extended with profile metadata in an XML editor.
XML tools can validate and transform the timed text.
Converting locally avoids uploading program material or caption text.
Keeping VTT and TTML copies supports different delivery environments.
Scenarios

Common Use Cases

Basic TTML Draft

Create a basic TTML document from web subtitles before checking it against a target profile or workflow.

XML Interchange

Move timestamped VTT cues into a tool that accepts TTML XML input.

Text Editing

Use XML-aware tools to inspect or edit cue timing and text.

Local Conversion

Convert subtitles without uploading them to a separate conversion service.

Web and TTML Copies

Keep a VTT version for web playback while producing a basic TTML copy for another workflow.

Format Ecosystem

Related Formats

How It Works

  1. 1

    Select or drop a .vtt file; its contents stay on your device.

  2. 2

    The parser finds timestamped cue blocks and reads their text.

  3. 3

    Cue identifiers, settings, regions, comments, and CSS blocks are discarded.

  4. 4

    Start and end milliseconds become values such as begin="1.500s".

  5. 5

    Line breaks become <br/> elements and XML special characters are escaped.

  6. 6

    Each cue is written as a <p> element inside the TTML body.

Frequently Asked Questions

No. VTT cue settings, regions, CSS, and inline styling tags are not mapped to TTML styling or layout attributes. Tags inside cue text are escaped and remain literal text.

Voice tags are not converted to TTML spans. Their angle brackets are escaped, so the source markup appears as literal text in the generated <p> element.

No. The generated TTML contains the XML declaration, default namespace, xml:lang="en", body, div, and timed <p> elements. It does not include head, styling, region, IMSC, ITV, or EBU-TT-D metadata.

Each cue start and end is written as a three-decimal second value, such as begin="1.500s" and end="4.000s".

No. NOTE blocks do not contain displayable cue text for this converter and are ignored.

Not by itself. Platform profiles often require additional namespaces, metadata, styling constraints, and validation. Use this basic TTML as a starting point only and check the recipient specification.

Ready to convert your subtitles?

Drop your VTT file here and convert to TTML instantly.