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 |
| Header | Yes — first line must be WEBVTT | No header |
| Timestamp separator | Period: 00:00:01.000 | Comma: 00:00:01,000 |
| Web / HTML5 | Native <track> support | Widely supported but not the "native" web standard |
| Styling | Cue settings + optional CSS classes | Very 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:
- An optional identifier line (some tools omit this)
- A timing line:
start --> end - One or more lines of payload (the visible text, or nested spans for styling)
- 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
- Create a new text file
- First line:
WEBVTT - Leave a blank line
- For each cue: optional ID line, timing line
HH:MM:SS.mmm --> HH:MM:SS.mmm, then text, then a blank line - Save as
.vttwith 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
WEBVTTheader 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.