Thumbnail Track — WebVTT Sprite Index
The WebVTT half of a scrub-preview pair: each cue covers a slice of the timeline and its payload is a media-fragment URL naming a rectangle of the sprite sheet. This is how seek-bar previews are delivered in practice, and the #xywh fragment syntax is the part players implement inconsistently — some resolve it relative to the VTT, others to the page, and some ignore the fragment entirely and show the whole sheet.
WEBVTT
NOTE Scrub-preview thumbnails. Each cue points at a rectangle of the sprite sheet
NOTE using a #xywh media fragment, so one HTTP request serves every thumbnail.
00:00:00.000 --> 00:00:00.167
sprite.jpg#xywh=0,0,160,90
00:00:00.167 --> 00:00:00.333
sprite.jpg#xywh=160,0,160,90
00:00:00.333 --> 00:00:00.500
sprite.jpg#xywh=320,0,160,90
00:00:00.500 --> 00:00:00.667
sprite.jpg#xywh=480,0,160,90
00:00:00.667 --> 00:00:00.833
sprite.jpg#xywh=640,0,160,90
00:00:00.833 --> 00:00:01.000
sprite.jpg#xywh=800,0,160,90
00:00:01.000 --> 00:00:01.167
sprite.jpg#xywh=0,90,160,90
00:00:01.167 --> 00:00:01.333
sprite.jpg#xywh=160,90,160,90
00:00:01.333 --> 00:00:01.500
sprite.jpg#xywh=320,90,160,90
00:00:01.500 --> 00:00:01.667
sprite.jpg#xywh=480,90,160,90
00:00:01.667 --> 00:00:01.833
sprite.jpg#xywh=640,90,160,90
00:00:01.833 --> 00:00:02.000
sprite.jpg#xywh=800,90,160,90
Specifications
- Cues
- 12
- Fragment Syntax
- sprite.jpg#xywh=x,y,w,h
- Kind
- metadata / thumbnails
- Indexes
- sprite.jpg in this group
What is a .vtt file?
WebVTT (VTT) is the W3C subtitle and caption format used by the HTML5 <track> element for timed text on the web. It extends the SubRip model with cue settings, positioning, styling, and metadata, and requires a WEBVTT header. It is the standard format for browser-based captions.
How to use this file
Use an example VTT to test HTML5 <track> caption rendering, cue-setting and positioning parsers, and converters between WebVTT and SRT.
How to use this file for testing
“Thumbnail Track — WebVTT Sprite Index” is a deterministic Novus Examples fixture for Streaming manifests, Subtitle parsing, Video QA. HLS playlists and DASH MPDs covering multi-bitrate ladders, byte-range addressing, and segment templates. Served inline with permissive CORS under /files/stream/, so a player can load them from any origin without re-hosting.
Documented properties for this file: 12 cues. Compare results against paired or grouped companions on this page when present (clean↔damaged, searchable↔scanned, or format twins) so scores stay reproducible across runs.
Download the file once, keep the path stable in CI or local scripts, and treat the spec table as the contract: dimensions, seeds, field lists, and roles are intentional. Corrupt or invalid samples are labelled as such — expect parsers to fail loudly rather than silently accept them.
Media fixtures are short and synthetic by design. Prefer waveform or transcript ground truth in the same group when measuring ASR, trim, upscale, or sync tools; do not assume broadcast-quality masters.
Code examples
<video controls src="clip.mp4">
<track kind="captions" srclang="en" label="English" src="thumbnails.vtt" default>
</video>Related files
- vttVTT — Metadata Track With JSON PayloadsA WebVTT metadata track whose cue payloads are JSON objects rather than text for display. This is how timed analysis output — scene changes, detections, speech segments — is carried alongside a video and read from JavaScript via the cue change event. Nothing here should ever be rendered on screen.

- vttVTT — X-TIMESTAMP-MAP for HLS SyncA WebVTT segment carrying X-TIMESTAMP-MAP, the header HLS uses to align caption times with the MPEG-TS presentation clock. Cue times are relative to the map rather than to the file, so a player that ignores the header renders every caption ten seconds early. Invisible in a text editor and a classic cause of 'captions are out of sync' reports.

- assASS — Karaoke Timing and Override TagsAdvanced SubStation Alpha using the features that distinguish it from SubRip: per-syllable \k karaoke timings in centiseconds, a full V4+ style definition with primary and secondary colours, and an \an override that repositions a line. Converting this to SRT necessarily loses all of it, which makes it a good test of whether a converter warns about that or drops it silently.

- csvCSV — Cue Timing ReportPer-cue timings and text metrics for the shared cue list, as a caption QC tool would export them: start, end, duration, line count and character count. Useful as the expected output when testing a caption analyser, and as a quick way to check reading-rate calculations against known values.

- mpdDASH — Dynamic (Live) Manifest With a Time-Shift BufferA live DASH manifest: type is dynamic, there is no total duration, and the client must compute which segment is currently available from availabilityStartTime, the wall clock, and the segment duration. Declares a one-minute time-shift buffer and an eight-second presentation delay. The timestamps are fixed so the fixture stays deterministic — a real client will compute a segment number far in the future, which is itself a useful edge case to handle gracefully.

- mpdDASH — Explicit SegmentList AddressingThe same content addressed with an explicit SegmentList — every segment URL enumerated rather than derived from a template. Verbose, but it is what older packagers emit and it permits non-uniform segment naming. A DASH client must support both this and SegmentTemplate; the paired template manifest in this group is the direct contrast.

Generated by generation/video_streaming_wave.py. Free for any use, no attribution required — license.