An overlapping subtitle is a cue that starts before the previous cue has ended, so for a moment two cues claim the same stretch of time. FindUtils Subtitle Overlap Fixer repairs SRT and WebVTT files by moving each early start to the exact moment the previous cue ends, then extending any cue that becomes too short to read. Cue text is never edited and no cue is removed. The file is read and fixed in your browser; it is not uploaded.

This guide shows what an overlap looks like in the file, where overlaps come from, exactly what the fix changes, and how to check the result before you use it.

What an Overlap Looks Like

Every SRT cue has a start and an end on its timing line. An overlap is visible when you compare one cue's end with the next cue's start:

1
2
3
4
5
6
7
1
00:00:01,000 --> 00:00:04,000
First line.

2
00:00:03,000 --> 00:00:06,000
Second line starts too early.

Cue 1 is on screen until 4.000 seconds. Cue 2 starts at 3.000 seconds. For one second both cues are active at the same time. The same pattern in WebVTT uses dots instead of commas (00:00:03.000), and the problem is identical.

Overlaps are hard to spot by eye in a long file, because each timing line looks fine on its own. The fault is only in the relationship between neighbours.

Why Subtitle Cues Overlap

Overlaps are almost always the side effect of another edit rather than a mistake in the original timing:

  • Merging two files. Two subtitle tracks that were each clean can collide where one ends and the next begins, or interleave when both cover the same stretch of video.
  • Shifting part of a track. Delaying or advancing one section pushes its first cues into the tail of the section before it.
  • Changing the frame rate. Rescaling every timestamp by a factor, then rounding to whole milliseconds, can bring cues that were a few milliseconds apart into contact.
  • Hand edits. Stretching one cue's end to give a line more reading time, without checking the next cue's start, creates an overlap directly.
  • Machine-timed captions. Automatically generated captions often end each cue slightly after the next one begins.

If every cue is out by the same amount against the audio, that is an offset, not an overlap, and the Subtitle Shifter is the right tool. If the error grows as the video plays, that is frame-rate drift, which the Subtitle FPS Converter corrects. Overlaps are cues colliding with each other, whatever their sync with the audio.

What Players Do With Overlapping Cues

Players do not agree on how to show overlapping cues. Some display both lines stacked on screen at the same time, some cut the first line short when the second begins, and some skip or flash one of them. The same file can look acceptable in one player and broken in another.

The W3C WebVTT specification allows cues to overlap in time; a WebVTT renderer displays every cue whose time range covers the current moment, which is how deliberate overlaps such as two speakers talking at once are shown. SubRip has no formal specification, so SRT behaviour depends on the player. An overlap you did not intend is therefore safest removed, so every player shows the same thing.

What the Subtitle Overlap Fixer Changes

The Subtitle Overlap Fixer applies one fixed rule, in this order:

  1. Sort. Cues are sorted by start time. Cues that start at the same moment keep their original order. Sorting can be switched off (see below).
  2. Push. Walking through the cues in order, any cue that starts before the previous cue ends has its start moved to exactly the previous cue's end. The previous cue is not changed.
  3. Minimum duration. If a moved cue now lasts less than the minimum duration, its end is extended to reach it. The default is 300 ms, adjustable from 100 to 1000 ms. The minimum applies only to cues that were moved.
  4. Write. The result keeps the input format. SRT cues are renumbered from 1; WebVTT cues keep their identifiers.

Here is the example above with a third, very short cue, before and after:

1
2
3
4
Before                                   After (minimum 300 ms)
1  00:00:01,000 --> 00:00:04,000         1  00:00:01,000 --> 00:00:04,000
2  00:00:03,000 --> 00:00:06,000         2  00:00:04,000 --> 00:00:06,000
3  00:00:05,900 --> 00:00:06,100         3  00:00:06,000 --> 00:00:06,300

Cue 2 starts at cue 1's end. Cue 3 starts at cue 2's end, which leaves it 100 ms long, so its end is extended to 06,300 to meet the 300 ms minimum.

What never changes: cue text, line breaks and WebVTT cue settings are copied exactly as read, and every cue in the input is in the output. A cue whose whole time range sits inside the previous cue is not dropped; it is moved to start at the previous end and given the minimum duration. WebVTT NOTE, STYLE and REGION blocks are not carried into the output, so re-add them if your file relies on them.

The Sort Option

Leave Sort cues by start time first on for merged files, where cues from two sources are interleaved. With sorting off, cues are processed in the order they appear in the file. A cue that is out of order is then pushed to after the cue before it, instead of being moved back into place. Switch sorting off only when the order in the file is deliberate.

Choosing a Minimum Duration

The 300 ms default keeps a pushed cue visible for a readable moment. A higher minimum keeps short interjections on screen longer, but every extension pushes the end of that cue further, which can create a new overlap with the next cue. That next cue is then pushed in turn. Keep the minimum modest unless you have a reason to raise it.

How to Read the Adjustment List

After you press Fix overlaps, the summary shows three counts: Overlaps found (cues that started before the previous cue ended), Cues adjusted (cues whose timing changed) and Minimum-duration extensions (moved cues whose end was also extended).

Below the summary, the list shows each changed cue by its number in the output file:

  • Start moved. Only the start changed. The row shows the old start and the new start, for example 00:00:03,000 -> 00:00:04,000.
  • Start + extended. The start moved and the end was extended to the minimum duration. A second row shows the old and new end.

The list shows the first 50 adjustments. When there are more, a line says how many are shown out of the total, and the downloaded file contains every change. Copy summary puts the counts and the listed changes on the clipboard, which is useful for a change note. Because the cue numbers refer to the output file, you can jump straight to them in the downloaded file or in your editor and check each one against the video.

A file with no overlaps reports zero and still downloads. An SRT file comes back renumbered from 1, which also cleans up numbering left with gaps or duplicates by an earlier merge.

The Long-Chain Warning

Each moved cue can push the next one. In a run of cues that all overlap, the delay accumulates: every cue starts where the previous one ended, so a cue near the end of the run can move much further than its own overlap. A small chain looks like this:

1
2
3
4
5
Before                                   After
1  00:10:00,000 --> 00:10:03,000         1  00:10:00,000 --> 00:10:03,000
2  00:10:01,000 --> 00:10:04,000         2  00:10:03,000 --> 00:10:04,000
3  00:10:02,000 --> 00:10:03,500         3  00:10:04,000 --> 00:10:04,300
4  00:10:04,100 --> 00:10:06,000         4  00:10:04,300 --> 00:10:06,000

Cue 3 moves two seconds, and cue 4 is pushed as well even though its original start was clear of cue 3's original end.

When the largest move in the file is more than five seconds, the page shows a warning with that figure. The file is still produced, but a move that large usually means two tracks were merged without being aligned first, so the cues are not really overlapping by accident; they belong to different timelines. Align the second track with the Subtitle Shifter before merging, then run the overlap fix on the result.

Which Tool to Use First

The fixer is usually the last step in a chain of edits:

  1. Correct drift with the Subtitle FPS Converter.
  2. Correct a constant offset with the Subtitle Shifter.
  3. Join parts with the Subtitle Merger. The merging guide covers aligning the parts.
  4. Fix overlaps with the Subtitle Overlap Fixer.
  5. Strip hearing-impaired tags and formatting with the Subtitle Cleaner, or change format with SRT to VTT.

Fixing overlaps before a shift or a frame-rate change wastes the work, because those edits can create new overlaps.

Using It From Code

The same fix is available on the FindUtils REST API as subtitle-overlap-fix and on the MCP server as subtitle_overlap_fix, with the same min_duration_ms and sort options. An API or MCP call sends the caption text to FindUtils over TLS for processing; the browser page does not.

FAQ

Does fixing overlaps change when the first cue appears? No. The first cue after sorting has nothing before it, so it is never moved. Only cues that start before the previous cue ends are changed.

Why is there no gap between the fixed cues? The fixer moves the start to exactly the previous end, so the two cues touch. That removes the overlap without shortening the earlier cue.

Can I trim the earlier cue instead of moving the later one? Not with this tool. It applies one rule, moving the later start, so the result is predictable and easy to check. Desktop subtitle editors offer other strategies if you need them.