Subtitle Converter & Resyncer
SRT ↔ VTT, plus a shift for constant offsets and a frame-rate rescale for drift.
How to Use
- 1. Paste your subtitles, or drop an .srt or .vtt file onto the page.
- 2. Choose the output format — SRT or VTT.
- 3. Shift the timing if the whole file is offset, or pick a frame-rate preset if it drifts.
- 4. Copy or download the corrected file.
Offset or Drift — Two Different Problems
Out-of-sync subtitles fail in one of two ways, and the fixes are not interchangeable. If every line is late by the same two seconds from start to finish, that is a constant offset and a shift corrects it. If the first scene is fine and the last is a minute out, no shift will ever work — the timings need rescaling.
Drift happens because the same film exists at different frame rates. A subtitle file timed against a 23.976 fps release runs about 4% slow against a 25 fps PAL transfer, which over a two-hour film accumulates to roughly two and a half minutes. Multiplying every timestamp by the ratio between the two frame rates puts it back. The presets here cover the conversions that actually occur in the wild.
The format difference is smaller than people expect. SRT and VTT are nearly identical — VTT adds a WEBVTT header and uses a dot before the milliseconds instead of a comma. VTT is what HTML5 <track> elements require, so a browser will silently ignore an SRT file; most desktop players and platform uploads want SRT. That single-character difference is why so many subtitles appear to do nothing on a web page.
Scale is applied before shift here, matching how subtitle editors order the two — rescaling after shifting would move the offset you just set as well. The tool also flags reversed timings, zero-length cues and overlaps, which are the three faults that stop a cue displaying at all.
Related: Extract Audio from Video, Video Frame Grabber, and Find & Replace Text.
Frequently Asked Questions
What is the difference between SRT and VTT?
They are nearly the same format with two meaningful differences: VTT starts with a WEBVTT header and uses a dot before the milliseconds where SRT uses a comma. VTT also supports cue positioning and styling. VTT is what HTML5 video requires; SRT is what most desktop players and streaming uploads expect.
My subtitles are out of sync — which control do I use?
If the whole file is off by a constant amount, use the shift. If it starts in sync and drifts further out as the film goes on, that is a frame-rate mismatch and you need the scale preset instead — shifting will never fix a drift.
Why would subtitles drift?
Because the same film exists at different frame rates. A subtitle file timed against a 23.976 fps release runs progressively out of step with a 25 fps PAL transfer, by roughly 4% — about two and a half minutes over a two-hour film. Rescaling the timestamps by the frame-rate ratio corrects it.
Does it keep positioning and styling?
VTT cue settings and cue identifiers survive a round trip. When converting SRT to VTT, SRT-specific tags like {\an8} and font tags are stripped, because VTT has no direct equivalent and leaving them in shows the raw tag on screen.
Is my subtitle file uploaded?
No. Parsing and conversion happen entirely in your browser. Nothing is transmitted or stored, which matters for unreleased or confidential footage.
Was this tool helpful?
More Tools
Related video
Extract Audio from Video
Video to GIF
Video Frame Grabber
You Might Also Like