Skip to main content
SubtitleMatrix

VTT Subtitle Format

Format conversionWebVTT (VTT)

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
&nbsp; 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
    &nbsp; 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.

Converting into this format

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.