SRT Subtitle Shifter

Nudge every subtitle forward or back — perfectly in sync in seconds.

1 · Paste your subtitles

2 · Shift amount

ms

Live preview

Shifted timings will appear here, line by line.

Why subtitles fall out of sync

Almost everyone who watches films or shows with external subtitle files has met the same annoyance: the dialogue appears a second too early, or a line lingers after the actor has stopped speaking. The video is fine, the subtitles are fine — they are simply not aligned. This usually happens for one of a handful of boring, technical reasons. The subtitle file may have been timed for a different release of the same video — a theatrical cut versus a director's cut, a Blu-ray rip versus a streaming version, or a PAL release running at 25 frames per second versus an NTSC one at 23.976. Sometimes a few seconds of studio logos were trimmed from the start of one copy but not the other, so every single line is off by the same constant amount. Occasionally a file is just mistimed by whoever created it.

The good news is that when the offset is constant — every line early or late by the same amount — the fix is trivial: add or subtract that amount from every timestamp in the file. That is exactly what an srt subtitle shifter does. Instead of editing hundreds of timestamps by hand, you measure the delay once, apply it to the whole file, and download a corrected copy.

How to measure the offset

Before you shift anything, you need one number: how far off are the subtitles, and in which direction? Play the video in a player like VLC, find a sharp, unmistakable line of dialogue — a door slamming shut as someone shouts, the first word after a long silence — and watch when the subtitle appears relative to the sound. Most players let you nudge subtitle timing live: in VLC, press G to delay subtitles by 50 ms or H to advance them by 50 ms. Keep tapping until the lines land perfectly, then check the current delay value (Tools → Track Synchronization shows it). If VLC says the subtitle delay is +1,250 ms, your file needs a +1,250 ms shift. If it says −800 ms, shift by −800 ms. Write the number down, then apply it permanently with SrtShift so every player shows the fixed timing.

What the SRT format actually looks like

An SRT file is plain text, which is why shifting it is so reliable. Each subtitle is a numbered block: a sequence number, a timing line, one or two lines of text, and a blank line. The timing line uses the format HH:MM:SS,mmm --> HH:MM:SS,mmm — hours, minutes, seconds, then milliseconds after a comma. A shifter parses every timing line, adds your offset in milliseconds, clamps anything that would go below zero, and writes the file back out. Nothing else in the file changes: the numbering, the text, and any basic formatting tags stay exactly as they were. Because the operation is purely arithmetic on timestamps, it cannot corrupt the dialogue.

A quick example

Say a subtitle reads 00:00:01,000 --> 00:00:04,000 and you measured that subtitles appear 2.5 seconds too early. Shifting by +2,500 ms turns it into 00:00:03,500 --> 00:00:06,500. Every other line moves by the same amount, so the relative spacing between lines — the rhythm of the conversation — is preserved perfectly.

When shifting is the right fix (and when it is not)

A constant offset is the most common sync problem, but not the only one. Shifting is the right fix when the delay is the same at the start of the video and at the end — check a line in the first five minutes and another in the last five minutes. If both are off by the same amount, shift away. If the drift grows over time — fine at the start, two seconds off by the middle, five seconds off by the end — you have a frame-rate mismatch, and no constant shift will fix it. In that case you need to re-time the file (stretching or compressing all timestamps proportionally), which is a different operation. Also note: shifting moves both the start and end of every subtitle, so a line that originally had a comfortable on-screen duration keeps it.

Step-by-step: fixing your subtitles

  1. Open your .srt file in any text editor and copy its contents, or just keep the file handy.
  2. Measure the delay using the VLC method above, or simply estimate: count “one-one-thousand” between the spoken word and the subtitle.
  3. Paste the subtitles into SrtShift's input panel.
  4. Enter the offset in milliseconds (positive if subtitles appear too early, negative if too late) or use the preset buttons.
  5. Check the live preview — the first subtitles are shown with their old and new timings side by side.
  6. Download the corrected .srt and place it next to your video with a matching filename.

Tips for a perfect result

Common causes of constant subtitle offsets

CauseTypical offsetFix
Trimmed studio logos / intros5–30 secondsPositive shift
Theatrical vs extended cutSeconds to minutesPositive or negative shift
Advertisement segments removedVaries per segmentShift (if uniform) or re-time
Wrong file for the releaseAny constantMeasure and shift
Player-specific delay settingAnyReset player delay first

Shift vs re-time vs re-download

If the subtitles are from a completely different cut of the film — scenes added or removed in the middle — shifting will fix one section and break another. In that situation, downloading subtitles made for your exact release (matching runtime to the second) is faster than any editing. Re-timing, the proportional stretch, is for frame-rate drift. Shifting sits in the sweet spot: one number, one click, whole file fixed. For roughly eight out of ten sync complaints, it is all you need.

Privacy and file safety

SRT files sometimes contain fan-made translations people care about. SrtShift processes everything in your browser — your subtitle text is never uploaded to a server. The output is a plain-text .srt identical in structure to the input, so it works in VLC, Plex, Kodi, YouTube uploads, and every other player that accepts SubRip files.

Frequently asked subtitling questions

Beyond the FAQ below, two practical notes: YouTube and most editors accept shifted SRT files without complaint, because the format is unchanged. And if you only need a temporary fix for one viewing session, your player's subtitle-delay hotkeys are quicker — use SrtShift when you want the correction baked into the file forever.

Batch-fixing a whole series

When every episode of a series is off by the same amount — common with TV rips from a single source — you don't need to measure each file separately. Measure the offset once on episode one, then apply the identical shift to every episode's subtitle file. Keep a tiny log (episode number → offset used) so you can spot the odd episode that came from a different source and needs its own measurement. Name the outputs consistently, e.g. show.s01e01.fixed.srt during processing, then rename to match the video files when you're done.

Subtitle formats beyond SRT

SRT (SubRip) is the universal plain-text format, but you'll also meet WebVTT (.vtt, used by HTML5 video and most streaming players — same timestamps, different header), SSA/ASS (Advanced Substation Alpha, with styling and positioning for anime fansubs), and PGS/SUP (image-based subtitles on Blu-rays, which can't be shifted as text at all). If your file is WebVTT, the same constant-offset logic applies — only the timestamp format differs slightly (a period instead of a comma before milliseconds). For ASS files, shifting works the same way on the dialogue timestamps, though you'll want a dedicated subtitle editor to preserve the styling blocks.

Creating subtitles from scratch vs fixing

Sometimes the file is so broken — missing lines, garbage timing throughout — that shifting can't save it. Signs it's time to start over: the offset varies randomly line to line, large sections are missing, or the text is machine-translated gibberish. In that case, auto-transcription tools (YouTube's auto-captions, Whisper-based apps) produce a rough timed transcript in minutes; you then correct the text rather than the timing, which is usually faster than repairing a hopelessly mistimed file. But when the text is good and only the timing is off by a constant — the overwhelmingly common case — a single shift is always the fastest path.

Frequently asked questions

How do I know my subtitle file is in SRT format?

Open the .srt in a text editor, or play the video in VLC and use Tools → Codec Information while the subtitle track is selected. A quick heuristic: SubRip (.srt) files have numbered blocks with timestamps like 00:00:01,000 --> 00:00:04,000, while .vtt files start with a WEBVTT header.

How do I convert seconds to the millisecond offset the tool wants?

Use the millisecond field: 1,000 ms = 1 second. For 2.5 seconds enter 2500; for a 750 ms nudge enter 750. The preset buttons cover common values (±500 ms, ±2 s) if you want to iterate quickly.

What happens if a negative shift pushes a timestamp below zero?

It is safe. Times that would go below zero are clamped to 00:00:00,000 instead of becoming negative, which keeps the file valid. However, if a large negative shift clamps many early subtitles, those lines will all pile up at the start — a sign the offset is too big.

Will shifting change or damage the subtitle text?

No — the tool rewrites only the numeric timestamps. Subtitle text, sequence numbers, blank lines, and basic tags like are preserved exactly as they were.

My subtitles start fine but drift later in the film — will shifting help?

Almost certainly a frame-rate mismatch rather than a constant offset. Check the sync at the start and near the end: if the error grows over time, you need proportional re-timing (stretching all timestamps), not a fixed shift. A fixed shift only helps when the delay is identical throughout.

How do I make my video player use the fixed subtitle file?

Rename the downloaded file to match the video filename (e.g. Movie.mp4 → Movie.srt) and keep both in the same folder. Most players — VLC, Plex, Kodi, MX Player — then load it automatically.