Subtitles · 9 min read

Subtitles out of sync? A practical fix for SRT and ASS

Subtitles that appear two seconds early, drift further behind as the film goes on, or vanish after the first scene — these are different problems with different fixes. Here is how to tell them apart and solve each one in a few minutes.

By the PurePlay editorial teamUpdated 14 November 2026

First, work out which kind of desync you have

  • Constant offset. Every line is early or late by the same amount, from the first subtitle to the last. Fix: apply a delay offset.
  • Progressive drift. At the start it looks fine, by the middle it is a second behind, by the end it is several seconds behind. Fix: the subtitle file is timed for a different frame rate (23.976 vs 25 fps is the classic) — it needs linear scaling, not an offset.
  • Only the first minutes are wrong. Usually the subtitle file belongs to a different cut of the film (extended vs theatrical). Fix: find the matching release version.
  • Subtitles appear in the wrong order — the file's timestamps are broken. Fix: repair the file.

Fixing a constant offset in the player

Most serious players have a subtitle delay control. In PurePlay, open the player, tap the subtitle button and choose Subtitle delay. Each tap adjusts by 0.5 seconds; a reset option returns to zero.

To find the right value: pause on a line of dialogue you can match to a visible mouth movement, note how early or late the text is, and count in half seconds. If the text appears 1.5 seconds before the actor speaks, add +1.5 s (positive values delay the text).

Sign convention matters: in virtually every player, a positive delay makes subtitles appear later. If the text is late already, use negative values.

Fixing progressive drift

Drift means the timestamps are scaled incorrectly. The common ratios:

  • 23.976 → 25 fps (PAL speedup): subtitles need to be scaled by 23.976/25 ≈ 0.959.
  • 25 → 23.976 fps: scale by 25/23.976 ≈ 1.043.
  • 24 → 25 fps: scale by 0.96.

Players cannot usually rescale timestamps on the fly. The practical fix is to repair the subtitle file once, on a computer, with a tool that supports frame-rate conversion. Subtitle Edit on Windows, Aegisub on any platform, or a one-line FFmpeg operation:

ffmpeg -i movie.srt -filter_complex "setpts=PTS*1.043" movie_fixed.srt

Then enable the corrected file in the player. After the first fix, the file is correct forever for that release.

When the file itself is broken

Malformed SRT files — missing blank lines, overlapping timecodes, "00:00:00,000 --> " without a second timestamp — often load in one player and not in another. A quick way to test the file independently is to view it as plain text:

1
00:00:12,340 --> 00:00:15,120
Some dialogue here

2
00:00:16,000 --> 00:00:18,500
More dialogue

Each entry needs a number, a timecode line with -->, the text, and a blank line between entries. Re-encoding through a subtitle editor usually fixes broken files in one pass.

ASS/SSA subtitles are a different beast

ASS files carry styling — fonts, positions, karaoke effects — and complex rendering. A player that only understands plain SRT may show nothing, or raw text with tags like {\an8}. If your file is .ass, use a player with a real subtitle renderer (LibVLC-based players do) or convert to SRT if styling is not important:

ffmpeg -i movie.ass movie.srt

The conversion drops styling but keeps text and timing, which is what most people need for a downloaded release.

Embedded subtitles and external files

An MKV can contain subtitle tracks. A player should list them separately from external files. If the embedded track looks wrong but an external SRT in the same folder is correct, load the external file explicitly rather than trusting automatic selection. Keeping the file name in sync — movie.mkv + movie.en.srt — helps most players pick the right one automatically.

Choosing subtitle language automatically

Multi-language releases may ship four or five subtitle tracks. A good player prefers the track matching your app or system language, then the first available, and lets you switch from the player menu without restarting. If it always picks the wrong one, that is a player setting, not a file problem.

Checklist

  1. Constant error → set a subtitle delay in the player.
  2. Error grows over time → rescale timestamps (frame-rate mismatch).
  3. File does not load → inspect the SRT structure, or convert from ASS/SSA.
  4. Embedded track wrong → load the external SRT explicitly.
  5. Only the first half is wrong → wrong cut of the film; find the matching release.

In practice, suboptimal subtitles are the most fixable annoyance in local media playback — and the fix is usually a single offset or a single conversion, not a new download.

Written by the PurePlay editorial team · Tested with SRT, ASS/SSA and VTT files on Android 14–16 · Corrections: contact page.
Next: Audio/video sync · Playing MKV on Android