PST

April 11, 2026

What Is a VTT File? WebVTT Explained — Open, Edit, and Convert

Learn what VTT (WebVTT) subtitle files are, how they differ from SRT, the WEBVTT format and cues, and how to open, edit, or convert VTT for the web and video players.

If you build video on the web, work with HTML5 <video>, or export captions for streaming workflows, you've almost certainly seen a VTT file. VTT is the standard timed-text format for the modern web — flexible, text-based, and designed to work alongside browsers and players that follow the WebVTT specification.

What Is a VTT File?

A VTT file (Web Video Text Tracks) is a plain-text subtitle or caption file with the .vtt extension. The format is defined by the WebVTT standard (a W3C specification). People often say "VTT" and "WebVTT" interchangeably; the file you share is usually named something like captions.vtt.

Like SRT, WebVTT stores timed text cues — what to show on screen and when. Unlike minimal SRT, WebVTT includes a required file header, uses a specific timestamp style, and supports optional features such as cue settings (position, alignment), voice labels, regions, and styling hooks that map to CSS in browser environments.

VTT vs SRT: Quick Comparison

VTT (WebVTT)SRT
Extension.vtt.srt
HeaderYes — first line must be WEBVTTNo header
Timestamp separatorPeriod: 00:00:01.000Comma: 00:00:01,000
Web / HTML5Native <track> supportWidely supported but not the "native" web standard
StylingCue settings + optional CSS classesVery limited

For YouTube or generic desktop players, SRT is often the easiest interchange format. For websites, HLS/DASH captions, or specs that ask for WebVTT, VTT is the right choice.

WebVTT File Format Explained

Header

The file must begin with the word WEBVTT (common practice is to put it on line 1, optionally followed by a header metadata line or a blank line). A blank line typically separates the header block from the first cue.

WEBVTT

Cues

Each cue usually has:

  1. An optional identifier line (some tools omit this)
  2. A timing line: start --> end
  3. One or more lines of payload (the visible text, or nested spans for styling)
  4. A blank line before the next cue

Timestamps use HH:MM:SS.mmm (hours, minutes, seconds, milliseconds with a period). Hours may be omitted in simple cases; many files use full 00:00:00.000 style for clarity.

Example:

WEBVTT

1
00:00:01.000 --> 00:00:03.500
Hello, and welcome to the video.

2
00:00:04.200 --> 00:00:07.800
Today we're going to explain
how WebVTT files work.

3
00:00:08.500 --> 00:00:11.000
Let's get started.

Identifier — Optional text on the line before the timing line (here 1, 2, 3). Unlike SRT, the identifier does not have to be a strict sequence number, but many generators still use numbers.

Timing line — Start and end times separated by -->. Optional cue settings can appear after the end time (e.g., alignment or position), separated by spaces.

Payload — The subtitle text. WebVTT allows tags such as <b>, <i>, <u>, and <c.className> for styling when the player supports them.

This structure is intentionally close to SRT so conversion between the two is straightforward — mainly the header, comma vs period in times, and occasional cue settings differ.

Optional: Notes and Chapters

Lines starting with NOTE (optionally with a space) are comments for authors; they should not be shown as subtitles. Some workflows also use WebVTT for chapter tracks, but typical subtitle files contain only timed dialogue cues.

How to Open a VTT File

VTT files are plain text. You can open them with:

  • Windows — Notepad, Notepad++, VS Code
  • macOS — TextEdit (plain text), VS Code
  • Linux — Any text editor

As with SRT and ASS, use UTF-8 encoding when saving so multilingual text stays correct.

How to Edit a VTT File

You can edit cues directly: adjust times on the --> line, change text, and keep a blank line between cues. If you add cue settings, follow the WebVTT syntax so parsers do not treat them as text.

For long files or frame-accurate work, a subtitle editor that supports WebVTT (e.g., Subtitle Edit, Aegisub with export, or online tools) is faster than hand-editing every timestamp.

How to Create a VTT File from Scratch

  1. Create a new text file
  2. First line: WEBVTT
  3. Leave a blank line
  4. For each cue: optional ID line, timing line HH:MM:SS.mmm --> HH:MM:SS.mmm, then text, then a blank line
  5. Save as .vtt with UTF-8 encoding

For automatic transcription, many tools output SRT first; you can convert SRT to VTT in one step (see below).

How to Convert VTT to SRT or Other Formats

  • VTT to SRT — Strips web-specific features and produces a widely compatible SRT file.
  • SRT to VTT — Adds the WEBVTT header and converts timestamps for web players.

If you need styled subtitles or advanced layout, you might convert between VTT and ASS:

  • VTT to ASS and ASS to VTT — Useful when moving between web captions and rich desktop/fansub workflows.

For translating subtitles while keeping timing, the Subtitle Translation Tool works with SRT and VTT files.

Common VTT File Problems and How to Fix Them

File does not load in the browser
Ensure the first line is exactly WEBVTT (no BOM issues hiding characters before it). The server should serve the file with a correct MIME type (text/vtt) when loading via <track src="...">.

Subtitles look garbled
Re-save the file as UTF-8.

Timing is wrong after conversion from SRT
Check that milliseconds use a period in VTT, not a comma. Good converters handle this automatically.

Cue settings confuse a simple player
Some players ignore cue settings; others may misparse badly formed settings. If compatibility is critical, simplify to basic start --> end lines and plain text.

VTT vs ASS

VTT targets web standards and browser rendering with optional CSS-related styling. ASS targets rich typographic control (see What is an ASS file) in players and editors that fully support Advanced SubStation Alpha. Choose VTT for HTML5 and streaming manifests; choose ASS when you need maximum styling control outside a strict web pipeline.

Summary

A VTT file is a WebVTT subtitle track: plain text with a mandatory WEBVTT header and timed cues using HH:MM:SS.mmm timestamps. It is the natural format for web video, <track> elements, and many streaming stacks, while SRT remains the lingua franca for general distribution. You can open and edit VTT in any text editor, or convert between VTT and SRT using VTT to SRT and SRT to VTT.

For context on other formats, see What is an SRT file and What is an ASS file.