A FILE YOU CAN ACTUALLY TRY

Sample VTT file

Download this UTF-8 .vtt file and use it with the matching four-second video below. It contains three timed cues. The blank line after WEBVTT and the dots in its timestamps are intentional.

WEBVTT

00:00:00.000 --> 00:00:01.000
One file. Three cues.

00:00:01.125 --> 00:00:02.375
Leave a short gap between captions.

00:00:02.750 --> 00:00:04.000
Keep the final cue inside the video.

Watch the exact file, not a separate mock-up

The video, caption sentences and test files on this page were made together for this example. Turn captions on in the player if they are not already visible. The first cue runs from zero to one second; the next cue starts after a short gap. The last line ends at four seconds. Those small gaps make it easier to tell which cue is active without relying on spoken audio.

Download the matching video. The sample is an original demonstration, not a transcript of an existing recording.

Three subtitle cue intervals on a four-second timeline, with deliberate gaps.
The bar lengths follow the actual timestamps in the downloadable sample.

Save a VTT file correctly

Copy the block above into a plain-text editor. Save it as UTF-8 and name it sample.vtt, with no extra .txt suffix. Keep a blank line between cue blocks. If your source is already SRT, use the converter rather than renaming the extension: the header and time notation also need to change.

WebVTT signature, blank line, timestamp range and cue text identified in an original sample.
A filename alone does not determine whether the contents are WebVTT.

Reproduce our five-file check

We changed one feature of our sample at a time: remove its signature, replace timestamp dots with commas, reverse cue blocks, or add speaker and italic markup. The files remain available below, including the deliberately broken ones. Each hash identifies the exact UTF-8 bytes used, so a later edit cannot silently turn into the same experiment.

The website path runs the same parser used by the homepage. The other path asks this browser to load each file through a native subtitle track, then reads the cues the browser actually exposes. Acceptance by one parser does not promise identical handling by the other. Cue count alone also does not prove that a player will display a caption at the moment you expected.

The same five original fixtures are tested by the website converter and a native browser subtitle track.
Two paths, one published set of files. We report errors instead of replacing them with sample success text.

Measured 2026-10-26T08:09:38.511Z using Chrome/156.0.0.0. The table below is the observed run; use the button to replace it with your own browser measurements.

The check loads only this site's published demonstration files. No visitor file is requested or uploaded.

FixtureWebsite parserNative trackCue times read back
Three-cue sampleaccepted · 3 cuesloaded · 3 cues0.000–1.000; 1.125–2.375; 2.750–4.000
Header removedrejected · 0 cuesload error · 0 cuesNo cues read back
SRT commas in VTTrejected · 0 cuesloaded · 0 cuesNo cues read back
Cue blocks reversedrejected · 0 cuesloaded · 3 cues0.000–1.000; 1.125–2.375; 2.750–4.000
Voice and italic markupaccepted · 2 cuesloaded · 2 cues0.000–2.000; 2.000–4.000

What this recorded run shows

In the recorded Chrome run, the comma-timecode file reached the loaded state but exposed no cues. The reversed-block file exposed three cues in time order, while our website parser refused its input order. The missing-header file raised a track load error. These are separate observed outcomes: loading a resource is not the same as reading usable captions, and browser tolerance is not permission to silently repair an uploaded source. The voice-markup fixture exposed two cues, with its markup still present in the returned cue text. Repeat the check above for the browser you plan to use.

Download the same inputs

Run the check in your own browser before using the result as a compatibility decision. The recorded run documents one browser version on one device; it is not a universal pass certificate. A network error or timeout is reported separately from a file the browser loaded with no cues.

Questions before you use the sample

Can I use it with a longer video?

Yes, but these captions end at four seconds. They do not stretch to the rest of your recording. Replace the words and set cue times against your own media.

Why do I get no visible subtitles?

Check that the player actually selected the caption track, that playback is inside a cue's interval, and that the caption request loaded successfully. A file that loads is different from a track that is selected. The browser check above reports loading and cues; the visible player lets you check display separately.

Does this file include sound?

No. VTT stores timed text, not audio or video. The accompanying MP4 is a separate original visual demonstration. To make captions match speech, you need real timing from the recording or timings you have reviewed yourself.

Watch the short explanation

This original three-card explanation uses a synthetic English voice. It describes the sample and the two test paths, without third-party footage.

Can I copy and edit these examples?

Yes. The sample files, diagrams and demonstration video made for this page are released under CC0. They contain invented demonstration sentences, no private customer captions and no third-party footage.

Format references

See the W3C WebVTT specification for syntax, and MDN TextTrack.cues for reading a browser's cue list. The measurements and example sentences above are our own.