# DoneCove SRT QA Sample Pack

Version 1.0.0 - 2026-10-24

Nine small, original, fictional subtitle files for reproducing specific SRT
structure checks. Five fixtures preserve the previously published DoneCove
examples; four add focused error and passing-control cases. No user files,
measured translation results or companion video are included.

## Quick start

1. Keep the original files unchanged if you want to reproduce the manifest.
2. Open https://subtitle.donecove.com/en/tools/srt-validator/ and choose one file
   from samples/. The validator processes its contents in your browser.
3. Compare its error codes, severity and line numbers with manifest.json.
4. Copy the file before editing. Follow the explanation below, then check again.

The checker reports problems; it does not fix files automatically. A warning is
not the same as an error. A successful structure check is not proof of correct
translation, readable captions, software compatibility or audio/video sync.

## Fixtures and expected results

### timestamp: A dot in an SRT timestamp

File: samples/srt-example-invalid-timestamp.srt

An SRT timestamp in this checker uses a comma before three millisecond digits. Change 00:00:01.000 to 00:00:01,000 and compare with the reference. Renaming a VTT file does not convert its format.

Expected: 2 parsed cue(s), 1 error(s), 0 warning(s).
TIMESTAMP (error), line 2, cue 1.

### separator: A missing blank line

File: samples/srt-example-missing-blank-line.srt

The second timing row is inside the first parsed block. Insert a blank line before cue number 2. The reported cue count is the number of parsed blocks, not a claim that no dialogue was lost.

Expected: 1 parsed cue(s), 1 error(s), 0 warning(s).
MISSING_SEPARATOR (error), line 5, cue 1.

### number: A repeated cue number

File: samples/srt-example-duplicate-number.srt

Both cues are numbered 1. In this example change the second number to 2. The checker reports duplicate numbers; it does not require every valid file to use consecutive numbers.

Expected: 2 parsed cue(s), 1 error(s), 0 warning(s).
DUPLICATE_NUMBER (error), line 5, cue 1.

### overlap: Overlapping cues: review, do not automatically reject

File: samples/srt-example-overlapping-cues.srt

Cue 1 ends at 4 seconds and cue 2 starts at 3 seconds. Overlap is a warning, so the structure check still passes. Simultaneous speech can be intentional. A whole-file time shift preserves this overlap.

Expected: 2 parsed cue(s), 0 error(s), 1 warning(s).
OVERLAP (warning), line 6, cue 2.

### checked: The structure-checked reference

File: samples/srt-example-structure-checked.srt

Compare cue numbers, commas and blank lines with the four preceding files. Zero reported issues means only that this small file meets the checks in this checker.

Expected: 2 parsed cue(s), 0 error(s), 0 warning(s).

### time-range: An end time before its start

File: samples/srt-example-end-before-start.srt

Cue 1 starts at 1 second but ends at 0.5 seconds. For this teaching example restore the end to 3 seconds. Real cue boundaries must be chosen against the actual video.

Expected: 2 parsed cue(s), 1 error(s), 0 warning(s).
TIME_RANGE (error), line 2, cue 1.

### empty-text: A cue with no caption text

File: samples/srt-example-empty-caption.srt

Cue 1 has a number and timing but no text. Restore the fictional reference sentence to reproduce a passing check. This does not test whether an actual translation omitted a sentence.

Expected: 2 parsed cue(s), 1 error(s), 0 warning(s).
EMPTY_TEXT (error), line 3, cue 1.

### touching-bilingual: Touching boundaries with two text lines

File: samples/srt-example-touching-bilingual.srt

The next cue starts exactly when the previous one ends, so this checker reports no overlap. The English and Chinese sentences are written illustrations, not results captured from an evaluated workbench translation run.

Expected: 2 parsed cue(s), 0 error(s), 0 warning(s).

### bom-crlf: UTF-8 BOM, CRLF and nonconsecutive numbers

File: samples/srt-example-utf8-bom-crlf.srt

This byte-level fixture uses a UTF-8 byte order mark, Windows line endings and cue numbers 10 and 20. It should pass this checker. It is not a certification that every player accepts the same choices.

Expected: 2 parsed cue(s), 0 error(s), 0 warning(s).

## Reproducing the result in code

manifest.json records expected results from DoneCove's validateSrt(text)
interface. Check ok, cues.length, errorCount, warningCount and the full issues
array. It is a description of this checker, not a universal SRT standard. Line
numbers are one-based after removing a leading BOM and normalizing line endings.
The BOM/CRLF fixture must retain its original bytes when checking SHA-256.

## Integrity

SHA256SUMS.txt covers the README, license, manifest and all subtitle files. It
excludes itself to avoid a circular digest. The published companion checksum
list additionally covers the ZIP. Hashes verify byte identity, not correctness
or the identity of whoever supplies the files.

## Permission and citation

See LICENSE.txt. These original example materials may be copied, modified and
redistributed, including commercially, without a fee. Attribution is optional.
This permission does not cover DoneCove's product source code or services.

Suggested citation: DoneCove. SRT QA Sample Pack, v1.0.0, 2026-10-24.
https://subtitle.donecove.com/en/guides/srt-qa-test-kit/

Questions about the pack: support@donecove.com
