| # | Start → end | Text |
|---|
Retime and convert subtitles in your browser. It fixes both kinds of desync — the constant offset a shift can cure, and the progressive drift from a frame-rate change that a shift cannot — and it reports the overlaps, flashes and never-ending cues that make a technically valid file behave badly in a player.
Step by step
01Load the subtitle file
Choose an .srt or .vtt file. The format is detected rather than asked for, and the file is read in this page — nothing is uploaded.
02Fix a constant offset
If the subtitles are out by the same amount from beginning to end, drag the shift. Positive moves them later, negative earlier, in fiftieths of a second.
03Fix progressive drift
If they start in sync and get further out as the film runs, that is a frame-rate mismatch, and no shift will fix it. Pick the conversion — 23.976 to 25 is the common one — and every timestamp is scaled rather than slid.
04Check the timing, then download
The Checks tab lists overlapping cues, cues too short to read, and cues that never leave the screen. Pick the output format and download.
Worked example
The combination that confuses people: fixing the offset makes the opening line right and leaves the ending worse than before.
Given
Why the shift alone fails
Shift only (-2s):
first cue 00:00:02 -> correct
last cue 01:38:00 -> still 4m 08s out
Rate 23.976 -> 25 (x1.0427), then shift:
first cue 00:00:02 -> correct
last cue 01:38:00 -> correctA shift slides every cue by the same amount. A frame-rate change multiplies them, so the error grows with the running time — which is why the fix has to be a multiplication too.
Why this one
The two kinds of desync are different problems
A constant offset and a frame-rate drift look the same at the start of a film and nothing like each other at the end. Almost every subtitle tool offers a shift and stops there, which is why people shift, check the opening, and discover an hour later that the ending is worse than before.
SRT and WebVTT are not interchangeable
The differences are small and every one of them is silent. SRT writes 00:00:01,500 with a comma; WebVTT wants a dot. WebVTT needs its header line or a browser rejects the whole track. WebVTT allows an hourless MM:SS.mmm form that SRT does not. A file converted by search-and-replace usually gets one of these wrong and simply does not display.
Valid is not the same as watchable
A file can parse perfectly and still be unpleasant: cues that overlap stack on top of each other in most players, a cue under about 700ms reads as a flash rather than a line, and a cue with a missing end time sits on screen for half a minute. These are reported per cue, and no converter reports them.
Markup does not survive the trip
WebVTT allows voice and class tags — <v Alice>, <c.loud> — that SRT players do not understand. A naive conversion leaves them in the text, so viewers see literal angle brackets on screen. Going to SRT they are stripped instead.
Nothing is uploaded
Subtitle files are often ripped from discs or shared privately, and uploading one to a converter puts it on somebody's server. This reads the file in the page, retimes it in memory, and writes the result from your browser.
The judgement call
Check the first line and the last line against the picture. The answer follows from the pair.
Out by the same amount at the start and the end
Shift only
A constant offset, usually from a different intro length or a re-encode. Drag the shift until the first line matches and the rest follows.
In sync at the start, further out as it runs
Frame-rate change
The classic film-to-PAL mismatch. 23.976 to 25 speeds the film up by 4.27%, so subtitles fall behind by about 4 seconds every 100 seconds.
Out at the start and drifting as well
Rate first, then shift
Apply the rate change to remove the drift, then slide what is left. Doing it the other way round means re-adjusting the shift afterwards, because scaling moves the offset too.
Some lines right, others wildly wrong
Neither
That is not desync — it is a subtitle file for a different cut of the film, with scenes added or removed. No global correction can fix it; you need the file for your version.
Subtitles do not appear at all in a browser
Convert to WebVTT
HTML video will not load SRT. It needs WebVTT, with the WEBVTT header line — a file missing it is rejected outright, silently.
Reference
FAQ
Check whether the error is constant or growing. If the subtitles are out by the same amount at the start and the end, drag the shift until the first line matches. If they start in sync and fall further behind as the film runs, that is a frame-rate mismatch and a shift will not fix it — pick the frame-rate conversion instead, then shift whatever remains.
WebVTT is the format HTML video uses; SRT is what desktop players and most downloads use. Practically: SRT separates milliseconds with a comma and numbers each cue, WebVTT uses a dot, needs a WEBVTT header line, allows positioning settings on each cue, and permits an hourless MM:SS.mmm timestamp. A browser will not load an SRT file at all.
Because the subtitle file was timed against a copy running at a different frame rate. Film is 23.976fps and PAL is 25fps, so a PAL transfer runs 4.27% faster — subtitles timed for the film fall behind by about four seconds every hundred. The correction has to multiply every timestamp, not slide them.
Yes, that is what this does. The file is read into the page, converted in memory and written back out by your browser. Nothing is sent anywhere, there is no account and no size limit.
Roughly 700 milliseconds at the absolute minimum, and most style guides ask for at least a second. Below that a line registers as a flash rather than something you read. At the other end, a cue over about ten seconds usually means a missing end time rather than a deliberately long line — both are flagged here.
No, and nothing else will either. That pattern means the file belongs to a different cut of the film, with scenes added or removed, so there is no single shift or scale that reconciles them. You need the subtitle file matching your version.
Keep going
Trim video
Cut the clip the subtitles belong to, losslessly where the keyframes allow.
Extract audio from video
Pull the soundtrack out as a copy rather than a re-encode.
Text diff checker
Compare two subtitle revisions line by line.
Video to GIF
Turn a subtitled moment into a shareable GIF.