Skip to main content
SubtitleMatrix

Find Gaps Between Subtitles

Quality checksGaps in the timeline
Or paste subtitle text

Options

Milliseconds of blank screen allowed between one cue ending and the next beginning. The blank is measured from the furthest end reached so far, not from the cue immediately before it, so a long cue sitting under several short ones does not invent a gap that was never on screen. What the number does depends on the page you are on: closing gaps closes anything wider than it (0 is the usual value and means the two meet exactly), while a check page lists every stretch wider than it and leaves the file alone. Anything at or under the number is left alone either way.

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 gap is empty screen between two cues: the stretch from the end of the cue that was on screen to the start of the next one. This page lists every gap longer than the limit you set, in milliseconds, and names the two cues it falls between. The file itself is not touched — what comes back is a report you can download as a PDF to read or as a CSV to sort in a spreadsheet.

Gaps are not automatically a fault. A scene change, a beat of silence, a cut to a different speaker: all of them leave the screen empty on purpose. What the number tells you is whether the emptiness outlasts your limit. Two seconds reads as a pause; forty seconds usually means a cue was lost, or a timecode was pasted in at the wrong place and dragged everything after it along. The limit is yours to choose, and it is the entire test: the comparison is strictly greater than the number you type, so the limit is the widest pause you are willing to accept, and a file whose longest pause is exactly that comes back clean.

Two things this page deliberately does not do. First, gaps are measured against the furthest end reached so far rather than the cue immediately before, so a caption held across a whole scene does not read as a nine-second hole. Second, formats that store no end time — LRC and plain text — are not accepted at all: there is nothing to measure, and reporting a clean result on a format that cannot hold the answer would be a false acquittal. Anything that had to be repaired while the file was read is listed at the top of the report, so a cue with a broken timecode is never quietly folded into the count.

Examples

A pause longer than the limit

Subtitles

1
00:00:01,000 --> 00:00:02,000
Where were you?

2
00:00:06,000 --> 00:00:07,000
I was working late.

3
00:00:07,500 --> 00:00:08,500
Until when?

What the report finds

Gaps between cues — 1 found

Severity   Cues   Start          End            Measured   Limit
Warning    1, 2   00:00:02.000   00:00:06.000   4000 ms    2000 ms

The limit here is 2000 ms, so the four seconds of blank screen between cue 1 and cue 2 are reported and the half second before cue 3 is not. Both pauses exist in the file; only one of them is longer than the number the user chose.

A pause exactly at the limit

Subtitles

1
00:00:01,000 --> 00:00:02,000
Where were you?

2
00:00:04,000 --> 00:00:05,000
I was working late.

What the report finds

Gaps between cues — Nothing found

Cues         2
Checks run   1

The blank stretch is exactly 2000 ms against a limit of 2000. Nothing is reported and the report still says the check ran — the limit is the widest pause that is still acceptable, not the narrowest one that gets flagged.

A cue held across a whole scene

Subtitles

WEBVTT

00:00:00.000 --> 00:00:10.000
Hold on.

00:00:01.000 --> 00:00:02.000
Wait.

What the report finds

Gaps between cues — Nothing found

Cues         2
Checks run   1

A ten-second cue with a short one nested inside it. Measuring against the furthest end reached so far sees no hole at all, while comparing each cue with the cue before it would report nine seconds of silence that no viewer ever sees.

Frequently asked questions

What counts as a gap between subtitles on this page?

The time from the end of the cue that was on screen to the start of the next one, measured in milliseconds and reported only when it is longer than the limit you set. Cues that touch have a gap of zero and are never listed. A pause of exactly the limit is not listed either — the test is longer than the limit, not longer than or equal to it.

What gap limit should I use?

It depends on what you are shipping. Broadcast work usually keeps pauses under two seconds so the screen never looks abandoned; streaming and online video tolerate more. The default is 1000 ms. Whatever you pick applies to the whole run, so a batch of files is judged by the same number, and the report prints the limit next to every gap it finds.

Does this tool close the gaps it finds?

No. It reads the file and produces a report; not one timecode is moved. Filling gaps is a separate tool that stretches cues to cover the empty stretches, and keeping the two apart means the report describes the file as it actually is rather than a version this page already edited.

How is the gap calculated when cues overlap or nest?

Against the furthest end time reached so far in the file, never against the cue immediately before. A short cue sitting inside a long one leaves the furthest end untouched, so no gap is invented there. Only when the next cue starts after that furthest end is the difference measured, which is the same span a viewer sees empty.

Which subtitle formats can be checked for gaps?

The ten that store both a start and an end time: SRT, WebVTT, ASS, SSA, SBV, SMI, MicroDVD, TTML, JSON and CSV. LRC and plain text are left out because they hold one time per line. A file in one of those two formats has to be converted before it can be measured for gaps.

Why does the report mention things that were lost while reading?

Because the reader repairs what it cannot represent: a cue whose end is not after its start is given one millisecond so the file can be held at all. That repair is listed in the report header rather than buried in the findings, so the count of gaps below it is read with the knowledge that the times it was measured from are not entirely the file's own.

Can I run a whole season through this page at once?

Yes. Drop in as many files as you like and they are checked one after another, each with its own report, and the reports download together as a zip. The queue shows progress per file and the run can be stopped partway without leaving a worker behind.

Related tools