Skip to content
Novus Examples
vtt363 B

VTT — UTF-8 With BOM Before the Signature

WebVTT with a byte-order mark ahead of the mandatory WEBVTT signature. The spec explicitly allows this, and browsers accept it — but a naive check that the file literally starts with the six bytes 'WEBVTT' rejects a perfectly valid file. The mirror image of the missing-header corrupt fixture: one is valid and often refused, the other is invalid and often accepted.

Preview — first 23 linesvtt
WEBVTT

1
00:00:01.000 --> 00:00:03.000
Novus Examples — timed-text fixture

2
00:00:03.500 --> 00:00:06.000
Second cue, two lines:
this is the second line

3
00:00:06.500 --> 00:00:09.000
Third cue with <i>italic</i> markup

4
00:00:09.500 --> 00:00:12.000
Fourth cue — em dash, curly “quotes”, ellipsis…

5
00:00:12.500 --> 00:00:15.000
Final cue.

Specifications

Encoding
UTF-8
Byte Order Mark
yes
Signature
WEBVTT, preceded by U+FEFF
Cues
5
Spec Compliant
yes — the WebVTT spec permits a leading BOM

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

“VTT — UTF-8 With BOM Before the Signature” is a deterministic Novus Examples fixture for Caption encoding, Subtitle parsing, Video QA. The same cue list written with a UTF-8 BOM, without one, in UTF-16, with CRLF and with bare LF, plus non-Latin scripts and right-to-left text — for finding the parser that assumed captions are always LF-terminated ASCII.

Documented properties for this file: 5 cues · UTF-8. 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="cues-utf8-bom.vtt" default>
</video>

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