Subtitle Time Shifter & Resync (.SRT & .VTT)
Easily fix out-of-sync movie and video subtitles. Shift timestamps by exact milliseconds, correct frame rate drift (23.976 fps to 25.000 fps), or apply two-point linear calibration with zero file uploads.
Subtitle Mathematics & Clock Drift Derivations
Subtitle synchronization problems occur in two fundamental ways: constant linear offset (fixed delay caused by introductory studio credits) and progressive frame rate clock drift (speed difference between PAL 25.0 fps, Film 23.976 fps, and NTSC 29.97 fps).
Tnew = max(0, Tms + Δshift)
SRT Separator:
, (comma)VTT Separator:
. (period)
Tsynced = Tms × Ratio
PAL Speedup: 23.976 / 25.000 = 0.959040
PAL Slowdown: 25.000 / 23.976 = 1.042709
b = Tv1 - m × Ts1
Tsynced = max(0, m × Tsub + b)
Recalibrates variable clock discrepancies
| Feature Attribute | SubRip (.SRT) | WebVTT (.VTT) |
|---|---|---|
| Initial Header Requirement | None (Starts with sequence integer) | Mandatory WEBVTT header string |
| Millisecond Separator | Comma (,) |
Period / Dot (.) |
| Hour Digits Optionality | Strict 2-digit required (00:01:20,000) |
Optional when < 1 hour (01:20.000) |
| Styling & Positioning Support | Basic HTML-like tags (<i>, <b>) |
Full CSS cue pseudo-classes |
5 Critical Subtitle Resync Traps
1. Millisecond Separator Corruption (Comma vs Period Syntax Crash)
The SubRip specification strictly requires a comma between seconds and milliseconds (00:01:20,500). WebVTT strictly requires a period (00:01:20.500). Naive search-and-replace scripts that replace commas with periods or vice-versa will render the subtitle file completely unreadable in hardware players, TVs, or VLC. Our shifter dynamically detects and preserves the exact format-compliant separator.
2. Negative Timestamp Clamping Overflow
When shifting subtitles earlier by a negative millisecond offset (e.g. -3000ms), cue lines that begin within the first 3 seconds of the movie will compute to negative timestamps (e.g. -00:00:01,500). Negative timestamps violate the parser grammar, causing video players to drop all subsequent subtitles or crash. Our algorithm clamps all computed values to 00:00:00,000.
3. Constant Offset vs Frame Rate Speed Drift
If your subtitles are aligned at the 5-minute mark but are 3 seconds late at the 60-minute mark, your issue is not a constant linear delay—it is a frame rate mismatch (23.976 fps film rip played against a 25.000 fps PAL broadcast). Applying a static shift will never fix progressive frame drift; the subtitle timestamps must be stretched or compressed by the exact mathematical frame ratio.
4. UTF-8 Byte Order Mark (BOM) & Encoding Corruption
Windows text editors frequently save text files as "UTF-8 with BOM" (inserting invisible bytes EF BB BF at index 0). In WebVTT, this displaces the initial WEBVTT header, causing HTML5 <track> elements to reject the file with a MIME type mismatch error. Our in-browser reader processes clean Unicode UTF-8 strings.
5. Multi-Line Cue Overlapping Collisions
Indiscriminately shifting cues without checking bounding limits can cause rapid-fire dialog cues to overlap with preceding subtitles, causing media players to flicker or display dual stacked subtitles simultaneously on screen.