LocalTools
Private · your file never leaves the browser

Subtitle sync: shift and fix SRT / VTT timing

Subtitles too early, too late, or drifting further off as the film goes on? Open the .srt or .vtt file, shift it by a few seconds or retime it from two known points, preview the result and download the fixed file.

Choose or drop an .srt or .vtt file
UTF-8, UTF-16 and older encodings (Windows-1252, Shift_JIS, EUC-KR, GBK, Big5) are read.

Which fix do I need?

SRT and VTT conversion

SRT to VTT adds the WEBVTT header, switches the millisecond comma to a dot, keeps <i>, <b> and <u>, and removes <font> tags and {\an8} codes that browsers don't understand. Use VTT for the HTML5 <track> element and most web players.

VTT to SRT numbers the cues from 1 and drops what SRT can't hold: cue settings (position, alignment), NOTE comments, STYLE blocks, classes and ruby readings. Speaker tags like <v Roger> become Roger:.

Output is always UTF-8. Cues pushed entirely before 0:00 are removed, and cues that would start before 0:00 start at 0:00 instead — the status line tells you how many.

Questions

The text is garbled (é, ��, or random symbols).

The file was saved in an older encoding. Pick the right one in Text encoding — Windows-1252 for Western European languages, Shift_JIS for Japanese, EUC-KR for Korean, GBK or Big5 for Chinese. The saved file is converted to UTF-8.

How do I find the right times for two-point resync?

In your player, pause when the first line is spoken and read the time (VLC shows it in the bottom left). Do the same for a line near the end. Enter those times next to the cue numbers; the preview shows the new times immediately.

Does VLC or mpv need a special file name?

The download is named after your file plus .synced. Players load subtitles automatically when the name starts with the video's name, so Movie.synced.srt next to Movie.mkv is usually picked up; otherwise load it from the subtitle menu.