How to Fix Subtitle Sync Problems: Delay, Drift and Frame Rate Mismatch

Few things spoil a film faster than subtitles that do not match the speech. The line appears after the actor has finished talking, or the text is a full scene behind, or it starts perfectly and then slides further out of sync as the film goes on. The good news is that nearly every sync problem falls into one of four patterns, and each pattern has a straightforward fix.

This guide shows you how to recognise which pattern you have, how to correct it with simple arithmetic, and how to check the result. You do not need special skills, only a video player and a subtitle editor.

Why subtitles go out of sync

A subtitle file stores times, but a time only means something relative to a particular video. If the video differs from the one the subtitles were timed against, the lines no longer land in the right place. Here are the usual reasons:

  • The video has a different intro, such as a studio logo, that shifts everything by a few seconds.
  • The video was encoded from a source with a different frame rate, so it runs slightly faster or slower than the original.
  • The video is a different edition, such as a director's cut, an extended version, or a television edit with scenes added or removed.
  • The subtitles were simply timed carelessly or converted badly.

Which of these applies determines the type of error you see.

Step 1: Diagnose the pattern

Before changing anything, take three measurements. Play the video with the subtitles loaded and note, for the first line of dialogue, a line in the middle, and a line near the end, how far the subtitle is from the speech. Write down whether it is early or late and by roughly how much.

Now compare your three numbers.

Pattern A: constant offset. All three measurements are about the same, say 2.5 seconds late each time. The file is simply shifted. This is the easiest case.

Pattern B: linear drift. The error grows steadily. The start is fine or slightly off, the middle is a few seconds out, and the end is much worse. This almost always means a frame rate mismatch or a difference in playback speed between the subtitle's source video and yours.

Pattern C: a jump. The subtitles are in sync for a while, then suddenly shift by a fixed amount and stay shifted. This usually means a scene was cut or added, for example an extra recap at the start of an episode or a commercial break that was removed.

Pattern D: scattered errors. Some lines are right, others are not, with no clear trend. The file is probably badly timed, or it is made for a different version of the film altogether. Re-timing may take more effort than finding a better file.

Fixing a constant offset

If you have pattern A, shift every timecode by the same amount. In subtitle editors this is usually called "shift", "adjust times", or "synchronize". Enter a positive value to make the subtitles appear later and a negative value to make them appear earlier.

Most video players also let you adjust the delay while you watch, with keyboard shortcuts you can look up in the player's documentation. This is a quick way to find the right number: nudge the delay until the lines match the speech, then note the value the player shows. Then apply the same shift permanently in an editor so the correction travels with the file rather than living in one player's settings.

Be careful with the sign. If subtitles are two seconds late, you need to move them two seconds earlier, which is a shift of minus two seconds. It is an easy mistake to make, and it doubles the error instead of fixing it.

Fixing linear drift with two points

For pattern B, a single shift is not enough, because the error is different at different times. Instead you need to adjust both the offset and the speed. The classic method uses two reference points.

  1. Pick a line early in the film. Note its current time in the file, call it t1, and the time it should appear, t1′.
  2. Pick a line late in the film. Note its current time, t2, and the time it should appear, t2′.
  3. Compute the scale factor and the offset:
scale  = (t2' - t1') / (t2 - t1)
offset = t1' - scale * t1
new_time = scale * old_time + offset

Every timecode in the file is then recalculated with the last line. You do not have to do this by hand. Subtitle Edit, Aegisub, and similar programs have a "synchronize with two points" or "set start and end times" feature where you simply set the new times for the first and last lines and the program works out the rest.

For good accuracy, choose reference lines that are far apart, ideally close to the very first and very last spoken lines, and pick lines where the speech starts clearly so you can judge the timing precisely.

Fixing a frame rate mismatch

Linear drift is so common that it deserves its own section. Films are shot at 24 frames per second, or more exactly 23.976. Television in regions that use the PAL system runs at 25 frames per second. When a film is converted for PAL television, it is simply played about 4 percent faster, which also makes it about 4 percent shorter. Subtitles timed against the 25 fps version are then too early when used with the 23.976 version, and the gap widens over time.

The ratios you will meet most often are:

From To Multiply times by
23.976 fps 25 fps 0.9590
25 fps 23.976 fps 1.0427
24 fps 25 fps 0.9600
25 fps 24 fps 1.0417
29.97 fps 30 fps 0.9990
30 fps 29.97 fps 1.0010

To see why this matters, take a two-hour film. Playing it at 25 fps instead of 23.976 shortens it by about five minutes. A subtitle timed for the shorter version would be five minutes early by the end of the longer one. That is why the error feels so dramatic at the end and invisible at the start.

If you know the two frame rates, apply the matching factor to every timecode. Most editors have a "change frame rate" command for this. If you do not know which rates are involved, try the common pairs from the table and see which one makes the last line match, then confirm with a line in the middle.

Fixing a jump

For pattern C, split the problem at the point where the shift happens. Correct the first part by one offset and the second part by another. In an editor, select the range of lines after the jump and shift just those. Look at the lines at the boundary afterward, because a removed scene may mean a few subtitle lines should be deleted, and an added scene may mean some speech has no subtitles at all.

If the two versions of the video differ by many cuts, it is usually quicker to look for subtitles made for your exact release. Releases are often named with the source and encoder, and subtitle sites often list which release each file matches.

Testing the result

After correcting the file, test it at five or six points, not just the beginning. Check the very first line, the very last line, and a few lines spread across the film. If all of them are within a quarter of a second or so, the sync is good. Larger differences deserve a second pass.

Also watch for lines that have been squeezed or stretched. When you change the speed of the file, the duration of every subtitle changes slightly. This is normal and usually invisible, but extremely short lines can become too short to read. Check a handful of the shortest ones.

Sync and merging subtitles

If you plan to combine two translations with the merging tool, fix the sync first. The merger lines up the two files by their timecodes, so it assumes both files already match the same video. If one file is out of step, almost every row will show up as different, and the comparison becomes useless. The right order is: get both files in sync, convert both to the same encoding, then compare and merge. Our merge guide covers the whole workflow.

A helpful trick is to sync both files to the same video separately, then merge. If one of the files is a translation of the other and was timed against the same source, the two will already match and you can skip this step.

Prevention: get it right the first time

Some habits prevent most sync trouble:

  • Download subtitles that name your exact release, not just the title of the film.
  • Keep the video's frame rate in mind when you see a mismatch. If a subtitle file mentions 25 fps and your video is 23.976, you already know the fix.
  • When you make or fix subtitles, save a copy before you change anything. Re-timing is easy to get wrong, and an untouched original lets you start over.
  • Test at several points in the film before you declare the job finished.

Summary

Subtitle sync problems come in four kinds. A constant offset needs a single shift. Linear drift needs a two-point correction or a frame rate conversion. A sudden jump needs separate shifts for each section. Scattered errors mean the file does not belong to your video. Measure at the beginning, middle, and end, work out which pattern you have, apply the matching fix, and test again. With this method, most files can be repaired in a few minutes.

Merge your own subtitle files

Compare two .srt files side by side and save the best lines as one file. It runs in your browser, so nothing is uploaded.

Open the SRT Merger