How to Compare Two Subtitle Translations and Pick the Best Lines
A practical method for comparing two subtitle translations: what to check, how to resolve conflicts and how teams can review a merged file.
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.
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:
Which of these applies determines the type of error you see.
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.
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.
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.
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.
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.
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.
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.
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.
Some habits prevent most sync trouble:
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.