Skip to content

Media

Subtitle Shifter

Subtitle Shifter

Beta

Shift every cue in an SRT or VTT file by one offset so the captions match the audio again. Positive delays them, negative advances them. The format stays the same and nothing is uploaded.

Use via API
  • Free, no sign-up
  • REST + MCP
  • Updated
  • Reviewed by Olgun Ozoktas

Positive shows the captions later, negative shows them earlier. If they appear 1.5 seconds before the words are spoken, enter 1.5.

SRT or VTT Input
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Shifted Output

The shifted captions will appear here..

How to Shift Subtitles Online

  1. Paste or upload the caption file

    Paste the captions into the input box, or upload the .srt or .vtt file from your device. The format is detected from the content, and it is preserved: an SRT stays an SRT and a VTT stays a VTT.
  2. Enter the offset with its sign

    Type how far the captions are out, in seconds or in milliseconds. Positive delays every cue so it shows later; negative advances every cue so it shows earlier. If a line appears 1.5 seconds before the words are spoken, enter 1.5.
  3. Download the shifted file

    The output updates as you type, so check the first and the last cue against the video, then download the shifted file. Cues held at 00:00:00 and cues dropped for ending before zero are counted under the output.

Why Use Our Subtitle Shifter?

Captions that are a second and a half early on every line are not a hundred small problems; they are one problem with a hundred symptoms. The file was cut from a different edit of the video, the encoder added a lead-in, the download came from a release with a different intro. Whatever the cause, the fix is the same number added to every timestamp. Doing that by hand in a text editor is an evening of arithmetic, and installing a subtitle editor for one number is more than the job deserves. This page takes the file and the number, shifts every cue, keeps the format, and gives you the file back.

A caption file is a list of cues, and every cue has a start and an end. When the whole track is early or late by a constant amount, every one of those timestamps needs the same correction. That is a mechanical job, which is exactly why it should not be done by hand: a 700-cue file has 1,400 timestamps, and one typo in any of them produces a cue that a player silently drops.

This tool parses the file into cues, adds the offset to each start and each end, and writes the file back in the same dialect it arrived in. SubRip keeps its comma fractions and is renumbered from 1; WebVTT keeps its header, its dot fractions, its identifiers and its cue settings. The cue text is copied through byte for byte. Nothing is translated, reworded or stretched.

Two edge cases are handled rather than ignored. A negative offset large enough to move a cue before the start of the video would produce a negative timestamp, which no format allows; the start is held at zero instead, and a cue that would have ended before zero is dropped. Both counts are shown under the output so you know what happened. Everything runs in the browser: the caption file is never uploaded.

How it compares

Desktop subtitle editors do this well, and much more, but they are an install and a learning curve for what is often a single number. Cloud shifting tools upload the file, and a caption file is a transcript of everything said. This page keeps the job to one field and keeps the file in the tab.

Subtitle Sync Tips

  • Measure at two points, early and late in the video. If both need the same offset, this tool is the fix. If the gap grows over time, the tracks run at different speeds and no single offset will line them up.
  • Sign matters more than size. Early captions need a positive offset (show later); late captions need a negative one (show earlier). The hint under the field says it again, because everyone gets it backwards once.
  • A negative offset can push the first cues before the start of the video. A cue whose start would go below zero is held at 00:00:00,000; a cue that would end before zero is removed. Both are counted under the output.
  • WebVTT cue settings such as line:90% and identifiers are carried through unchanged. Only the two timestamps on each timing line change.
  • Half-second steps are usually enough to find the right value. Start with a quick offset, then refine in the field.

Frequently Asked Questions

How do I work out the offset?

Pause the video at the moment a distinctive line is spoken and note the time. Find that line in the caption file and note its start time. The difference is the offset. If the caption's time is smaller than the video time, the captions are early: enter the difference as a positive number. If it is larger, they are late: enter it as a negative number. Check one more line near the end of the video to confirm the gap is constant.

Which way do positive and negative go?

Positive delays the captions, so they appear later. Negative advances them, so they appear earlier. If a caption shows 1.5 seconds before the words are spoken, enter 1.5. If it shows 1.5 seconds after, enter -1.5.

The captions drift: they are fine at the start and late by the end. Will this fix that?

No. A growing gap means the caption track and the video run at different speeds, usually because one was made for a 25 fps cut and the other for 23.976 fps. That needs every timestamp scaled, not shifted. This tool applies one fixed offset and says so, rather than stretching the track and pretending. Use a subtitle editor's speed or framerate adjustment for a drifting track.

What happens if the offset pushes a cue before 00:00:00?

No format allows a negative timestamp. A cue whose start would go below zero is held at 00:00:00,000 and counted as clamped. A cue that would end at or before zero is removed and counted as dropped. Both counts appear under the output. If every cue would be dropped, the tool refuses the offset instead of producing an empty file.

Does it keep WebVTT settings, identifiers and NOTE blocks?

Cue settings such as line:90% and align:start are kept, and so are cue identifiers when the file has them. NOTE, STYLE and REGION blocks are metadata rather than cues and are skipped, the same as the SRT to VTT converter does. If you need those blocks in the output, paste them back in; the cues themselves are unaffected.

Is my caption file uploaded?

No. The parsing and the shifting happen in your browser. A caption file is a complete transcript, which is exactly the kind of thing that should not travel to a server for a one-number edit. Check the network panel while shifting and you will see no request carrying the file.

Can I shift several files at once?

One file at a time on this page, so the preview always shows exactly what you are about to download. For a batch, the same shifter is available on the FindUtils API as the subtitle_shift tool, which takes the caption text and an offset in milliseconds and returns the shifted file.

Does the tool renumber the cues?

SubRip cues are renumbered from 1 in the order they appear, because SRT requires sequential numbers and some files arrive with gaps. WebVTT identifiers are optional and are carried through exactly as they were, so a cue named intro stays intro.

Does it change the caption text?

No. Only the two timestamps on each timing line change. Every line of caption text, including line breaks inside a cue and any inline markup, is copied through unchanged. The tool does not translate, reword, spell-check or merge cues.

Can I shift an .ass or .ssa file?

Not directly; this page reads SubRip and WebVTT. Run a styled script through the ASS to SRT converter first, then shift the SRT here. If the styling has to survive, shift the script in Aegisub, which understands ASS timing.

Rate This Tool

0/1000

Get Weekly Tools

Suggest a Tool