What Is a VTT File? Format, Structure, and Uses

You downloaded a transcript from a video platform and got a .vtt file. Or you need to add captions to an HTML5 video and someone told you the format to use. Either way, understanding what a VTT file is (and what it can actually do) will save you a lot of guesswork.
VTT stands for Video Text Tracks. It's the subtitle and caption format built for the modern web, and it's everywhere: YouTube, Vimeo, your company's intranet video player, and pretty much any HTML5 video element on the internet. If you've watched a video online with captions, a VTT file was almost certainly behind them.
A VTT file (Web Video Text Tracks) is a plain text file that syncs captions, subtitles, or chapter markers to video. Every VTT file starts with a WEBVTT header, followed by timestamped cue blocks that pair timecodes to text. It's the W3C web standard for timed text, supported natively by all major browsers.
What a VTT File Looks Like
A VTT file is just a text file with a predictable structure. Open one in any text editor and the pattern is the same every time.
The file starts with the word WEBVTT on the first line, alone. That's it. No version number, no metadata, just WEBVTT. If that line is missing, misspelled, or has even a trailing space, no browser will recognize the file.
After the header comes one or more cue blocks. Each cue block has three parts:
- An optional cue identifier (a number or a label like "intro")
- A timing line showing when the text starts and stops
- The caption text itself
A blank line separates each cue from the next. The structure looks like this:
WEBVTT
1
00:00:04.500 --> 00:00:08.000
Welcome to the tutorial.
2
00:00:08.500 --> 00:00:12.000
Today we're covering how to add captions.
The timestamp format is HH:MM:SS.mmm: hours, minutes, seconds, then milliseconds, after a period. That period is critical. SRT files use a comma (00:00:04,500); VTT uses a period. One character difference, but it breaks the file completely if you mix them up.
The Web Video Text Tracks (WebVTT) format was standardized by the W3C, with its 1.0 specification published as an official Recommendation in November 2019. It grew from earlier WHATWG work on subtitle support for HTML5 video, filling the gap left by SRT, which wasn't designed for the web. VTT files use UTF-8 text encoding and are editable in any text editor without special software. A typical 30-minute video generates a VTT file of 15,000 to 25,000 characters, well under 100 KB. All modern browsers (Chrome, Firefox, Safari, Edge) load VTT files natively through the HTML5 <track> element with no plugins required. The format supports per-cue text positioning (place captions anywhere on screen), inline CSS styling, chapter cues used by YouTube's chapter navigation, speaker identification tags (<v Name>), and metadata tracks for interactive video applications. SRT supports none of these. That capability gap is why VTT became the web standard while SRT stayed dominant in offline media players like VLC.
What VTT Files Are Used For
Subtitles and closed captions are the obvious use case, but VTT handles four distinct jobs:
Subtitles and captions. This is what most people need. Load a VTT file alongside an HTML5 video and the text appears in sync. Most web video platforms accept VTT for both subtitles (translation for hearing audiences) and closed captions (same-language accessibility for deaf or hard-of-hearing viewers).
Chapter markers. VTT can define named chapters in long videos. YouTube uses VTT-style chapter data to build the chapter navigation bar in the player timeline. Each cue becomes a chapter entry with a start time and a title.
Speaker identification. The format has a <v> tag for labeling who's talking: <v Rachel>Here's the answer.</v>. Players that support speaker labels show the name alongside the caption text. SRT has no equivalent.
Metadata tracks. VTT can carry invisible data that a video player or JavaScript uses to trigger events. A live stream might use a metadata track to display graphics or load external content at specific timestamps.
VTT vs SRT: The Main Differences
The question that comes up most is how VTT compares to SRT. The short answer: SRT has broader desktop compatibility; VTT has more features and is the native format for web video. See our full SRT vs VTT comparison for a deeper breakdown. Here are the key differences at a glance:
| Feature | VTT | SRT |
|---|---|---|
| Header required | Yes (WEBVTT) | No |
| Timestamp separator | Period (.) | Comma (,) |
| Cue IDs | Optional | Mandatory (numbers) |
| Text positioning | Yes | No |
| CSS styling | Yes | Very limited |
| Chapter tracks | Yes | No |
| Speaker tags | Yes | No |
| Browser HTML5 support | Native | Requires conversion |
| Desktop player support (VLC, Plex) | Partial | Wide |
If you're publishing captions to a website or web video player, VTT is the right choice. If you're handing off a subtitle file to someone who'll use it in VLC or a video editor, SRT is safer.
How to Get a VTT File From Your Video
Understanding the format is one thing. Actually having a VTT file you can use is another.
Write one manually. Open a text editor, type WEBVTT on line one, then add cue blocks with precise start and end times for every line of dialogue. For a 5-minute video this takes 1-2 hours. For anything longer, it's not realistic.
Download from YouTube. If the video is on YouTube, go to YouTube Studio, open the video, go to Subtitles, and download the auto-generated caption file. YouTube exports as VTT. Quality depends on audio clarity: typically 80-90% accuracy on clear speech, lower with accents or background noise.
Transcribe the video and export VTT. This is the fastest approach for most people. PixScript handles this in under two minutes. Paste a YouTube, TikTok, or Instagram Reels URL, or upload an audio or video file directly (MP3, MP4, M4A, WAV, and most other formats up to 500 MB). You get a timestamped transcript, then download it as a .vtt file, SRT file, PDF, or plain text. For non-English content, the translation feature covers 10 languages on Pro and 50+ on Business, so you can generate localized VTT files without a separate translation step.
The part that makes manually-written VTT files fail most often is bad timestamps. Transcription tools handle timestamp generation automatically, so the cues sync correctly from the start.
Common VTT File Problems
VTT files are simple, but the same handful of issues break them repeatedly:
Missing or wrong header. The file must start with exactly WEBVTT on the first line, uppercase, nothing else on that line. A trailing space, a different capitalization, or any character before WEBVTT prevents every browser from reading the file. Check this first when a VTT file won't load.
Wrong timestamp separator. VTT timestamps use a period before milliseconds (00:00:12.500), not a comma. If you edited the file or converted it from SRT and the timestamps still show commas, every cue fails silently. A find-and-replace swapping , for . in the timing lines fixes it, but be careful not to change commas in the caption text itself.
BOM encoding. Some Windows text editors (including older versions of Notepad) save files with an invisible byte order mark at the start. That character sits before WEBVTT and breaks the header detection. When saving a VTT file you've written or edited in Windows, choose UTF-8 without BOM from the encoding options.
Overlapping timestamps. If one cue's end time overlaps the next cue's start time, some players drop the second cue. Make sure each cue ends at or before the next one begins. Even a 1-millisecond gap between cues is enough.
For more on opening and editing VTT files once you have one, see our guides on how to open a VTT file and how to convert SRT to VTT.
Frequently Asked Questions
What program opens a VTT file?
VTT files are plain text, so any text editor works: Notepad, TextEdit, VS Code, Sublime Text. For playback with a video, Chrome, Firefox, Safari, and Edge all handle VTT natively. VLC also plays VTT subtitle files. For editing, Subtitle Edit (free, Windows) gives you a timeline view that's much easier than editing timestamps by hand.
Is a VTT file the same as an SRT file?
They both store timed text captions, but they're different formats with different capabilities. VTT is the W3C web standard with support for styling, positioning, chapters, and speaker labels. SRT is older, simpler, and has wider support in desktop media players. The easiest way to tell them apart: VTT files start with WEBVTT and use periods in timestamps; SRT files have no header and use commas.
How do I make a VTT file from a video?
The practical way is to transcribe the video and export as VTT. Tools like PixScript accept a video URL or uploaded file, generate a timestamped transcript, and let you download it as a .vtt file. Typing timestamps for every line of dialogue takes 4-5 hours per hour of audio and introduces timing errors.
Can I convert a VTT file to SRT?
Yes. The conversion is mostly a timestamp separator swap (periods to commas) plus adding sequential cue numbers if they're missing. Our guide on how to convert SRT to VTT covers both directions, including doing it in a text editor or using an online converter.
If you need a .vtt caption file from a video, PixScript handles the transcription and export without any manual timing work. Paste a URL or upload a file, and download a ready-to-use VTT file in under two minutes. Try it free at pixscript.com; the free tier covers 10 transcripts per month.