Subtitle shift and sync: fix offset, drift and frame-rate timing

Fix subtitles that are early, late or slowly drifting out of sync by shifting them, stretching them between two points you know, or converting their frame rate.

Your subtitle file is read on this device. Nothing is uploaded.

Your subtitles

SRT, WebVTT, ASS or SSA, or drop it here. Only the timings change; the rest of the file stays byte for byte the same.

What do you need?

Examples: +1.5 (seconds), -00:00:02,300, 250ms. Subtitles too early: make them later (+). Too late: make them earlier (-).

Apply to

Preview

Before (first 5 cues)

Choose a file to see its first cues.

After (first 5 cues)

The new timings appear here.

    Which fix do you need?

    Check one line near the start of the video and one near the end, then match what you see.

    What you seeLikely causeMode to use
    Every line is early or late by about the same amountA constant offsetShift by offset
    Fine at the start, further off as the video goes onDrift, often from a frame-rate changeSync two points, or Change frame rate if you know the two rates
    In sync until one point, then off from thereA scene, intro or ad break was added or cutShift by offset from that cue or time onward

    How to shift subtitle timing

    1. Open your SRT, WebVTT or ASS file.
    2. Choose a mode: Shift by offset, Sync two points or Change frame rate.
    3. Enter the correction. Each mode is explained below.
    4. Compare the first 5 cues before and after in the preview.
    5. Click Apply, then the Download button that carries your file's name, for example Download episode-01.srt.

    The file you download stays in the same format, and only the times change. Everything else in it is kept as it was.

    Shift by offset

    Enter how far to move the subtitles: seconds such as +1.5, a timestamp such as -00:00:02,300, or milliseconds. A plus moves subtitles later and a minus moves them earlier. If a line appears before the person speaks, it's early, so use a positive number. Apply the shift to all cues, from cue #N onward, or from a time T onward. The last two fix a file that goes wrong after a cut.

    Sync two points

    Use this when the error grows over time. Pick two cues (the first and last are chosen by default) and type the time each one should start at, read from the video in your player. The tool moves and stretches every cue between them along a straight line through those two points. Cues far apart give the most accurate result.

    Change frame rate (23.976 to 25 and back)

    Subtitle files store times, not frame numbers, so a different frame rate on its own doesn't put them out of sync. It matters when the video was sped up or slowed down. The usual case is a film made at 23.976 or 24 fps and released at 25 fps. It plays about 4% faster, so subtitles made for the original fall further behind with every minute.

    Pick the preset that describes your file, for example "subtitles made for 23.976 fps video, playing on 25 fps video". Presets cover 23.976→25, 25→23.976, 24→25, 25→24, 29.97→25 and 25→29.97, and you can enter a custom pair. The tool uses exact ratios. It treats 23.976 as 24000/1001, so 23.976→25 multiplies every time by 960/1001 (about 0.95904) and 25→23.976 by 1001/960 (about 1.04271).

    What this tool fixes

    Many online subtitle shifters only move every line by the same amount. That can't fix drift, and it can't fix a file that is fine until an ad break and then a few seconds out. Desktop programs such as Subtitle Edit and Aegisub can, but you have to install and learn them. This page puts offset, two-point sync, partial shifts and frame-rate conversion in one place, for SRT, WebVTT and ASS, with no daily limit.

    Limits

    • It changes timing only. It doesn't listen to the audio, so it can't sync subtitles to speech for you.
    • A different cut of a film, with scenes removed or added, may need several partial shifts, one from each point where the cut differs.
    • Frame-rate conversion assumes the whole video was sped up or slowed down evenly.
    • A cue that would end before 0:00 after the shift is dropped, and one that would start before 0:00 starts at 0:00 instead. Both are listed so you can check them.
    • ASS stores times in hundredths of a second, so shifted ASS times are rounded to the nearest 0.01 s.

    Your files stay on your device

    Your subtitle file is read and changed by your browser on your computer. Nothing is uploaded, and you don't need an account.

    Questions

    Do I need to change the frame rate or just shift the subtitles?

    Compare a line near the start with one near the end. If both are off by the same amount, shift by an offset. If the gap grows, the timing is stretched: use Sync two points, or Change frame rate if you know the video was converted, for example from 23.976 to 25 fps.

    Should I enter a positive or negative number?

    If subtitles appear before the words are spoken, they are early: enter a positive number to make them later. If they appear after the words, enter a negative number. The preview shows the first 5 cues before and after so you can check the direction.

    Why are my subtitles still out of sync after converting 23.976 to 25?

    Either the direction was wrong, so try the opposite preset, or the video is a different cut with scenes added or removed. A frame-rate change can't fix a cut. Find the first line that goes wrong and use Shift by offset from that cue onward, then repeat for the next cut.

    Can I use the subtitle delay setting in my player instead?

    For one viewing, yes. A player's delay only fixes playback in that player, and you often have to set it again next time. Fixing the file itself makes it play in sync everywhere, including on a TV, a phone or a video platform.

    Can it sync subtitles to the audio automatically?

    No. It doesn't analyze the audio. With Sync two points you only need two correct times, read from your player, and the tool works out the rest.

    Can I shift only part of the subtitles?

    Yes. In Shift by offset, apply the change from cue #N onward or from a time T onward. Cues before that point stay as they are.

    Page updated .