VTT Subtitle Format
What this format can express
- Text styling
- Bold and italic
- On-screen positioning
- No
- Karaoke timing
- No
- Line breaks inside a cue
- Yes
- Timeline
- Start and end time for every cue
- Timing resolution
- 1 ms
- Timing stored as frame numbers
- No
- Right-to-left text
- Yes
Examples
A typical WebVTT file, and what is read out of it
File
WEBVTT
intro
00:00:01.000 --> 00:00:04.000
Hello there.
00:00:04.500 --> 00:00:08.000 align:start position:10%
Second line with <i>italics</i>.
What it holds
2 cues, 2 lines of text
00:00:01.000 → 00:00:04.000
Hello there.
00:00:04.500 → 00:00:08.000
Second line with italics. [italic ×1]
[settings align:start position:10%]
Outside the cues:
header "WEBVTT"The right-hand side is not a converted file — it is what this site reads out of the left-hand side, and what every conversion of that file starts from.
An awkward WebVTT file, and what is still read out of it
File
WEBVTT - boundary sample
NOTE a comment
spanning two lines
STYLE
::cue { color: red }
REGION
id:fred
width:40%
00:01.000 --> 00:03.000
Hours-less timecode with <b>bold</b> and <v Roger>a voice tag.
00:05.000 --> 00:04.000
End before start.
NOTE between cues
00:07.000 --> 00:09.000
entities stay literal.
00:10.000 --> oops
Unreadable end time.
NOTE trailing
What it holds
3 cues, 3 lines of text
00:00:01.000 → 00:00:03.000
Hours-less timecode with bold and <v Roger>a voice tag. [bold ×1]
00:00:05.000 → 00:00:05.001
End before start.
00:00:07.000 → 00:00:09.000
entities stay literal.
Outside the cues:
header "WEBVTT - boundary sample"
blocks NOTE ×3, STYLE, REGION
Reported while reading — repaired or skipped, never silently:
1 × blocks that were neither a cue nor a NOTE/STYLE/REGION block (they were skipped)
1 × cues whose end time was not after their start time (they were given a 1ms duration)Real files arrive with a byte-order mark, Windows line endings, a stray line before a timecode, or a timecode that cannot be read at all. None of it throws: whatever cannot be understood is reported rather than dropped in silence.
Convert WebVTT (VTT) to another format
Each of these runs entirely in your browser. The labels say what that direction costs before you open it.
- Precision
- Format-specific content
- Styling
- Format-specific content
- Format-specific content
- Timing
- Styling
- Precision
- Format-specific content
- Styling
- Frame rate
- Format-specific content
- Styling
- Format-specific content
- Format-specific content
- Styling
- Format-specific content
- Precision
- Format-specific content
- Format-specific content
- Timing
- Styling
- Line breaks
- Format-specific content
Converting into this format
- SubRip (SRT) → WebVTT (VTT)
- Advanced SubStation Alpha (ASS) → WebVTT (VTT)
- SubStation Alpha (SSA) → WebVTT (VTT)
- YouTube SBV → WebVTT (VTT)
- SAMI (SMI) → WebVTT (VTT)
- LRC Lyrics → WebVTT (VTT)
- MicroDVD → WebVTT (VTT)
- TTML (Timed Text) → WebVTT (VTT)
- SubtitleMatrix JSON → WebVTT (VTT)
- Plain Text (TXT) → WebVTT (VTT)
- CSV Spreadsheet → WebVTT (VTT)
WebVTT (VTT) is one of the subtitle formats this site handles, and this page is its reference: what it can store, what it cannot, and a page for every format you can convert it to.
The table above is the whole of it — there is no hidden feature list. When a row says no, that is exactly what is lost by converting into VTT, and each conversion page linked below says so before you open a file.
Every one of those conversions runs in your browser. Nothing is uploaded and no account is needed, which matters for material under an NDA, a patient record or a broadcast embargo.
Frequently asked questions
What is a VTT file?
`.vtt` is the web's subtitle format. An HTML5 `<track>` element loads it directly, so it is what browsers, stream players and most modern platforms expect. It carries what SRT does plus a header, optional comments and per-cue settings.
Does VTT store styling?
A little, and inside the text rather than beside it: emphasis and colour are part of the cue (`<b>`, `<i>`, `<u>`, `<font color="…">`). Nothing declares a font size, an outline or a margin, so the page displaying the subtitles decides those. A VTT file can also carry a `STYLE` block of CSS rules above the cues, and one that has it keeps it exactly as it came in.
Does every VTT cue store both a start and an end?
Yes, and a moment in a VTT file reads `00:00:04.126`. That is as fine as VTT goes — to the millisecond — and the number is exact, so a cue can be short, long, or overlap the next one without anything being implied.
Which format should I convert VTT to?
Nothing on this site takes everything a VTT file holds, so there is no free direction — each conversion page names its own list of losses. Pick the target by which of those lists you can live with, not by which format you have seen most often.
What does a VTT file keep outside its cues?
A header line, and optionally comments (`NOTE`), a style block (`STYLE`), region definitions (`REGION`) and per-cue settings such as `align`, `position` and `line`. Subtitling for the web uses those; converting into a format that has none of them drops them, and that page says so.