Skip to content
Novus Examples
srt198 B

SRT — Cues Out of Chronological Order

Cue indices run 1, 2, 3 but the timestamps do not — the file is ordered 6.5s, 1.0s, 3.5s. The spec does not require chronological order, so a conforming parser must sort by start time rather than trusting file order. Parsers that stream cues straight to a renderer show them in the wrong sequence.

Preview, first 12 linessrt
1
00:00:06,500 --> 00:00:09,000
Third by time, first in the file

2
00:00:01,000 --> 00:00:03,000
First by time, second in the file

3
00:00:03,500 --> 00:00:06,000
Second by time, last in the file

Specifications

Cues
3
File Order
3, 1, 2
Time Order
1, 2, 3
Indices Sequential
yes

Testing contract

Expected to recover
Scenario
Parse the file and sort the cues by start time, then compare against file order.
Expected result
3 cues appear in file order 3, 1, 2 but in time order 1, 2, 3, and the indices are sequential. SubRip does not require chronological ordering, so a parser must sort by start time; one that assumes file order is chronological plays the third cue first.

What is a .srt file?

SRT (SubRip) is a plain-text subtitle format listing numbered cues, each with a start and end timecode and one or more lines of text. It is simple, human-readable, and extremely widely supported by players. It carries no styling metadata beyond basic inline tags.

How to use this file

Use an example SRT to test subtitle parsing, timecode handling, and converters that translate between SRT and WebVTT or other caption formats.

How to use this file for testing

“SRT — Cues Out of Chronological Order” is a deterministic Novus Examples fixture for Subtitle parsing, Video QA. The same captions written out across SubRip, WebVTT, ASS/SSA, SBV, TTML and a synced LRC lyric file, with known timings, for exercising subtitle parsers, format converters and burn-in tools against every serialisation.

Documented properties for this file: 3 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.

Parse the cues and check timings against the documented count; the same captions ship across subtitle formats so you can diff a converter against a known target.

Code examples

<video controls src="clip.mp4">
  <track kind="captions" srclang="en" label="English" src="out-of-order.srt" default>
</video>

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