Skip to content
Novus Examples

Caption files with awkward encodings and line endings

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.

28 of 28 files
Preview of SRT — UTF-8, LF
srt
352 B
Actual file preview for SRT — UTF-8, LF

SRT — UTF-8, LF

Plain UTF-8, no byte-order mark, Unix LF line endings. The reference member of this set — every other file here carries the same five cues, so a parser's output can be diffed against this one. Identical cue content across the whole set, so any difference in a parser's output is an encoding bug and nothing else.

File
SRT · Captions Encoding · 5 cues
Use case
Caption encodingSubtitle parsing+1· Conversion set
Preview of SRT — UTF-8 with BOM, LF
srt
355 B
Actual file preview for SRT — UTF-8 with BOM, LF

SRT — UTF-8 with BOM, LF

UTF-8 with a leading U+FEFF byte-order mark. Windows caption tools emit this constantly, and a parser that does not strip it sees the BOM as part of the first cue number and fails to match its index. Identical cue content across the whole set, so any difference in a parser's output is an encoding bug and nothing else.

File
SRT · Captions Encoding · 5 cues
Use case
Caption encodingSubtitle parsing+1· Conversion set
Preview of SRT — UTF-8, CRLF
srt
372 B
Actual file preview for SRT — UTF-8, CRLF

SRT — UTF-8, CRLF

UTF-8 with Windows CRLF line endings. Parsers that split on a bare \n leave a trailing carriage return on every line, which usually surfaces as a stray box glyph at the end of each caption. Identical cue content across the whole set, so any difference in a parser's output is an encoding bug and nothing else.

File
SRT · Captions Encoding · 5 cues
Use case
Caption encodingSubtitle parsing+1· Conversion set
Preview of SRT — UTF-8 with BOM, CRLF
srt
375 B
Actual file preview for SRT — UTF-8 with BOM, CRLF

SRT — UTF-8 with BOM, CRLF

Both awkward properties at once — a BOM and CRLF endings — which is what a file saved by Notepad on Windows actually looks like. Identical cue content across the whole set, so any difference in a parser's output is an encoding bug and nothing else.

File
SRT · Captions Encoding · 5 cues
Use case
Caption encodingSubtitle parsing+1· Conversion set
Preview of SRT — UTF-16 LE with BOM
srt
686 B
Actual file preview for SRT — UTF-16 LE with BOM

SRT — UTF-16 LE with BOM

UTF-16 little-endian with a BOM. Every second byte is NUL, so a parser that reads bytes as UTF-8 or ASCII sees a file that appears to start and end immediately. Tools must detect the BOM, not assume UTF-8. Identical cue content across the whole set, so any difference in a parser's output is an encoding bug and nothing else.

File
SRT · Captions Encoding · 5 cues
Use case
Caption encodingSubtitle parsing+1· Conversion set
Preview of SRT — UTF-16 BE with BOM
srt
686 B
Actual file preview for SRT — UTF-16 BE with BOM

SRT — UTF-16 BE with BOM

UTF-16 big-endian with a BOM — the byte order most decoders forget to handle, since little-endian dominates in practice. Identical cue content across the whole set, so any difference in a parser's output is an encoding bug and nothing else.

File
SRT · Captions Encoding · 5 cues
Use case
Caption encodingSubtitle parsing+1· Conversion set
Preview of SRT — CJK (Japanese)
srt
246 B
Actual file preview for SRT — CJK (Japanese)

SRT — CJK (Japanese)

Japanese captions mixing kana, kanji and full-width punctuation. Full-width characters occupy two columns in a monospaced renderer, so line-length limits computed in code points under-count them.

File
SRT · Captions Encoding · 3 cues
Use case
Caption encodingSubtitle parsing+1· Conversion set
Preview of SRT — RTL (Arabic)
srt
244 B
Actual file preview for SRT — RTL (Arabic)

SRT — RTL (Arabic)

Right-to-left Arabic with joined letterforms, including a bidirectional line where Western digits sit inside RTL text. Exercises the bidi algorithm and any renderer that assumes left-to-right layout.

File
SRT · Captions Encoding · 3 cues
Use case
Caption encodingSubtitle parsing+1· Conversion set
Preview of SRT — RTL (Hebrew)
srt
159 B
Actual file preview for SRT — RTL (Hebrew)

SRT — RTL (Hebrew)

Right-to-left Hebrew without letter joining — a second RTL script, so a renderer cannot pass by special-casing Arabic shaping alone.

File
SRT · Captions Encoding · 2 cues
Use case
Caption encodingSubtitle parsing+1· Conversion set
Preview of SRT — Cyrillic
srt
208 B
Actual file preview for SRT — Cyrillic

SRT — Cyrillic

Cyrillic captions — outside ASCII but still single-width and left-to-right, which isolates encoding handling from layout handling.

File
SRT · Captions Encoding · 2 cues
Use case
Caption encodingSubtitle parsing+1· Conversion set
Preview of SRT — Emoji and combining marks
srt
247 B
Actual file preview for SRT — Emoji and combining marks

SRT — Emoji and combining marks

Characters above the Basic Multilingual Plane, a composed/decomposed accent pair, and a zero-width-joiner sequence. Anything that measures caption length in UTF-16 code units rather than graphemes miscounts these.

File
SRT · Captions Encoding · 3 cues
Use case
Caption encodingSubtitle parsing+1· Conversion set
Preview of SCC — Broadcast CEA-608 Captions
scc
308 B
Actual file preview for SCC — Broadcast CEA-608 Captions

SCC — Broadcast CEA-608 Captions

Broadcast closed captions as Scenarist SCC: SMPTE timecodes followed by hexadecimal CEA-608 byte pairs, with odd parity set on every byte as the standard requires. Uses pop-on mode — RCL to load, ENM to clear non-displayed memory, a preamble address code for row 15, the character pairs, then EOC to display. This is the fixture that exposes decoders which treat captions as text: the parity bits, the two-byte control codes and the frame-accurate timecodes all have to be handled.

File
SCC · Captions Formats
Use case
Subtitle parsingCaption encoding+2· Conversion set
Preview of VTT — Positioned and Aligned Cues
vtt
455 B
Actual file preview for VTT — Positioned and Aligned Cues

VTT — Positioned and Aligned Cues

WebVTT cues carrying the full positioning grammar — line, position, align and size — plus named cue identifiers instead of numbers. Captions are placed at four different points in the frame, which is what real subtitles do to avoid covering burned-in text. Parsers that treat everything after the timestamp as cue text will fold these settings into the visible caption.

File
VTT · Captions Edge · 4 cues
Use case
Subtitle parsingVideo QA+1· Conversion set
Preview of VTT — STYLE Blocks, Regions and Inline Markup
vtt
581 B
Actual file preview for VTT — STYLE Blocks, Regions and Inline Markup

VTT — STYLE Blocks, Regions and Inline Markup

WebVTT exercising the parts of the format beyond plain text: a STYLE block with ::cue selectors, a named REGION, voice spans, cue classes, and inline bold/italic/underline/ruby markup. A parser that handles only timestamps and text will render the tag names as visible characters.

File
VTT · Captions Edge · 3 cues
Use case
Subtitle parsingVideo QA+1· Conversion set
Preview of SRT — Windows-1252 (Legacy Code Page)
srt
342 B
Actual file preview for SRT — Windows-1252 (Legacy Code Page)

SRT — Windows-1252 (Legacy Code Page)

The same cues in Windows-1252, the legacy code page behind most real-world caption mojibake. Pure ASCII until the curly quotes and em dash, which encode as single bytes 0x93, 0x94 and 0x97 — none of which is valid UTF-8. A tool that assumes UTF-8 either raises or silently substitutes replacement characters exactly where the punctuation was. There is no BOM and no in-band signal, so correct handling requires either charset detection or being told.

File
SRT · Captions Encoding · 5 cues
Use case
Caption encodingSubtitle parsing+1· Conversion set
Preview of SRT — No Trailing Newline
srt
351 B
Actual file preview for SRT — No Trailing Newline

SRT — No Trailing Newline

Identical to the reference file except the final newline is missing, so the last cue is terminated by end-of-file rather than by a blank line. SubRip separates cues with a blank line, and parsers that split on a double newline and discard the remainder drop the final cue entirely — a bug that is invisible until a file happens to end this way.

File
SRT · Captions Encoding · 5 cues
Use case
Caption encodingSubtitle parsing+1· Conversion set
Preview of SRT — Mixed CRLF and LF Line Endings
srt
359 B
Actual file preview for SRT — Mixed CRLF and LF Line Endings

SRT — Mixed CRLF and LF Line Endings

One file with both line-ending conventions — CRLF for the opening cues and bare LF for the rest, the shape a caption file takes after being edited on two platforms or assembled from two sources. Parsers that detect the convention once from the first line and then apply it to the whole file mis-split everything after the switch.

File
SRT · Captions Encoding · 5 cues
Use case
Caption encodingSubtitle parsing+1· Conversion set
Preview of VTT — UTF-8 With BOM Before the Signature
vtt
363 B
Actual file preview for VTT — UTF-8 With BOM Before the Signature

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.

File
VTT · Captions Encoding · 5 cues
Use case
Caption encodingSubtitle parsing+1· Conversion set
Preview of Video Caption Sidecar 01
vtt
62 B
Actual file preview for Video Caption Sidecar 01

Video Caption Sidecar 01

Download-only WebVTT caption sidecar 01 with one sub-second cue for timing and attachment checks. Stable P8 artifact p8-video-caption-vtt-01.

File
VTT · Colour Audio Sync Failures · 1 cue
Preview of Video Caption Sidecar 02
vtt
62 B
Actual file preview for Video Caption Sidecar 02

Video Caption Sidecar 02

Download-only WebVTT caption sidecar 02 with one sub-second cue for timing and attachment checks. Stable P8 artifact p8-video-caption-vtt-02.

File
VTT · Colour Audio Sync Failures · 1 cue
Preview of Video Caption Sidecar 03
vtt
62 B
Actual file preview for Video Caption Sidecar 03

Video Caption Sidecar 03

Download-only WebVTT caption sidecar 03 with one sub-second cue for timing and attachment checks. Stable P8 artifact p8-video-caption-vtt-03.

File
VTT · Colour Audio Sync Failures · 1 cue
Preview of Video Caption Sidecar 04
vtt
62 B
Actual file preview for Video Caption Sidecar 04

Video Caption Sidecar 04

Download-only WebVTT caption sidecar 04 with one sub-second cue for timing and attachment checks. Stable P8 artifact p8-video-caption-vtt-04.

File
VTT · Colour Audio Sync Failures · 1 cue
Preview of Video Caption Sidecar 05
vtt
62 B
Actual file preview for Video Caption Sidecar 05

Video Caption Sidecar 05

Download-only WebVTT caption sidecar 05 with one sub-second cue for timing and attachment checks. Stable P8 artifact p8-video-caption-vtt-05.

File
VTT · Colour Audio Sync Failures · 1 cue
Preview of Video Caption Sidecar 06
vtt
62 B
Actual file preview for Video Caption Sidecar 06

Video Caption Sidecar 06

Download-only WebVTT caption sidecar 06 with one sub-second cue for timing and attachment checks. Stable P8 artifact p8-video-caption-vtt-06.

File
VTT · Colour Audio Sync Failures · 1 cue
Preview of Video Caption Sidecar 07
vtt
62 B
Actual file preview for Video Caption Sidecar 07

Video Caption Sidecar 07

Download-only WebVTT caption sidecar 07 with one sub-second cue for timing and attachment checks. Stable P8 artifact p8-video-caption-vtt-07.

File
VTT · Colour Audio Sync Failures · 1 cue
Preview of Video Caption Sidecar 08
vtt
62 B
Actual file preview for Video Caption Sidecar 08

Video Caption Sidecar 08

Download-only WebVTT caption sidecar 08 with one sub-second cue for timing and attachment checks. Stable P8 artifact p8-video-caption-vtt-08.

File
VTT · Colour Audio Sync Failures · 1 cue
Preview of Video Caption Sidecar 09
vtt
62 B
Actual file preview for Video Caption Sidecar 09

Video Caption Sidecar 09

Download-only WebVTT caption sidecar 09 with one sub-second cue for timing and attachment checks. Stable P8 artifact p8-video-caption-vtt-09.

File
VTT · Colour Audio Sync Failures · 1 cue
Preview of Video Caption Sidecar 10
vtt
62 B
Actual file preview for Video Caption Sidecar 10

Video Caption Sidecar 10

Download-only WebVTT caption sidecar 10 with one sub-second cue for timing and attachment checks. Stable P8 artifact p8-video-caption-vtt-10.

File
VTT · Colour Audio Sync Failures · 1 cue