Sync subtitles to video automatically
Find the offset by listening to the audio instead of hunting for a matching line. Runs entirely in your browser — the video is never uploaded.
The usual way to fix out-of-sync subtitles is to find a line you recognise, note when it is actually spoken, and work out the difference by hand. It works, and it is tedious. The alternative is to let the computer listen: mark every stretch of the audio where somebody is speaking, mark every stretch where a subtitle is on screen, and slide one against the other until they line up. The offset that produces the best match is the answer. This is what ffsubsync does on the desktop, and there is no reason it needs a server — your browser can already decode audio, so the whole thing runs on your machine with the video never leaving it. Subtitle Doctor reports how confident the match is alongside the number, because an automatic answer you cannot check is worse than doing it by hand.
Worth knowing
- Speech is detected relative to the recording’s own noise floor rather than a fixed volume, because films are mastered at wildly different levels and any absolute threshold would be wrong for most of them.
- The search runs twice: a coarse pass at 100ms resolution across the whole range to find roughly where the match is, then a narrow pass at 10ms to sharpen it. That is what makes searching a minute in either direction affordable without any FFT machinery.
- The confidence figure is separate from the match percentage, and it is the one to watch. A high match with low confidence means several different offsets fit the audio about equally well — common when the audio is repetitive or the subtitles only cover part of the film.
- Audio is decoded at 8 kHz in mono, which is telephone quality and completely sufficient for telling speech from silence. It also keeps a feature-length film to a few hundred megabytes of samples rather than several gigabytes.
- Only codecs your browser can already decode will work, so some MKV files will refuse. This is a codec limit rather than a size limit, and an MP4, WebM, M4A or MP3 from the same source will analyse fine.
- You can sync against an audio-only file. The offset is a property of the timeline, not the picture, so a small M4A gives the same answer as the multi-gigabyte video far faster.
FAQ
How do I sync an SRT file with a video?
Choose the SRT and its matching video or audio file, start the analysis, then verify the suggested offset in the preview before downloading. If the delay grows over time rather than staying constant, use the two-anchor sync tool instead.
How accurate is it?
On a normal film it lands within a few tens of milliseconds, which is well below what anyone perceives as out of sync. The search resolves to 10ms and the tests recover known offsets exactly. Accuracy depends on the subtitles genuinely belonging to that cut of the film — if they were made for a different release with scenes added or removed, no single offset can be correct and you want the two-anchor sync tool instead.
It says low confidence. What should I do?
Look at the video preview before downloading. Low confidence means several offsets scored about the same, which happens when the audio is repetitive, when the subtitles cover only part of the running time, or when the subtitle file is for a different cut. The suggested number is often still right — it just could not rule out the alternatives, and the preview settles it in a few seconds.
Do I have to upload my video?
No, and that is the main reason this exists as a browser tool. Your browser decodes the audio locally, the analysis runs on your machine, and nothing is transmitted. That is also why there is no file size limit or queue — there is no server involved to impose one.
The subtitles drift instead of being uniformly late. Will this help?
No. Drift means the subtitle timeline runs at a different rate from the video, usually a framerate mismatch, and shifting everything by one amount cannot fix it — the start would be right and the end still wrong. Use the sync tool’s two-anchor or framerate mode for that, which stretches the timeline rather than moving it.