# WebVTT · TTML · SBV · SRT Subtitle Converter

Convert subtitles between WebVTT, TTML (with SMPTE frame timing and styles), YouTube SBV and SRT — frame-precision time axes (23.976/24/25/29.97 drop-frame/30/50/59.94 DF/60), TTML tts styles bridged to WebVTT ::cue CSS, cue-id uniqueness, and IMSC 1.0.1 compatibility checks.

> Canonical page: https://elysiatools.com/en/tools/webvtt-ttml-sbv-subtitle-time-axis-and-cue-style-converter

- **Category:** Media

- **Keywords:** subtitle converter, ttml to srt, webvtt converter, srt to vtt, youtube sbv, ttml to webvtt, drop frame timecode, imsc 1.0.1, smpte timecode subtitles, caption converter

## Overview

One cue model behind four formats: WebVTT (STYLE/REGION blocks, cue settings, unique identifiers), TTML (ttp:frameRate + frameRateMultiplier 1000:1001 + dropMode dropNTSC/dropPAL time expressions, styling inheritance through references, inline span styling), YouTube SBV and SRT. Every timestamp is normalized to milliseconds first, then re-rendered exactly in the target syntax — SRT comma milliseconds, WebVTT dotted timestamps, SBV hour-compressed form, TTML clock time or SMPTE HH:MM:SS:FF codes. The SMPTE path implements real drop-frame math: frames are dropped at the start of each minute except every tenth (2 frames at 29.97, 4 at 59.94), matching broadcast timecode to within one frame over 24 hours. Pick a frame rate and cue boundaries snap onto the frame grid with a report of how many cues moved and by how much, so a 23.976 master can round-trip to TTML SMPTE times and back without drift. TTML tts:fontFamily/textAlign/backgroundColor/color/… map to WebVTT ::cue(.class) CSS with cue text wrapped in <c.class>, and textAlign also becomes an align: cue setting; in the other direction WebVTT classes come back as TTML style references. IMSC checks cover a practical subset of the 1.0.1 profile: profile declaration, ittp:aspectRatio, frame-based times requiring ttp:frameRate, the permitted styling attribute set, and per-cue time sanity.</x-turndown>

## Inputs

- **Subtitle source** (textarea): Paste SRT / WebVTT / TTML / SBV content here…
- **Source file (optional)** (file)
- **Source format** (select)
- **Target format** (select)
- **Frame rate** (select)
- **SMPTE frame times (TTML target)** (checkbox)
- **IMSC 1.0.1 checks** (checkbox)
- **Output language (TTML)** (text): en

## When to use

- Converting broadcast TTML packages with SMPTE timecodes into web-ready WebVTT caption tracks.
- Exporting standard SRT or YouTube SBV transcripts to styled, frame-accurate TTML files for broadcast delivery.
- Eliminating timecode drift across 23.976, 24, 25, 29.97 DF, or 59.94 DF video masters by snapping cue boundaries onto exact frame grids.

## How it works

- Paste subtitle text directly into the editor or upload an SRT, WebVTT, TTML, or SBV file.
- Select your target format, frame rate, and optional parameters like SMPTE timecode generation, output language, and IMSC 1.0.1 validation.
- Review and copy the converted subtitle output with normalized timestamps, mapped cue styles, and frame alignment reports.

## Use cases

- Post-production engineers converting broadcast TTML files into WebVTT for HTML5 video players.
- Localization managers transforming translated SRT files into IMSC 1.0.1 compliant TTML delivery packages.
- Content creators converting YouTube SBV caption files into standard SRT or WebVTT subtitles.

## Frequently asked questions

### How does the converter handle drop-frame timecodes?

It calculates true drop-frame intervals for 29.97 DF and 59.94 DF, omitting frame numbers at minute boundaries (except every tenth minute) to match broadcast timecode.

### How are TTML styles converted to WebVTT?

TTML styling attributes like colors and font families are mapped into WebVTT ::cue CSS blocks, and cue text is wrapped in matching class spans.

### What is verified during IMSC 1.0.1 checks?

The validator checks profile declarations, frame-rate definitions, aspect ratio parameters, permitted style attributes, and per-cue chronological consistency.

### Which subtitle formats are supported?

The tool supports bidirectional conversion among SRT, WebVTT, TTML (SMPTE and clock time), and YouTube SBV formats.

### Can I upload subtitle files directly?

Yes, you can upload .srt, .vtt, .ttml, or plain text files up to 5 MB or paste subtitle text into the input field.

## Related tools

- [Convert SVG to JPG](https://elysiatools.com/en/tools/svg-to-jpg): Convert SVG vector graphics to JPG raster format with customizable resolution, quality, and background options
- [Convert SVG to PNG](https://elysiatools.com/en/tools/svg-to-png): Convert SVG vector graphics to PNG raster format with customizable resolution, quality, and transparency options
- [Convert SVG to WebP](https://elysiatools.com/en/tools/svg-to-webp): Convert SVG vector graphics to WebP raster format with modern compression and transparency support
- [GraphML / GEXF / Edge List Network Converter](https://elysiatools.com/en/tools/graphml-gexf-edge-list-network-converter): Convert GraphML, GEXF, DOT, adjacency matrices, and edge-list CSV with network metrics and preview
- [PDF Header/Footer Snippets](https://elysiatools.com/en/tools/pdf-header-footer-snippets): Convert HTML to PDF with reusable logo, title, and date snippets
- [XLSX CSV Batch Converter](https://elysiatools.com/en/tools/xlsx-csv-batch-converter): Batch convert CSV/TSV to XLSX or convert XLSX back to CSV/TSV with delimiter and encoding handling
- [Data URI Generator](https://elysiatools.com/en/tools/data-uri-generator): Convert files into Data URIs (Base64 or percent-encoded) for inlining images, fonts, and assets directly into HTML, CSS, or Markdown
- [Word Text Extractor](https://elysiatools.com/en/tools/word-text-extractor): Extract text content from Word documents with support for formatting options, paragraph selection, and multi-language processing

## Samples

- [Text Case Format Samples](https://elysiatools.com/en/samples/text-case-formats): Examples of different text case formats: camelCase, snake_case, kebab-case, PascalCase, and more
- [Nginx Log Parser Samples](https://elysiatools.com/en/samples/nginx-log-samples): Comprehensive Nginx log samples for testing log-parser tool, including access logs and error logs with various formats and scenarios
- [Android Serialization Java Samples](https://elysiatools.com/en/samples/android-serialization-java): Android Java serialization examples including JSON serialization, deserialization, and XML parsing
- [Android Serialization Kotlin Samples](https://elysiatools.com/en/samples/android-serialization-kotlin): Android Kotlin serialization examples including JSON serialization, deserialization, and XML parsing
