Subtitle time shifter
Open or paste subtitles, then enter a time shift or two matching timing anchors. Validate, preview and download SRT or WebVTT without uploading files.
Shift or convert a local SRT or WebVTT subtitle file. Enable JavaScript to use the editor.
How it works
The parser follows the Library of Congress SRT block description and W3C WebVTT timestamp syntax. It checks cue durations, numbering, order and overlaps. Overlaps are warnings: WebVTT allows simultaneous subtitle cues. SRT output is numbered sequentially; output cues are sorted by start time.
Shift: t′ = t + shift Anchors: a = (target₂ − target₁) ÷ (source₂ − source₁); b = target₁ − a × source₁; t′ = a × t + b Optional frame conversion: final time = t′ × original fps ÷ new fps
Anchor values and shifts use milliseconds. The anchor formula solves a straight line through the two supplied pairs. Frame conversion assumes the same frame indices at a new playback rate; enter rates from your actual media. It runs after the shift or anchor correction. No intermediate values are rounded; exported times round to the nearest millisecond. Negative times and cues collapsed by rounding are rejected.
Input is limited to 1 MB of UTF-8 text and 10,000 lines as a local resource safeguard. Use standard blank-line-separated SRT blocks or WebVTT. WebVTT metadata blocks and settings are retained for VTT output; SRT conversion drops those features and inline timestamp tags. SRT to VTT retains b/i/u tags and escapes other text, including arrows and unsupported tags, as character references. VTT to SRT preserves other markup; review player compatibility. Files are decoded as UTF-8.
Worked examples
Move a cue later
A cue from 00:00:01,000 to 00:00:03,000 shifted by +1,500 ms becomes 00:00:02,500 to 00:00:04,500.
Correct progressive drift
Map original 10,000 ms to 12,000 ms and original 70,000 ms to 78,000 ms. The scale is 1.1 and the offset is 1,000 ms. A cue at 40,000–42,000 ms becomes 45,000–47,200 ms.
Change playback frame rate
With no other correction, original 24 fps and new 25 fps multiply times by 0.96. A cue at 10,000–12,000 ms becomes 9,600–11,520 ms.
Frequently asked questions
Which direction should I shift subtitles?
Why do subtitles drift farther out of sync?
Can I convert SRT to WebVTT?
Are overlapping cues invalid?
Are my subtitle files uploaded?
Sources
- W3C WebVTT — file structure, cue timings and timestamps (checked 2026-11-14)
- Library of Congress — SubRip Subtitle format (checked 2026-11-14)
Last reviewed 2026-11-14. The method is written out above so you can check our math.