Skip to the tool
CaptionSuiteCaptionSuite home

Sync

Fix out-of-sync subtitles

Captions that sit two seconds late all the way through, or start right and drift, are a timing problem and not a transcription problem. Fix the timing here, with the video next to it or without.

  • No upload
  • No account
  • No watermark
  • Nothing to meter

Read straight off your disk. Works offline once the model is cached.

Three fixes, and how to tell which one you need

Play the first spoken line and note how far the caption is from the voice. Jump to the last few minutes and do it again. Those two numbers decide everything, because the three ways a subtitle track goes wrong each call for a different repair and the wrong one makes things worse.

If the two numbers match, the whole track is off by a constant. That is the common case: the file was timed against a cut with a different head, an intro was added, or an export padded the front. One shift fixes it.

If the gap is bigger at the end than at the start, the file and the video disagree about how fast time passes. Almost always that is a frame-rate transfer, 23.976 against 25 or 24 against 25, and the drift is about four per cent, which is two and a half seconds per minute. Shifting makes the start right and the end worse. The fix is a stretch, and the frame-rate presets here compute the factor from the two rates rather than asking you to know it.

  • Same offset at both ends: shift everything by that amount. Negative moves the captions earlier
  • Offset grows through the file: pick the frame-rate pair, or use two-point sync if you do not know the rates
  • Right until a certain point, then wrong: the video was edited after the captions were made. Split the track at the edit and shift the second half

Two-point sync, the fix that covers both

Select one line near the start and type the time it should begin. Select one near the end and do the same. Every other cue is moved along the straight line through those two points. If both corrections are the same it is a shift; if they differ it is a stretch, with the exact factor the two lines imply rather than a guess from a preset.

This is how professional subtitle editors retime a track, and it works without knowing why the file drifted. The two points should be far apart, ideally the first clear line and the last, because any error in placing them is spread across the distance between them.

Pick lines that start sharply. A line that begins mid-breath or under music gives you a soft target, and the whole track inherits that softness.

Checking it against the video without uploading it

The subtitle file is enough to shift or stretch it, and the timeline shows every cue so you can see the shape of the track. To check the result you want the picture, and that is one button: add the video and the captions render over it exactly as a burn-in would draw them, from the same renderer, so what you see is what a viewer would see.

Neither file is uploaded. The subtitle file is read in the tab and the video is decoded in the tab, which is why a two-hour recording is as fine here as a two-minute one: there is no server to time out and no size limit to meet. You can confirm that in the browser's network panel, which stays empty while you work.

With the video loaded, the waveform makes the measurement precise. The start of speech is visible as the point where the trace jumps out of the quiet, so you can read the true start time of a line off the picture rather than estimating it by ear.

What this does not do

It does not change the words or the line breaks. Whatever the file said, the file still says, at new times. The editor beside the timeline lets you fix a line if you spot one, and the reading-speed check flags any cue that got too short to read after a stretch, but nothing is rewritten for you.

It does not re-transcribe. If the subtitles were made for a different edit and whole lines are now missing or surplus, no amount of retiming recovers them. For that, transcribe the video you have, which the main tool does from the same drop zone.

Cues that a shift or stretch pushes before the start of the video are dropped rather than piled up at zero, and a cue that straddles the start is clipped so the part still on screen survives. Nothing is silently reordered: the result is sorted and every change is visible in the list.

Questions

Can I fix the timing without the video file?
Yes. Drop the .srt or .vtt on its own and the shift, stretch and two-point controls all work from the file's own timestamps, with the timeline showing every cue. You only need the video if you want to check the result against the picture or read the exact start of a line off the waveform, and you can add it at any point without losing your edits.
Why does shifting fix the start but make the end worse?
Because the problem is a growing offset, not a constant one. The subtitle file and the video disagree about how fast time passes, usually because one was timed at 23.976 frames a second and the other plays at 25. A shift moves every cue by the same amount, so it can only be right at one point. A stretch, or the two-point sync, changes the rate as well.
Does it change the text or the line breaks?
No. Only the timestamps move. The words, the line breaks and the order of the cues come out as they went in, and the text is yours to edit in the list beside the timeline if you want to. The one thing that can change is a reading-speed flag, because a cue that was readable at its old duration may be too fast after a compression.
What happens to captions pushed before the start?
A cue that ends before zero after the change is dropped, because it would otherwise be stacked on top of the others at 00:00 and shown over the wrong picture. A cue that straddles zero is clipped so the part that still falls inside the video is kept. Both are visible in the cue list, so nothing vanishes without you being able to see where it went.