Find Subtitles That End Before They Start
Or paste subtitle text
Options
Which frame rate the timings are counted in. On the format pages this is what MicroDVD needs, because it stores timing as frame numbers. On the frame rate pages it is the rate the file was timed against — the version the subtitles were made for — and the page's second box takes the rate of the video you are going to use them with. 23.976, 24, 25, 29.97, 30, 50, 59.94 and 60 are the common ones. Getting it wrong shifts the whole timeline, and on the frame rate pages it shifts it by a ratio rather than by a fixed amount.
A cue that ends before it starts is a timecode that cannot be true: 00:00:03,000 --> 00:00:03,000, or worse, an end earlier than its start. This page reports files that contained one, counting from the repairs the reader had to make, because a timecode of that shape cannot be held in memory at all and is replaced with a real one before anything else happens. What comes back is a report, never a modified file.
That is why the report leads with what was lost while reading and only then shows the finding. A cue whose end is not after its start is given one millisecond, so that the rest of the file can be read, previewed and exported at all; the count of those repairs sits in the report header, and the finding underneath says one error without a cue number, because the repairs are tallied as the file is read rather than kept in a list. Both lines describe the same broken timecode from two sides, which is why they belong in the same report rather than in two.
The trap this page had to be written around is that a legitimate one-millisecond cue looks exactly like a repaired one. So the check does not look at durations at all — it looks at the record of repairs — and a cue that really does last one millisecond is left alone. A negative duration and a zero-length one are the same defect and are counted together. Two formats are not accepted at all, and for once the reason is the same on both sides: LRC derives each end time from the following timestamp, so a pair there can never come out backwards, and plain text has no cue times at all. Checking either of them would produce a clean report about a field the format does not have, which is the one kind of answer worse than no answer.
Examples
A cue with no duration
Subtitles
1
00:00:01,000 --> 00:00:02,000
Where were you?
2
00:00:03,000 --> 00:00:03,000
I was working late.
What the report finds
Cues ending before they start — 1 found
Lost while reading: Timing × 1
Severity Cues Start End Measured
Error — — — 1 items
An end equal to its start. The reader gives the cue one millisecond so the file can be held, records the repair, and the report prints both halves: the loss line in the header and one error below it. The repair is the evidence; the millisecond is only the shape the evidence takes.
A cue that really lasts one millisecond
Subtitles
1
00:00:01,000 --> 00:00:02,000
Where were you?
2
00:00:03,000 --> 00:00:03,001
I was working late.
What the report finds
Cues ending before they start — Nothing found
Cues 2
Checks run 1
Lost while reading Nothing
Written by hand as a one-millisecond cue and not reported. That decision is the one that shapes the check: a repaired zero-length cue also comes out as one millisecond, so a rule that flagged short durations here would call every file with a broken timecode a file full of impossibly short cues.
The end is before the start
Subtitles
1
00:00:01,000 --> 00:00:02,000
Where were you?
2
00:00:05,000 --> 00:00:02,000
I was working late.
What the report finds
Cues ending before they start — 1 found
Lost while reading: Timing × 1
Severity Cues Start End Measured
Error — — — 1 items
Five seconds to two seconds: the same defect as the zero-length case, counted by the same rule, and reported identically. Nothing in the file is rewritten — the repaired times exist in the reader's copy so that the rest of the file can be processed, and they are not a fix the page is offering.
Frequently asked questions
What counts as a cue ending before it starts?
An end time that is not later than the start time: either equal to it, as in 00:00:03,000 to 00:00:03,000, or earlier, as in 00:00:05,000 to 00:00:02,000. Both are the same defect and are counted together, and both are counted from the repair the reader makes rather than from the cue, because a timecode of that shape cannot be held in memory.
Why does the report not name the cues involved?
Because these repairs are tallied while the file is being read, not collected into a list. The report gives the count — one error, one item in the header loss line — and the two halves are the same fact seen from the header and from the findings. If you need the exact cue, search the file for the count of its timecodes rather than for a cue number.
Is a cue lasting one millisecond a problem?
Not here, and deliberately so. A hand-written one-millisecond cue is legal and is not reported; what is reported is a timecode that had to be repaired, which happens to be stored as one millisecond afterwards. Checking durations instead of repairs would flag every file containing a zero-length cue as a file full of impossibly short cues, which is the wrong finding twice over.
Does this page fix the timecodes it finds?
No. The repaired times exist only inside the browser so that the rest of the file can be read and reported on. The file you downloaded or dragged in is unchanged, and there is no way to save the repaired version from this page — replacing a broken timecode is an operation with a subtitle file as its output, not a check.
Which subtitle formats can be checked for cues ending before they start?
Ten of the twelve: SRT, WebVTT, ASS, SSA, SBV, SMI, MicroDVD, TTML, JSON and CSV. Two are missing and neither is an oversight. LRC stores one time per line and the reader derives each end from the next timestamp, so a pair there can never be backwards — the check would be judging a field the format does not have. Plain text has no cue times at all. If your file is in one of those two, convert it first.
Do these broken timecodes come from anywhere in particular?
They are almost always produced rather than typed. A frame-rate conversion that rounds the wrong way, a shift applied twice to the same cue, a spreadsheet export where the end column was left empty and read as zero, and a subtitle extracted from a timed-text file with a marker that had no duration to begin with.
Can several files be checked in one run?
Yes. Drop in as many as you like and they are read one after another, each producing its own report, and the reports download together as a zip. The queue shows progress per file, the run can be cancelled partway, and no file is uploaded at any point.