Subtitle editor

#Start → endText
SRT output

Cues0
Shift+0.00s
Rateunchanged
Problems0

Subtitle Editor

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.

Formats, read and written: SRT and WebVTT
2
Frame-rate conversions built in
6
Timing faults detected per cue
4
Bytes uploaded
0

Step by step

How to use it

  1. 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.

  2. 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.

  3. 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.

  4. 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

A film subtitle two seconds late and drifting

The combination that confuses people: fixing the offset makes the opening line right and leaves the ending worse than before.

Given

Source
SRT timed for a 23.976fps cut
Playing at
25fps PAL
Symptom
2s late at the start, 5 minutes late at the end

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  ->  correct
Correction type
Multiplicative, not additive
Scale applied
25 / 23.976 = 1.0427
Drift at 90 minutes
0s, from 3m 50s

A 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

What this tool does differently

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

Which correction does your file need?

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

The numbers behind it

Minimum readable cue
700 msBelow this a line reads as a flash.
Long-cue threshold
10 sUsually a missing end time rather than an intentional line.
Film to PAL
×1.042723.976 → 25 fps. About 4s of drift every 100s.
PAL to film
×0.959025 → 23.976 fps, the reverse case.
SRT separator
Comma00:00:01,500 — a dot here breaks most desktop players.
WebVTT separator
Dot00:00:01.500, plus a mandatory WEBVTT header line.

FAQ

Questions, answered plainly

How do I fix subtitles that are out of sync?

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.

What is the difference between SRT and VTT?

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.

Why do my subtitles drift further out of sync as the film goes on?

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.

Can I convert SRT to VTT without uploading the file?

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.

How long should a subtitle stay on screen?

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.

Will this fix subtitles that are right in some scenes and wrong in others?

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.