Fix & validate an SRT file

Finds the structural faults that stop SRT files loading — numbering, overlaps, bad durations, malformed timestamps — and repairs them in one pass. In your browser, no upload.

Runs in your browser. Files never leave your device.

Drop a subtitle file

or ·

SRT (also VTT, ASS) · processed in your browser · nothing is uploaded

The small faults that break SRT files

SRT is forgiving to read and unforgiving to play. A single missing blank line, a comma written as a period, a cue numbered out of order, or an end time before its start — any of these can make a player silently refuse the file. This tool parses defensively, reports every problem it finds, repairs the fixable ones, and hands back a clean file with a list of exactly what changed.

What it detects and repairs

  • Numbering — out-of-order, duplicate or missing cue numbers → renumbered 1…n.
  • Overlaps — a cue running past the next one’s start → end time trimmed to the next start.
  • Bad durations — zero-length or end-before-start → given a short, capped positive length.
  • Timestamps. vs , separators, odd spacing, hours over 99 → normalised.
  • Structure — missing blank lines, BOM, CRLF/CR endings → repaired to clean SRT.
  • Tags — an unclosed <i> or orphan </b> → balanced.
  • Empty cues — removed.

Reading speed is flagged, not changed

Lines that flash by too fast to read — above roughly 20 characters per second, the widely used Netflix-style limit — are reported separately. The tool will not shorten your text or stretch your timing on its own; that’s an editorial call. Open the flagged cues in the editor to fix them deliberately.

before                         after
3                              3
00:00:05.000 --> 00:00:04,000     00:00:05,000 --> 00:00:06,000
<i>unclosed italic            <i>unclosed italic</i>

Limits

The tool repairs structure and timing sanity, not meaning — it can’t know the correct time for a cue, only that an impossible one needs fixing. For sync problems use the shifter; for garbled characters, the encoding fixer. Everything runs locally, no upload.

Frequently asked questions

What does it actually fix?

Broken or out-of-order numbering, overlapping cues, negative and zero-length durations, malformed timestamps (including . used instead of ,), missing blank lines between cues, stray BOM/line-ending issues, and unbalanced formatting tags like an unclosed <i>. Each fix is listed so you can see what changed.

Will it delete lines that are “too fast to read”?

No. Cues that exceed the reading-speed norm (about 20 characters per second) are flagged for your attention but never changed or removed — only you can decide whether to shorten the text or extend the timing.

How are overlaps and bad durations repaired?

An overlapping cue’s end time is trimmed back to the next cue’s start. A zero or negative duration is given a short positive length, capped so it never runs into the following cue. Timing order is never reshuffled.

My player says the SRT “won’t load”. Will this help?

Usually yes. Players reject SRT files over small structural faults — a missing blank line, a comma/period mix-up, a stray number. Those are exactly what this repairs. If the text also looks garbled, run the encoding fixer first.

Is anything uploaded?

No. Validation and repair run in your browser; the file never leaves your device.