Skip to content

TTML to STL Subtitle Converter

Convert TTML cue timing and text into Spruce-style text STL entries.

Drag & drop your TTML file here

or click to browse

Supports .ttml, .itt, .xml files up to 50 MB

Core Engine Architecture

Free Online TTML to STL Converter

This converter reads <p> cues from a TTML document and writes text-based Spruce STL output. Timing is quantized to a 29.97 fps frame grid, line breaks become vertical-bar separators, and common inline TTML tags are removed. Each output cue contains a start time, end time, and text.

Payload & Syntax Inspector

TTML to STL Code Syntax & Structure Inspection

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

Millisecond Sync
input.ttml
TTML SOURCE
<?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>
output.stl
STL RESULT
// Spruce Subtitle File
// Format: Start Time, End Time, Subtitle Text
 
00:00:01:00 , 00:00:04:00 , Hello, world!
00:00:04:15 , 00:00:08:00 , This is a subtitle file.
00:00:08:15 , 00:00:12:00 , Converted locally!
Specification Sheet

TTML vs STL Technical Specifications

Standard Compliant
Input Format

TTML

TTML

TTML (Timed Text Markup Language) is an XML subtitle format. This converter looks for <p> elements with begin and end, or begin and dur, timing attributes, and accepts second-based or clock-valued timing. Cues without a begin attribute are skipped.

Output Format

STL

STL

This output is text-based Spruce STL, not binary EBU STL. The file includes generator comments followed by start time, end time, and text entries. Timing uses SMPTE-style HH:MM:SS:FF values at 29.97 fps, and display line breaks are represented with vertical bars.

Format Differences

TTML is XML; this STL output is a plain-text cue list.
TTML timing attributes are converted to frame-based SMPTE-style timecodes.
TTML <br/> elements become vertical-bar STL separators.
TTML styling and metadata are not mapped to the STL output.

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 TTML <p> cues with begin/end or begin/dur timing
Writes text-based Spruce STL entries
Quantizes timing to a 29.97 fps frame grid
Converts cue line breaks to vertical-bar separators
Removes common inline TTML formatting tags
Processes files locally in your browser

Why Convert?

STL text entries are compact and easy to inspect as plain text.
The conversion preserves explicit start and end times.
Vertical-bar separators provide a simple line-break representation for STL text.
A Spruce-style text file can be useful when a workflow expects this layout.
Scenarios

Common Use Cases

Text STL Preparation

Create text-based Spruce-style STL entries from supported TTML cues.

Line-Break Conversion

Convert TTML line breaks into STL vertical-bar separators.

Timing Conversion

Move begin and end values into frame-grid SMPTE-style timecodes.

Format Ecosystem

Related Formats

How It Works

  1. 1

    Select or drop a TTML file.

  2. 2

    The parser extracts <p> text and timing attributes.

  3. 3

    Common inline tags are removed and line breaks are retained.

  4. 4

    Timing is converted to SMPTE-style frame timecodes.

  5. 5

    Each cue is written as start, end, and pipe-separated text.

Frequently Asked Questions

No. The output is text-based Spruce STL with start, end, and text entries. Binary EBU STL is not generated.

Times are quantized to a 29.97 fps SMPTE-style frame grid. TTML millisecond precision may be adjusted to the nearest supported frame representation.

Yes. There is no registration or watermark, and conversion happens in your browser.

TTML line breaks are written as vertical-bar separators in the STL text field.

No. Common inline tags are removed and no TTML styling or metadata is mapped.

No. Processing stays in your browser and the subtitle file is not uploaded.

Ready to convert your subtitles?

Drop your TTML file here and convert to STL instantly.