FREE BROWSER TOOL

Free SRT Subtitle Quick Fix

Shift timings, rewrap lines and merge short cues — fix the file locally and download a clean .srt.

  • Data never uploads to a server
  • Free, no sign-up, no watermark
  • Runs offline after loading

Drop a .srt file here, or click to browse.

UTF-8 .srt — up to 20MB

Paste subtitles
Shift all timings
ms — positive delays, negative advances
Rewrap lines
chars/line — CJK per char, EN per word
Merge short cues
cue shorter than (ms)
gap to next ≤ (ms)
History & compare
Export

Errors must be fixed before download.

Upload or paste an .srt — entries show up here, editable one by one.

How to fix a subtitle file

  1. Load the file. Drop a UTF-8 .srt, or paste the text and hit Import. The sample button loads a tiny file so you can try every feature first.
  2. Apply a fix. Shift every cue by ±milliseconds, rewrap to a line-length limit, or preview-then-confirm merging of short adjacent cues. Each step can be undone, and Restore import resets everything.
  3. Polish entries. Index, start, end and text of every cue are editable; flagged problems (negative time, end before start) block export until fixed.
  4. Download. Export writes a real UTF-8 .srt whose numbering, timestamps and text match the preview exactly.

What each fix does

Shift

Offsets every start and end by the same milliseconds — for audio that runs early or late. Results below zero are flagged, never clipped.

Rewrap

Re-breaks lines at a per-line limit: CJK counts characters, English breaks on whole words. Markup like italics tags stays glued together — text itself never changes.

Merge

Short flashes (default: under 1s with a gap ≤200ms) can be merged into their neighbour — you tick each pair first, and every word and millisecond is preserved.

Frequently asked questions

What happens when a shift pushes a cue below zero?

Nothing is silently clipped — the affected entries are highlighted and export is blocked. Reduce the offset or fix those cues individually.

Does rewrapping change my text?

Only line breaks move: CJK text wraps by character, English wraps on whole words — nothing is added, removed or rewritten, and markup like <i> or {\an8} stays intact. Cues that can't be safely rewrapped keep their original text and are flagged.

Can merging short cues lose text?

No. You review and tick every candidate pair first; a merge keeps all text from both cues and spans earliest start to latest end. It never merges across a large gap or double-merges, and undo restores the previous state.

When is export blocked?

When flagged errors exist: timings shifted below zero, an end not later than its start, or a hand-edited time that can't be parsed. Pre-existing overlaps are reported as warnings only — export still works.

Are my subtitles uploaded or stored?

No. Parsing, editing and export all run locally in your browser — the file never leaves the device, nothing is logged or auto-saved, and refreshing clears it.

What SRT files are supported?

UTF-8 files with standard timing lines (00:00:01,000 --> 00:00:02,500). Dot milliseconds, LF/CRLF endings and UTF-8 BOM all work. Blocks that fail parsing are located and kept verbatim — nothing is silently dropped.