Synthetic practice corpus · 1.0.0

Choose a case and predict the result

All twenty files are original synthetic text. Defaults: 20 characters/second and 42 characters/line. Structural findings require repair; editorial warnings require judgment; scope warnings identify checks this tool does not perform.

Open the existing subtitle checker, choose a downloaded case, then compare the findings below. Keep this page open as your reference.

Download versioned manifest and exact input strings

srt-clean · SRT clean control (SRT)

Establish a small readable numeric cue.

Download SRT case

Establish a small readable numeric cue.

Structural findings
None expected within this limited checker.
Editorial warnings
None expected within this limited checker.
Outside this check
None expected within this limited checker.
1
00:00:01,000 --> 00:00:04,000
Map the room.
srt-unicode · SRT multilingual text (SRT)

Preserve original UTF-8 accents, CJK and emoji.

Download SRT case

Preserve original UTF-8 accents, CJK and emoji.

Structural findings
None expected within this limited checker.
Editorial warnings
None expected within this limited checker.
Outside this check
None expected within this limited checker.
1
00:00:01,000 --> 00:00:06,000
Café — 東京 🌍
srt-dot · SRT decimal separator (SRT)

Reject periods under this corpus's comma-based SRT policy.

Download SRT case

Reject periods under this corpus's comma-based SRT policy.

Structural findings
  • Cue 1: Invalid SRT timestamp; check separators and minute/second ranges.
  • No readable timed cues found.
Editorial warnings
None expected within this limited checker.
Outside this check
None expected within this limited checker.
1
00:00:01.000 --> 00:00:04.000
Map the room.
srt-range · SRT minute range (SRT)

Reject a minute component of 60.

Download SRT case

Reject a minute component of 60.

Structural findings
  • Cue 1: Invalid SRT timestamp; check separators and minute/second ranges.
  • No readable timed cues found.
Editorial warnings
None expected within this limited checker.
Outside this check
None expected within this limited checker.
1
00:60:01,000 --> 00:60:04,000
Map the room.
srt-missing-end · SRT missing end timestamp (SRT)

Require a complete timing line.

Download SRT case

Require a complete timing line.

Structural findings
  • Cue 1: Missing or malformed timing line.
  • No readable timed cues found.
Editorial warnings
None expected within this limited checker.
Outside this check
None expected within this limited checker.
1
00:00:01,000 -->
Map the room.
srt-reversed · SRT reversed duration (SRT)

Reject an ending before the start.

Download SRT case

Reject an ending before the start.

Structural findings
  • Cue 1: End time must be later than start time.
Editorial warnings
None expected within this limited checker.
Outside this check
None expected within this limited checker.
1
00:00:04,000 --> 00:00:01,000
Map the room.
srt-empty · SRT empty caption (SRT)

Flag missing caption text under the local delivery policy.

Download SRT case

Flag missing caption text under the local delivery policy.

Structural findings
  • Cue 1: Cue text is empty.
Editorial warnings
None expected within this limited checker.
Outside this check
None expected within this limited checker.
1
00:00:01,000 --> 00:00:04,000
srt-overlap · SRT intentional overlap (SRT)

Prompt editorial review of two simultaneous voices.

Download SRT case

Both intervals are well formed. Simultaneous captions can be intentional; inspect the intended player.

Structural findings
None expected within this limited checker.
Editorial warnings
  • Cue 2: Cue overlaps an earlier cue; confirm whether simultaneous captions are intentional.
Outside this check
None expected within this limited checker.
1
00:00:01,000 --> 00:00:05,000
Left.

2
00:00:02,000 --> 00:00:04,000
Right.
srt-missing-separator · SRT missing blank separator (SRT)

Detect a second timing line swallowed into caption text.

Download SRT case

Detect a second timing line swallowed into caption text.

Structural findings
  • Cue 1: Another timing line occurs inside cue text; check for a missing blank line between cues.
Editorial warnings
None expected within this limited checker.
Outside this check
None expected within this limited checker.
1
00:00:01,000 --> 00:00:10,000
One.
2
00:00:05,000 --> 00:00:06,000
Two.
srt-zero-duration · SRT zero duration (SRT)

Require positive duration.

Download SRT case

Require positive duration.

Structural findings
  • Cue 1: End time must be later than start time.
Editorial warnings
None expected within this limited checker.
Outside this check
None expected within this limited checker.
1
00:00:01,000 --> 00:00:01,000
Map the room.
vtt-clean · WebVTT clean control (VTT)

Accept short WebVTT timestamps.

Download VTT case

Accept short WebVTT timestamps.

Structural findings
None expected within this limited checker.
Editorial warnings
None expected within this limited checker.
Outside this check
None expected within this limited checker.
WEBVTT

00:01.000 --> 00:04.000
Map the room.
vtt-settings · WebVTT valid positioning settings (VTT)

Keep valid line, position, size and alignment settings distinct from malformed timestamps.

Download VTT case

These settings use forms defined by the pinned draft. The checker leaves all settings unvalidated and asks for player inspection; this is a scope warning, not an editorial defect.

Structural findings
None expected within this limited checker.
Editorial warnings
None expected within this limited checker.
Outside this check
  • Cue 1: WebVTT cue settings are not validated; inspect positioning in the delivery player.
WEBVTT

00:01.000 --> 00:04.000 line:90% position:50% size:80% align:center
Map the room.
vtt-bom · WebVTT UTF-8 BOM (VTT)

Accept an optional initial byte-order mark with original UTF-8 text.

Download VTT case

Accept an optional initial byte-order mark with original UTF-8 text.

Structural findings
None expected within this limited checker.
Editorial warnings
None expected within this limited checker.
Outside this check
None expected within this limited checker.
WEBVTT

00:01.000 --> 00:04.000
Café 🌍
vtt-note-identifier · WebVTT comment and identifier (VTT)

Skip an original NOTE block and accept a nonnumeric cue identifier.

Download VTT case

Skip an original NOTE block and accept a nonnumeric cue identifier.

Structural findings
None expected within this limited checker.
Editorial warnings
None expected within this limited checker.
Outside this check
None expected within this limited checker.
WEBVTT

NOTE original practice note
No source recording exists.

room-label
00:01.000 --> 00:04.000
Map the room.
vtt-comma · WebVTT wrong separator (VTT)

Reject SRT-style commas in WebVTT.

Download VTT case

Reject SRT-style commas in WebVTT.

Structural findings
  • Cue 1: Invalid VTT timestamp; check separators and minute/second ranges.
  • No readable timed cues found.
Editorial warnings
None expected within this limited checker.
Outside this check
None expected within this limited checker.
WEBVTT

00:01,000 --> 00:04,000
Map the room.
vtt-range · WebVTT second range (VTT)

Reject a seconds component of 60.

Download VTT case

Reject a seconds component of 60.

Structural findings
  • Cue 1: Invalid VTT timestamp; check separators and minute/second ranges.
  • No readable timed cues found.
Editorial warnings
None expected within this limited checker.
Outside this check
None expected within this limited checker.
WEBVTT

00:60.000 --> 01:04.000
Map the room.
vtt-missing-end · WebVTT missing end timestamp (VTT)

Require an end timestamp.

Download VTT case

Require an end timestamp.

Structural findings
  • Cue 1: Missing or malformed timing line.
  • No readable timed cues found.
Editorial warnings
None expected within this limited checker.
Outside this check
None expected within this limited checker.
WEBVTT

00:01.000 -->
Map the room.
vtt-start-order · WebVTT decreasing start times (VTT)

Classify decreasing start times as a structural violation of the pinned draft.

Download VTT case

The start times are out of order, but these two intervals do not intersect. Do not invent an overlap warning from the largest earlier end time.

Structural findings
  • Cue 2: Cue starts before the preceding cue.
Editorial warnings
None expected within this limited checker.
Outside this check
None expected within this limited checker.
WEBVTT

00:05.000 --> 00:08.000
First.

00:01.000 --> 00:04.000
Second.
vtt-overlap · WebVTT intentional overlap (VTT)

Allow overlapping cues whose start times remain ordered.

Download VTT case

The pinned draft permits overlapping subtitle cues. Placement and simultaneous voices need editorial review; chapters are outside this corpus.

Structural findings
None expected within this limited checker.
Editorial warnings
  • Cue 2: Cue overlaps an earlier cue; confirm whether simultaneous captions are intentional.
Outside this check
None expected within this limited checker.
WEBVTT

00:01.000 --> 00:05.000
Left.

00:02.000 --> 00:04.000
Right.
vtt-header-separator · WebVTT missing header separator (VTT)

Require a blank line after the WEBVTT signature.

Download VTT case

Require a blank line after the WEBVTT signature.

Structural findings
  • Separate the WEBVTT header from the first cue with a blank line.
  • No readable timed cues found.
Editorial warnings
None expected within this limited checker.
Outside this check
None expected within this limited checker.
WEBVTT
00:01.000 --> 00:04.000
Map the room.

Practice a three-error repair with the walkthrough and reference. Playback and wording still need a separate review.

Cue A runs from one to four seconds and Cue B from three to five seconds. They overlap from three to four seconds despite positive durations and ordered starts.
Original Editorial Desk Media diagram, September 14, 2026. Reuse under CC BY 4.0 with credit and a link to this guide. Download the SVG. License terms.
These original text fixtures test a limited local checker. They are not real recordings, vendor exports, playback tests, or accessibility certification. Our editorial method

Who this is for, and who can skip it

Use this corpus if you hand SRT or WebVTT files to a client, a platform or a translator and want to recognise a broken file before someone else does. It is also useful for reviewers who receive subtitle files and need to tell a hard error from a judgment call.

You can skip it if you only deliver captions burned into the picture, because there is no separate file to break. You can also skip it if your platform already rejects malformed files on upload and you always watch the result; the corpus mainly saves time when nobody downstream will tell you a file is wrong.

The rules the cases are built on

WebVTT has a written specification. The W3C Candidate Recommendation Draft of May 20, 2026 says a file starts with the WEBVTT signature, must be UTF-8, and needs two or more line breaks between the header and the first cue. Timestamps use a full stop before three millisecond digits, and the hour field is optional when it is zero. Each cue end time must be greater than its start time, start times must not decrease through the file, cue identifiers must be unique and cannot contain the arrow separator, and cue blocks are separated by blank lines. The draft also says different cues can overlap. [1]

SRT has no equivalent W3C specification, so the corpus follows a documented local convention: numbered cues, comma before milliseconds, and a blank line between cues. YouTube lists SRT as a basic format that must be plain UTF-8 and ignores styling and positioning, while it lists WebVTT as supporting positioning with styling limited to bold, italic and underline. [2] That is why the same text can look different depending on which format you deliver.

All twenty cases and their expected results

Expected results were written before running the checker. A structural error means the file breaks the stated rule. An editorial review means the file is valid but a person should confirm the choice was intended.

CaseFormatExpected resultWhat it teaches
Clean controlSRTNo findingsBaseline for a minimal valid cue
Multilingual text (accents, CJK, emoji)SRTNo findingsUTF-8 text should survive unchanged
Full stop before millisecondsSRTStructural error; no readable cuesSRT under this convention uses a comma
Minute value of 60SRTStructural error; no readable cuesMinutes run 00 to 59
Missing end timestampSRTStructural error; no readable cuesA timing line needs start and end
End before startSRTStructural error (invalid duration)Reversed ranges cannot display
Empty caption textSRTStructural error under the local delivery policyA timed cue with nothing to read
Two voices overlappingSRTEditorial review (overlap)Overlap can be intentional
Missing blank separatorSRTStructural error (missing separator)A second cue gets swallowed into the first
Zero durationSRTStructural error (invalid duration)Start equal to end shows nothing
Clean control with short timestampsWebVTTNo findingsHours can be omitted when zero [1]
Valid position, line, size and align settingsWebVTTNo findingsCue settings are not timing errors
UTF-8 byte order markWebVTTNo findingsAn initial BOM is allowed [1]
NOTE comment and named identifierWebVTTNo findingsComments and nonnumeric IDs are valid
Comma before millisecondsWebVTTStructural error; no readable cuesWebVTT uses a full stop [1]
Seconds value of 60WebVTTStructural error; no readable cuesSeconds run 00 to 59
Missing end timestampWebVTTStructural error; no readable cuesSame rule as SRT
Start times going backwardsWebVTTStructural error (start order)Start times must not decrease [1]
Two voices overlapping, ordered startsWebVTTEditorial review (overlap)Overlap is allowed by the draft [1]
No blank line after WEBVTTWebVTTStructural error; no readable cuesThe header needs its own gap [1]

Worked example: three one-character fixes

The most common failures in this corpus are tiny. The SRT full-stop case reads 00:00:01.000 --> 00:00:04.000; changing both full stops to commas makes it match the clean control. The WebVTT comma case is the mirror image: 00:01,000 must become 00:01.000. Files converted between formats by hand often carry exactly this mistake.

The WebVTT header case has WEBVTT on the first line and the first timing line directly beneath it. Adding one empty line after WEBVTT is the whole repair. In each case, keep the original, fix a copy, rerun the check, and only then open the file with the video. A one-character fix that parses can still be paired with the wrong cut.

How to practise with the corpus

  • Pick one case and write down what you expect before opening the checker.
  • Run the checker and compare its report with the expected result in the table and the downloadable manifest.
  • Treat structural errors as must-fix. Treat overlap warnings as a question for the editor: two speakers talking at once is a legitimate reason to overlap.
  • Repair a copy, never the original fixture, and recheck the edited copy.
  • Finish by loading a real subtitle file of your own with its video in the player you deliver to. The fixtures have no video, so they cannot test synchronisation.

Method and boundaries

Version 1.0.0 contains twenty original UTF-8 text fixtures. Findings were specified independently of the checker and split into structural findings, editorial warnings and checks outside scope. WebVTT cases follow the May 20, 2026 W3C draft; SRT cases follow the local convention above. [1]

The corpus does not claim complete validation of either format. A clean report does not establish correct words, synchronisation, styling, reading speed or accessibility. Advanced WebVTT features such as regions and styling blocks are outside its scope.

Take it with you

Download corpus manifest and expected outcomes

Download worksheet

Questions before you decide

Is an overlapping cue an error?

Not by itself. The W3C WebVTT draft says different cues can overlap, as long as start times stay in order. The corpus reports overlap as an editorial review item so a person can confirm it was intended, for example when two people speak at once.

Will YouTube keep the bold text or positioning in my SRT file?

No. YouTube lists SRT as a basic format with no styling or positioning recognised and requires plain UTF-8. WebVTT supports positioning there, with styling limited to bold, italic and underline.

Does a clean checker report mean my subtitles are ready?

No. It only means the file structure matches the rules tested. You still need to check the words against the audio and watch the file with the final video in the destination player.

Sources & verification

Product details and prices can change. Check the linked provider before buying.

  1. W3C WebVTT Candidate Recommendation Draft, May 20, 2026 Accessed 29 Oct 2026
  2. YouTube Help: supported subtitle and closed caption files Accessed 29 Oct 2026

Sources link directly to providers. Product buttons may use separately labeled affiliate links. Read our disclosure.