Guide · ~8 min read
Fix subtitle sync when every line is early or late by the same amount
Constant delay is the most common subtitle sync issue after export, dubbing, or player delay. This guide shows how to measure the offset, apply one shift to the whole SRT file, and verify lip-sync without re-timing cue by cue.
Constant delay vs. drift
Before you edit hundreds of cues, decide which problem you have. Constant delay means cue 1, cue 50, and cue 200 are all wrong by about the same interval—often 0.3 to 0.7 seconds. Drift means the error grows over time (0.1 s at the start, 2 s by the end). Drift usually needs frame-rate or re-transcode work; constant delay needs a single offset applied to every timestamp in the SubRip file.
Quick test: pause on three unrelated lines (opening, middle, end). If each line is late by similar lip-sync gap, you are in the constant-delay camp. If the gap widens, stop here and fix source timing or FPS in your editor first.
Common causes in real projects
- Dubbed audio — dialogue was replaced but subtitles were not re-aligned.
- Platform export — YouTube, TikTok, or Premiere exported SRT from a timeline with preroll or black.
- Player buffering — some players start video before subtitles; test in VLC or DaVinci with the same file.
- Frame-rate conversion — 23.976 ↔ 25 fps can shift all cues equally if subtitles were not regenerated.
- Re-used SRT — subtitles from a rough cut applied to the final picture lock.
Measure the offset (manual method)
- Open the video in a player that shows milliseconds or allows frame stepping.
- Find when the spoken word starts (not the breath before it).
- Find when the subtitle line appears on screen.
- Subtract: if text appears after speech, subtitles are late— you need a positive shift (move cues later). If text flashes before speech, use a negative shift.
Example: speech starts at 00:01:02,400 and the subtitle appears at 00:01:02,900. The text is 500 ms late, so shift all cues by +500 ms (or +0.5 s).
Apply one shift to the entire SRT
SubRip format stores each cue as HH:MM:SS,mmm --> HH:MM:SS,mmm. A global shift adds
the same milliseconds to every start and end time. You can do this in a spreadsheet or script,
but a browser tool is faster for one-off fixes: paste or open the .srt, enter offset, download
the corrected file.
Use our free SRT time shift tool—it runs locally, supports seconds and milliseconds, and clamps at zero so timestamps stay valid. After download, re-import into your NLE or upload to your platform.
Verification checklist
| Step | What to check |
|---|---|
| 1 | First spoken line after any intro card |
| 2 | Fast dialogue in the middle of the clip |
| 3 | Last line before credits (long files) |
| 4 | On-screen line length still readable (see line length checker) |
If only one scene is wrong after a global shift, that scene may have been edited separately—fix those cues locally rather than changing the global offset again.
When not to use a global shift
Mixed-language cuts, jump cuts with deleted dialogue, or subtitles authored against the wrong audio track need cue-level edits. For translation handoff, you may also want plain dialogue text: use SRT to text to strip timecodes before sending to a translator, then re-time after recording.
Workflow summary
Diagnose constant vs. drift → measure one reliable offset → shift entire file → spot-check three moments → publish. Most editors finish in under ten minutes once they stop tweaking individual cues.
How to use
- Confirm the error is constant: check three lines at different timestamps.
- Estimate offset in seconds or milliseconds (positive if subs appear late).
- Apply the shift to the full SRT, preview in your player, then export.
Frequently asked questions
- How do I know if my subtitles need a constant delay fix?
- Play from the start of a dialogue line. If every cue is early or late by roughly the same amount—for example always 0.4 seconds behind the dub—the problem is a global offset, not wrong individual cues.
- Should I fix sync in my editor or with an SRT shift tool?
- NLE subtitle tracks are fine for one project. When you export SRT for YouTube, a client, or another platform, a dedicated offset pass is faster and repeatable. Shift the file once, then re-import.
- What offset values are typical for dubbed video?
- Many dubs need +200 ms to +800 ms. Short-form vertical video sometimes needs less. Measure with one line, adjust, and re-check two more scenes before batching.
- Will shifting break my timecodes at zero?
- Good tools clamp cues at 00:00:00,000 so nothing goes negative. Very large negative shifts can shorten the first cue; preview before publishing.
- Is it safe to upload my SRT to an online shifter?
- Prefer in-browser tools that never send files to a server. Subtitle Kit processes SRT locally in JavaScript so scripts stay on your device.
- Can frame rate changes cause constant subtitle delay?
- Yes. Converting 24 fps to 25 fps or re-wrapping for streaming can shift every cue equally. A fixed millisecond offset often fixes the whole file after export.