Summary
- A VTT file (WebVTT,
.vtt) is the web's standard caption format, defined by the W3C. It is what the HTML5 <track> element expects.
- Every file starts with the line
WEBVTT, timings use a dot before the milliseconds, and cues can carry position, alignment and styling that SRT cannot.
- Open one in any text editor; convert it with free browser tools; or create one straight from a video.
- Convert an SRT to VTT for free, or create a VTT from your MP4 in Video to Subtitles.
If a web player, course platform or website asked you for "captions in VTT", it wants a WebVTT file: a plain-text file of timed captions that browsers can display natively. It looks almost like an SRT, and that near-match is exactly what trips people up. Rename an SRT to .vtt and it looks right, but it won't load.
This guide shows a real VTT example, explains the parts that differ from SRT, and shows how to open, convert and create one. For a one-paragraph definition, see our WebVTT glossary entry.
Have an SRT and need a VTT? Convert it free in your browser. No account, and the file is not uploaded.
VTT file example
WEBVTT
00:00:01.000 --> 00:00:04.200
Welcome to the product walkthrough.
intro-2
00:00:04.300 --> 00:00:08.000 line:85% align:center
We'll cover setup, exports
and delivery.
NOTE Client asked for captions above the lower third from here on.
00:08.100 --> 00:11.500
<v Maya>Let's start with the upload.
Save it as example.vtt with UTF-8 encoding and it plays in any browser that supports the <track> element.
The parts of a VTT file
| Part |
Example |
Rule |
| Header |
WEBVTT |
Must be the very first line. Text may follow after a space, then a blank line |
| Cue identifier (optional) |
intro-2 |
A label on its own line above the timing. Unlike SRT, numbers aren't required |
| Timing line |
00:00:04.300 --> 00:00:08.000 |
Dot before milliseconds. Hours are optional when zero (00:08.100) |
| Cue settings (optional) |
line:85% align:center |
After the end time, on the same line |
| Cue text |
We'll cover setup, exports |
One or more lines, ended by a blank line |
| Comments (optional) |
NOTE … |
Ignored by players. Useful for production handover |
Cue settings: position and alignment
Cue settings are where VTT earns its place over SRT. The W3C specification defines:
line: the vertical position, as a line number or percentage (for example line:10% to move a caption to the top while a lower third is on screen)
position: the horizontal position of the cue box, as a percentage
size: the width of the cue box, as a percentage
align: text alignment: start, center, end, left or right
vertical: vertical text (rl or lr) for scripts that need it
region: attaches the cue to a region defined in the header, used for roll-up captions
Styling and voice tags
Cue text can include <b>, <i>, <u>, <ruby>, class spans like <c.highlight>, language spans and voice spans like <v Maya> that mark the speaker. Pages can style cues with the CSS ::cue selector, and the file can hold STYLE blocks. Player support varies, so test on the player you deliver to. If the look must be guaranteed everywhere, burn the captions into the picture instead; see best font for subtitles.
VTT vs SRT: the differences that matter
|
VTT (WebVTT) |
SRT |
| First line |
WEBVTT (required) |
Cue 1 |
| Millisecond separator |
Dot: 00:01:23.456 |
Comma: 00:01:23,456 |
| Hours in timestamps |
Optional |
Required |
| Cue numbers |
Optional identifiers |
Expected |
| Position and styling |
Cue settings, CSS, voice tags |
Not official |
| Comments |
NOTE blocks |
None |
HTML5 <track> |
Supported |
Not supported |
| Typical use |
Web players, websites, e-learning |
Editors, desktop players, most uploads |
Rule of thumb: use VTT for anything that plays in a browser, and SRT for editing software and as the safest interchange file. The full comparison, including ASS, TTML, SBV and SCC, is in our subtitle file formats guide.
How to open a VTT file
- Text editor. A VTT is plain text, so any plain-text editor opens it. Don't save it from a word processor, which can change the encoding.
- Browser or media player. Most players can load a
.vtt next to the video. On a web page, add it with a <track> element (example below).
- Free checker. Paste it into the subtitle validator, which reads SRT and VTT line by line in your browser and flags timing and format errors by cue.
To put a VTT on your own web page:
<video controls src="talk.mp4">
<track kind="subtitles" src="talk.vtt" srclang="en" label="English" default>
</video>
The .vtt file has to be served from the same origin as the page, or with CORS headers that allow it.
How to convert a VTT file
- SRT to VTT: the free SRT to VTT converter adds the
WEBVTT header and changes each comma to a dot. Text and timing stay exactly as they were.
- VTT to SRT: the free VTT to SRT converter removes the header, swaps dots back to commas and numbers the cues. VTT-only features (cue settings, voice tags, CSS classes) are stripped because SRT has no syntax for them; the words and timings are kept.
- VTT to plain text: the free SRT to text tool also strips timings from VTT files, for show notes or a transcript draft.
All three run in your browser, and your file is not uploaded.
Convert in one click: SRT to VTT · VTT to SRT
How to create a VTT file from an MP4
Writing timings by hand only works for a handful of cues. For a real video:
- Upload the MP4 (or MOV, MKV, WebM or an audio file) to Video to Subtitles.
- Choose the spoken language from the list, or leave it on auto-detect, and generate.
- Download VTT. The SRT comes from the same cues, so both files match.
- Optional: review cues against the video, add a translated file with the same timing, or carry the cues into Subtitle Style Studio to style and burn them in.
Free accounts handle files up to 30 minutes and 2 GB, with no card. Free downloads include two short watermark cues (one at the start, one after the last cue); Pro removes them, lets you edit cues, and handles files up to 4 hours.
Then run the file through Fix Subtitles if the checks flag overlaps, lines that are too long or captions that go by too fast to read. It accepts SRT and VTT up to 20 MB and never changes your original file.
Make a VTT from your video now: start in Video to Subtitles, free with an account.
Common VTT problems
| Problem |
Cause |
Fix |
| Player shows no captions |
Missing WEBVTT header, or an SRT renamed to .vtt |
Convert properly with SRT to VTT |
| Captions work locally, not on the site |
File served from another domain without CORS, or wrong MIME type |
Serve it from the same origin (or with CORS headers) as text/vtt |
| Gibberish characters |
File not saved as UTF-8 |
Re-save as UTF-8; WebVTT requires it |
| Cue settings ignored |
Player doesn't support them |
Test on the target player, or burn captions in |
| Speaker labels vanish after converting to SRT |
SRT has no voice tags |
Keep the VTT as the master, or write names into the text |
Translating a VTT
Translate Subtitles takes your SRT or VTT and returns the same format in any of 104 target languages, with every cue's timing kept. Check each translated file in Fix Subtitles before delivery, because translated lines often run longer. Delivering forced subtitles (captions only for foreign-language lines or on-screen text)? They usually go in their own VTT next to the main track; see what forced subtitles are.
FAQ
What is a VTT file?
A WebVTT file: a plain-text caption file that starts with WEBVTT and lists timed cues. Browsers display it through the HTML5 <track> element.
How do I open a VTT file?
In any plain-text editor, in a media player next to the video, or in the free subtitle validator to check it.
Is VTT the same as SRT?
No. They hold the same essentials, but VTT needs the WEBVTT header, uses a dot before milliseconds, and supports position and styling. Convert between them rather than renaming.
How do I create a VTT file from an MP4?
Upload the MP4 to Video to Subtitles and download VTT. A free account covers files up to 30 minutes.
Will converting VTT to SRT lose anything?
Text and timing are kept. VTT-only features such as cue settings, voice tags and CSS classes are removed because SRT can't store them.
Next step
Convert your SRT to VTT for free, or create a VTT straight from your video, then check it in the validator. For long videos, cue editing and downloads without watermark cues, Pro is $14.99/month or $120/year, with files up to 4 hours.
Related guides and tools
Sources: W3C, "WebVTT: The Web Video Text Tracks Format" (https://www.w3.org/TR/webvtt1/) for the header, timestamp, cue settings, comment, styling, voice span and UTF-8 rules and the VTT vs SRT table; WHATWG HTML Living Standard, the track element (https://html.spec.whatwg.org/multipage/media.html#the-track-element); VideoText SRT to VTT, VTT to SRT, SRT to text, subtitle validator, Video to Subtitles, Fix Subtitles, Translate Subtitles and pricing pages, https://videotext.io/tools/srt-to-vtt, https://videotext.io/tools/vtt-to-srt, https://videotext.io/tools/srt-to-text, https://videotext.io/tools/subtitle-validator, https://videotext.io/video-to-subtitles, https://videotext.io/fix-subtitles, https://videotext.io/translate-subtitles and https://videotext.io/pricing (checked October 31, 2026).