TTML to SRT converter XML subtitles, ready for your editor.
To convert TTML to SRT, paste the XML or drop the .ttml, .dfxp or .xml file and download the .srt. We read every paragraph with its start and end, turn frame, tick and second timings into SRT clock time, and keep italics, bold and underline. The file comes out numbered and in UTF-8.
Free, no sign-upSecond file
For example, the video name and the version up for approval.
This text has no timings. We will build subtitles from reading speed: each line or sentence becomes a block of up to 2 lines.
The JSON has a time for every word. We cut blocks of up to 2 lines of 42 characters, at sentence ends and pauses.
Subtitle report
- Subtitles
- Duration
- Words
- Average CPS
- Max CPS
- Flagged
| # | Time | Duration | Text | Characters per line | CPS | Flags |
|---|
How to convert TTML to SRT
- 01
Paste or drop the TTML
Works with .ttml, .dfxp or .xml, in the DFXP, SMPTE-TT and IMSC profiles. We detect the encoding for you, UTF-16 included.
- 02
Keep SRT as the output
SRT is already selected. If you like, fix overlaps or strip sound descriptions such as [Music] before converting.
- 03
Download the .srt and check the report
Every subtitle shows its duration, characters per line and reading speed. Copy the result or download the file.
What is a TTML (or DFXP) file and where does it come from?
TTML is an XML subtitle format defined by the W3C. Instead of numbered blocks, it stores each line in a <p> paragraph with begin and end attributes, and it can carry styles, position regions and metadata. DFXP is the name of the first TTML profile and still shows up as a file extension; SMPTE-TT and IMSC are flavours used in broadcast and streaming.
If you have a TTML file, you probably got it from a streaming platform, a distributor, a broadcast workflow or a subtitling vendor. The trouble starts in the edit: most video editors, desktop players and social platforms expect SRT. Converting keeps the text and the timing and puts them in a format your software opens.
subtitles.ttml
<tt xmlns="http://www.w3.org/ns/ttml" xmlns:ttp="http://www.w3.org/ns/ttml#parameter" ttp:frameRate="25">
<p begin="00:01:12:12" end="00:01:15:00">
<span tts:fontStyle="italic">Remember last week's class?</span>
</p>
subtitles.srt
1
00:01:12,480 --> 00:01:15,000
<i>Remember last week's class?</i> How TTML timings become SRT timings
SRT has one way to write time: hours, minutes, seconds and milliseconds, with a comma. TTML allows several, and that is where simple converters go wrong. We read clock time with milliseconds, clock time with frames (using ttp:frameRate and frameRateMultiplier from the header) and offset times such as 1.5s, 1500ms, 30f or ticks with ttp:tickRate.
When a paragraph has begin and dur instead of end, we add the duration to the start. If the file uses frames and does not declare a rate, we count 30 frames per second, the default in the specification. Check the report: subtitles with odd durations usually mean the TTML was exported without the right rate.
| Time in the TTML | In the SRT |
|---|---|
| 00:00:01.500 | 00:00:01,500 |
| 00:00:01:12 at 25 fps | 00:00:01,480 |
| 1.5s or 1500ms | 00:00:01,500 |
| 30f at 30 fps | 00:00:01,000 |
| 15000000t, tickRate 10000000 | 00:00:01,500 |
| begin="10s" dur="2.5s" | 00:00:10,000 --> 00:00:12,500 |
What carries over to SRT and what gets left behind
SRT is much simpler than TTML, so some information has nowhere to go. What matters for most uses makes it: the text, the timing, line breaks written as <br/> and emphasis. Italics, bold and underline become <i>, <b> and <u>, whether they come from a named style in the header or from a span in the middle of a sentence.
Colors, backgrounds, font sizes and position regions are dropped, because SRT cannot store them. A subtitle that sat at the top of the screen in the TTML will show at the bottom, where the player puts it by default. If you don't want even the emphasis, tick the cleanup that removes formatting.
| In the TTML | In the SRT |
|---|---|
| <p begin end> | Numbered block with the --> arrow |
| fontStyle, fontWeight, textDecoration | <i>, <b>, <u> |
| <br/> | Line break |
| & < > | & < > |
| Color, background, size | Removed |
| Regions and position | Removed (subtitle at the bottom) |
Where to use the SRT you get from a TTML
SRT opens in Premiere Pro, DaVinci Resolve, Final Cut Pro, CapCut and VLC, and uploads to YouTube Studio and Vimeo. It is also the format most translation and subtitle review tools ask for, which makes it easy to hand the file to someone else.
Before you download, look at the report. Broadcast subtitles often have long lines and a reading speed that feels fast on social media; the report flags the blocks over 42 characters per line or 17 characters per second, so you can fix them in your editor.
More than a TTML to SRT converter. Subtitles straight from your video.
See also
Frequently asked questions
How do I convert TTML to SRT?
Paste the XML or drop the .ttml, .dfxp or .xml file, keep SRT as the output and download. Each TTML paragraph becomes a numbered SRT block with the same start and end. It is free, with no signup, and the file comes out in UTF-8.
Are DFXP and TTML the same thing?
In practice, yes. DFXP is the name of the first TTML profile, and many systems still save subtitles with the .dfxp extension. The content is the same XML with <p> paragraphs, and the converter reads both, as well as the SMPTE-TT and IMSC profiles.
Why are the timings off after converting?
It is almost always the frame rate. If the TTML writes times in frames, like 00:01:12:12, and does not declare ttp:frameRate, we count 30 frames per second, as the specification says. If your video runs at 25 or 24 fps, the subtitles drift. Fix it afterwards with the subtitle sync tool by changing the frame rate.
Do colors and positions carry over to SRT?
No. SRT has no field for color, background or screen region, so those styles are dropped and the subtitle goes back to the default position at the bottom. Italics, bold and underline do carry over, because SRT accepts the <i>, <b> and <u> tags.
I downloaded a .xml file. Is it TTML?
If it starts with a <tt> tag and has <p> paragraphs with begin and end, it is TTML and the converter reads it. An .xml from Premiere Pro or Final Cut is something else: an edit project, not subtitles, and it won't convert.
Can I go the other way, from SRT to TTML?
Yes. Use the SRT to TTML page: each block becomes a <p> paragraph with start and end in milliseconds, and italics become TTML styles. It helps when you edited the subtitles and need to send them back in the format the platform asked for.
No subtitles yet? We make the SRT from your video.
Upload the video or paste a YouTube link. We transcribe it word by word, with the timing of every line, and you download an SRT ready for your editor or for converting.
See the result on your own recording before adding a card.