Subtitle Sync

SHIFT · STRETCH · FRAMERATE FIX

🔒 100% private — your subtitles never leave your device
Subtitles running early or late? Load the file, shift it by however many seconds it is out, and download the corrected copy. If the error grows as the film goes on, it is a framerate mismatch rather than a delay — use the fps presets, or give two lines their correct times and the drift is corrected across the whole file. SRT and WebVTT, entirely in your browser.
🎬

Drop an .srt or .vtt file here or click to browse

SubRip (.srt) and WebVTT (.vtt) · nothing is uploaded — the file is read on your device

Fix out-of-sync subtitles online

A subtitle file that does not match its video is almost always wrong in one of two ways, and telling them apart takes ten seconds. Play the first minute: if the subtitles are out by, say, two seconds there and still out by two seconds an hour later, it is a delay, and one offset fixes the whole file. If they are nearly right at the start and a minute out by the end, it is a framerate mismatch, and shifting will never fix it — the file has to be stretched.

Subtitle Sync does both, and does them in the browser. The file is read on your device, the timestamps are recalculated there, and the corrected file is written there. Nothing is uploaded, which also means it works on a file you would rather not send anywhere.

How to resync a subtitle file

  1. Load the .srt or .vtt file — drag it in, browse for it, or paste the text.
  2. Measure the error — note the time a line is spoken and the time it appears. Do it once near the start and once near the end.
  3. Pick the correction — the same error at both ends is a Shift; a growing error is a Framerate fix, or Two points if you do not know the framerates.
  4. Check the preview and download — the before-and-after times are listed for the first and last cues, and you can save as SRT or VTT regardless of what you loaded.

Which correction do you need?

The 23.976 to 25 fps problem

Film is shot at 24 frames per second, and the digital masters that follow it run at 23.976. European television runs at 25. The cheapest way to get one onto the other is simply to play the film faster — the PAL speed-up — so a 24-frame second becomes a 25-frame second and the whole film finishes about 4% early.

Subtitles timed against the slower copy therefore fall further behind the faster one with every minute that passes: about 2.5 seconds after a minute, 25 seconds after ten, and roughly three and a half minutes by the end of a two-hour film. Multiplying every timestamp by 23.976 ÷ 25 puts them back. That is exactly what the PAL preset does, and why it fixes files that no amount of shifting will.

Framerate pairs worth knowing

What is kept, and what is not

Only the timestamps change. The text of every line, its line breaks and its ordering are written back exactly as they were read. WebVTT cue settings such as line:90% or align:start are positioning rather than timing and are carried through untouched, along with NOTE and STYLE blocks. Converting to SRT drops those, because SRT has nowhere to put them — that is a property of the format, not a loss in the tool.

Frequently Asked Questions

My subtitles are two seconds late. What do I enter?

A negative offset: -2. Late subtitles need to be moved earlier in the file, and the offset is added to every timestamp, so moving them earlier means adding a negative number. If they appear before the line is spoken, use a positive offset instead.

The subtitles start correct but are minutes out by the end. Why?

The file was timed against a copy of the video running at a different framerate, most often 23.976 fps against 25 fps. The error is proportional to elapsed time, so it is invisible in the first scene and enormous in the last. Use the Framerate tab, or the Two points tab if you do not know which framerates are involved.

What is the difference between 23.976 and 25 fps subtitles?

None, in the file itself — SRT stores times, not frames. The difference is the video each set of times was measured against. A 23.976 fps master and a 25 fps PAL transfer of the same film are the same footage played at different speeds, so a given line of dialogue happens at a different clock time in each. Multiplying every timestamp by 23.976 ÷ 25 (or the reverse) converts between them.

Does this upload my subtitle file?

No. The file is read, recalculated and written entirely in your browser. It is never sent to KlipTools or anywhere else, and the tool keeps working if you go offline after the page has loaded.

Can I convert SRT to VTT while I am fixing the timing?

Yes. The download format is a separate choice from the file you loaded, so you can load an SRT and save a WebVTT, or the reverse. SRT output is renumbered from 1 and uses comma decimals; VTT output uses full stops and keeps its header.

Will it break the accents or non-Latin text in my subtitles?

No. Files are read and written as UTF-8, and the subtitle text is copied through untouched — only the numbers on the timestamp lines are recalculated.

What happens to lines that would end up before the start of the video?

A cue that would begin before 00:00:00 is moved to the start of the file rather than written with a negative time, which most players reject. A cue that would finish before 00:00:00 is dropped, because there is no valid place to put it. Both counts are reported above the preview so you can see whether anything you cared about was affected.

How do I find the exact offset instead of guessing?

Use the helper on the Shift tab. Pick a line from the list, play the video until you hear it, pause, and type the player's time. The offset is filled in from the difference. Doing the same thing at the start and at the end — on the Two points tab — also corrects any drift between them.

Does it work with ASS, SSA or SUB files?

Not yet. Subtitle Sync reads SubRip (.srt) and WebVTT (.vtt), which is what streaming sites, players and video editors accept. Convert other formats to SRT first, resync, and convert back if you need to.

Can I fix a file where only part of it is out of sync?

Not in one pass. A file where the error changes abruptly — usually because a scene was cut from one release and not the other — needs each section handled separately. Split the file, correct the parts independently, and join them. Shift and stretch both assume a single steady relationship between the subtitles and the video.