Skip to content
TextArray
100% local

SRT subtitle time shifter

Shift every timestamp in an SRT or VTT subtitle file by a fixed offset.

Input
Output

SRT subtitle time shifter

Subtitles that lag two seconds behind the dialogue ruin a film faster than no subtitles at all. Paste your .srt or .vtt file, type the offset in seconds, and every timing line — HH:MM:SS,mmm --> HH:MM:SS,mmm — moves by exactly that amount. A positive value delays the subtitles (they appear later), a negative one brings them earlier. Decimals work down to the millisecond, so a shift of 0.35 is as valid as a shift of 90.

Only the timing lines change. Cue numbers, the subtitle text itself, WEBVTT headers and cue settings such as align:start survive untouched, and the tool preserves each file's flavor — SRT's comma decimals stay commas, VTT's dots stay dots. Timestamps that would fall below zero are clamped to 00:00:00,000 rather than producing an invalid file, and the tally tells you when that happened.

The common workflow: play the video, note how far off the first line is, paste the file, type that number with the opposite sign of the drift, and copy the result back into a .srt file — or use the download button. Since the tool is line-based it also copes with slightly malformed files: a missing blank line or an odd cue number never stops the shift.

Everything runs locally in your browser. A subtitle file for an unreleased cut, a client's video or your own home footage never leaves your device — there is no upload, no server-side conversion queue, no waiting.

FAQ

Which subtitle formats are supported?
SRT (00:00:01,000 with comma decimals) and WebVTT (00:01.000 with dots, hours optional). Each timestamp keeps its own separator style, so a VTT file stays valid VTT. Frame-based formats like SUB/IDX are not text timings and are out of scope.
What happens when a shift would make a timestamp negative?
It is clamped to 00:00:00,000 instead of producing an invalid file, and the tally reports how many timestamps were clamped so you notice a too-large backward shift immediately.
Can I shift by less than a second?
Yes. The offset accepts decimals with millisecond precision — 0.5 moves everything half a second, 0.042 by 42 milliseconds. Type any value; the arrows step by 0.1 s.
My subtitles drift more as the video goes on. Will a fixed shift fix that?
No — a growing drift means the frame rates differ, which needs linear rescaling, not a constant offset. A fixed shift fixes subtitles that are uniformly early or late, which is the far more common case.
Is my subtitle file uploaded anywhere?
No. The shift runs entirely in your browser and the file never leaves your device.