Subtitles showing too early or too late? Shift the whole file by any offset — right in your browser.
No installs, no upload, 100% free.
No subtitle file yet? Generate one from any audio or video.
Generate subtitles with AIA free subtitle time shifter that runs entirely in your browser. Drop an SRT, set the offset, download the fixed file.
Drag an .srt or .vtt file into the upload area, or click to browse. The file is parsed on your device — it never gets uploaded, so an unreleased cut or an embargoed interview stays where it is.
Type the shift in milliseconds or step it with the +/− buttons, which move in 100 ms at a time. Negative values make subtitles appear earlier, positive later, and the preview under the controls re-times the first cues as you go.
You get the same file with every cue moved by your offset, in the format you started with, and the offset is written into the file name — episode-04-shifted+1200ms.srt — so two attempts never overwrite each other.
One constant offset fixes almost every out-of-sync subtitle problem.
Your copy has a distributor logo, a recap or an ad break the subtitle author's copy did not — that difference is one number, applied once to every cue.
Lines that land a second ahead of the voices, and stay a second ahead all the way through, are a fixed offset — the case this tool exists for.
Some players count time from the first video frame and some from the container's start offset, which is a few hundred milliseconds of disagreement on the same file.
A subtitle file from the web rarely matches your exact release. Shifting it into place takes seconds and beats hunting for a file that happens to match.
Step in 100 ms until the text lands on the speech rather than just near it; the re-timed preview means you check without downloading each attempt.
If you have no subtitle file at all, SlayScribe transcribes the video itself and exports SRT or VTT that is in sync by construction.
A subtitle file is just text — there is no reason to upload it to a server. This tool parses the file on your device, moves every timestamp by your offset, and writes the result back out. Private, instant, and it works offline once the page is loaded.
How to find the number, what the file looks like afterwards, and the one problem a shift cannot solve.
Play the video, wait for a line you can hear clearly, and note two times: when the subtitle appears and when the words are actually spoken. Subtract one from the other and that difference, in milliseconds, is your offset — negative if the text is late, positive if it is early. One measurement is enough for the whole file, because a constant offset is constant; if a second check later in the video gives you a different number, you do not have an offset problem (see below).
The file keeps the format it arrived in: an SRT stays SubRip with comma milliseconds and cues renumbered from 1, a VTT stays WebVTT with its header and no cue numbers. Every start and end moves by exactly your offset, to the millisecond, and nothing else about the text is touched. The download is named after the original with the offset appended, so shifting the same file by −800 and then by −1200 leaves you two files you can tell apart.
Subtitle formats have no negative timestamps, so a negative shift larger than a cue's own start time cannot be applied honestly. Instead of writing an impossible time, the tool pins that cue to 00:00:00,000. In practice this means a −3 s shift on a file whose first line starts at 1.2 s leaves that line on screen from the very first frame, while everything after it moves normally. If the opening lines matter, shift by less and check the beginning of the video, not just the middle.
If subtitles are close at the start and further off with every minute, the file was timed against a different frame rate — 23.976 fps text played against a 25 fps encode, or the reverse. The two run about 4% apart, which is roughly two and a half minutes of divergence over an hour of video, and no single offset can absorb a gap that keeps growing. The test takes a minute: check sync five minutes in and then fifty minutes in. Same error both times means shift it; a bigger error the second time means the timing needs rebuilding, which is what transcribing your own copy of the video does.
The shifted file is written by the same writer the subtitle converter uses, so a WebVTT file comes back as plain cues: positioning and alignment settings after the timestamp, cue identifier lines, and STYLE, REGION or NOTE blocks are dropped, while inline italic and bold inside the text are kept. For ordinary subtitles that is invisible. For a file that relies on placing text away from a burned-in caption, keep the original and shift a copy.
Re-timing subtitles on SlayScribe is free and needs no account, because the work happens in your browser rather than on a server — there is no per-file cost to pass on and no limit on how many files you fix.
SubRip (.srt) and WebVTT (.vtt). The shifted file is written back in the format it arrived in, so a player that accepted the original will accept the result.
If the subtitle appears before the words are spoken, shift positive to move it later; if it lags behind the voices, shift negative to move it earlier. The size is the gap you measured in milliseconds — a line landing 1.2 seconds early needs +1200.
Pick a line you can hear clearly, note the time the subtitle appears and the time the words are said, and subtract. That single difference applies to the whole file, and the ±100 ms buttons are there to nudge it once you are close.
A gap that grows through the video is a frame-rate mismatch — 23.976 fps timings against a 25 fps encode drift about 4%, roughly two and a half minutes across an hour — and no constant offset can fix it. Re-generating subtitles from your own copy of the video does.
A negative shift larger than a cue's start time would produce a negative timestamp, which SRT and VTT cannot express, so that cue is pinned to 00:00:00,000 while the rest of the file moves normally.
Inline italic and bold survive, but WebVTT positioning settings, cue identifiers and STYLE, REGION or NOTE blocks are dropped, because the file is rewritten as plain cues. Keep the original if your subtitles depend on placement.
Parsing, shifting and saving all happen on your own device; nothing is sent anywhere, which is why the tool keeps working after the page is loaded even with the network off.
The download is the original name with the offset appended — episode-04-shifted+1200ms.srt — so several attempts at the same file sit side by side instead of overwriting one another.
Not on this page, but SlayScribe transcribes any audio or video into SRT or VTT subtitles in 99 languages, and subtitles made from the video itself need no shifting at all.
SlayScribe turns any audio or video into accurate text in seconds — transcripts, captions, and subtitles in 99 languages.
Transcribe to text