Shift SRT and WebVTT timing in bulk, and convert between the two formats
If the gap is the same from beginning to end, the start position differs and a plain offset in seconds fixes it. If the opening matches but the gap widens towards the end, the playback rate (frame rate) differs. An offset will not fix that; every timecode has to be multiplied by a ratio, which is what the frame rate conversion does.
Play the video, note when the first line is actually spoken, and subtract the subtitle start time from it. If the line starts at 0:03.5 but the subtitle appears at 0:01.0, enter +2.5. When a negative offset pushes a cue before zero, it is clamped to 00:00:00,000, because a negative timecode cannot be written. The number of cues clamped this way is shown under the settings.
SRT separates milliseconds with a comma (00:00:01,500) and puts a sequence number before every cue. WebVTT uses a period (00:00:01.500), requires a WEBVTT line at the top, treats cue numbers as optional, and lets you omit the hours field below one hour. Only WebVTT can be loaded into an HTML5 video through a track element, so convert to VTT for the web. This tool detects the input format and writes whichever output you pick.
This tool handles timecode lines and their cue text only. WebVTT NOTE, STYLE and REGION blocks are not carried over to the output. Cue settings written after the timecode (align, line and so on) are preserved when the output is WebVTT, and dropped when the output is SRT because SRT has no equivalent notation.
If the subtitles are too early (they appear before the line is spoken), enter a positive number of seconds to push them later. If they lag behind, enter a negative number. If you do not know the offset, play the video, note when the first line is actually spoken, and subtract the subtitle start time from it.
Use it when the running length itself differs, for example fitting subtitles authored for 23.976 fps onto a 25 fps video. If the drift starts small and grows towards the end, it is a ratio problem rather than a constant offset. Selecting a source and target frame rate multiplies every timecode by source divided by target.
No. Reading, parsing, converting and downloading all happen inside your browser. The contents of your subtitles are never sent to a server.
SRT separates milliseconds with a comma (00:00:01,500) while WebVTT uses a period (00:00:01.500). WebVTT requires a WEBVTT line at the top, cue numbers are optional, and the hours field may be omitted below one hour. Only WebVTT can be loaded by the HTML5 track element.