Subtitle Converter (SRT to VTT, VTT to SRT, Time Shift)

Convert subtitles between SRT and WebVTT, shift timing by decimal seconds, and renumber cues. Parse errors are reported with line numbers.

Drop a subtitle file here or click to choose
Supports .srt and .vtt
About Subtitle Converter

Two-way converter between SRT (SubRip) and WebVTT subtitle files with a built-in timing shifter. Paste or upload a file, and the format is detected automatically. Shift every cue forward or backward by a decimal number of seconds to fix out-of-sync subtitles, renumber cues, then copy the result or download it with the correct extension. Lines that fail to parse are listed with their line numbers.

SRT (SubRip) and WebVTT are the two subtitle formats you run into most often, and they are almost but not quite compatible. HTML5 video players and the <track> element require WebVTT, while many desktop players, editors, and upload forms still expect SRT. The differences are small enough to break things: VTT files start with a WEBVTT header, use a period as the millisecond separator where SRT uses a comma, allow timestamps without an hour component, and can contain NOTE comments and STYLE blocks that SRT has no concept of. Hand-editing around these differences is tedious and error-prone.

This converter parses either format into a list of cues and writes them back out in whichever format you pick. The parser handles Windows (CRLF) and Unix line endings, multi-line cue text, optional cue identifiers, and hour-less VTT timestamps, and it skips VTT NOTE, STYLE, and REGION blocks during conversion. Anything it cannot parse is reported with its line number and the offending text, so a malformed timestamp never disappears silently.

The time shift field moves every cue by a decimal number of seconds, negative values included, which fixes subtitles that drift ahead of or behind the audio. Starts that would land before zero are clamped to 00:00, and cues pushed entirely before the start of the video are dropped with a count shown. A renumber option rewrites cue identifiers as a clean 1, 2, 3 sequence before you copy the output or download it as a .srt or .vtt file.

How to use the Subtitle Converter
  1. 1

    Paste or upload a subtitle file

    Drop in SRT or VTT content via the textarea or the upload button. The format is detected from the WEBVTT header, and cue count plus total span appear immediately.

  2. 2

    Pick the output format and adjust timing

    Choose SRT or VTT as the target, enter a shift in seconds (decimals and negatives work), and toggle cue renumbering. The preview updates as you change options.

  3. 3

    Copy or download the result

    Copy the converted text to your clipboard or download it with the matching .srt or .vtt extension, named after the file you uploaded.

Common use cases

Captioning HTML5 video

Convert an .srt file from a transcription service into WebVTT so it works in a <track> element or a web video player.

Fixing out-of-sync subtitles

A downloaded subtitle track speaks 2.5 seconds too early: enter a shift of 2.5 to push every cue back into sync.

Editing platform captions locally

Export VTT captions from YouTube or Vimeo, convert to SRT for a desktop editor or media player, then convert back after edits.

Cleaning up spliced subtitle files

After merging or trimming subtitle segments, renumber the cues into a clean sequence so strict players do not reject the file.

Frequently asked questions
What is the difference between SRT and VTT?

VTT files begin with a WEBVTT header, use a period before milliseconds (00:01:02.500) where SRT uses a comma (00:01:02,500), allow timestamps without hours, and support styling tags, NOTE comments, and STYLE blocks. SRT is plain numbered cues only.

How do I fix subtitles that are out of sync?

Measure how far off they are: if a line should appear 2 seconds later, enter 2 in the time shift field; if it appears too late, use a negative value like -1.5. Every cue moves by the same amount, which fixes a constant offset (the most common sync problem).

What happens to cues shifted before the start of the video?

A cue whose start lands below zero is clamped to begin at 00:00:00.000. A cue whose end also falls below zero is removed entirely, and the tool shows how many cues were dropped so nothing vanishes without notice.

Are VTT styling tags and NOTE blocks preserved?

NOTE, STYLE, and REGION blocks are skipped during conversion since SRT cannot represent them. Inline tags inside cue text (like <i> or <c> spans) pass through unchanged; most SRT players render or ignore them gracefully, but you can delete them in the input first if needed.

Is my subtitle file uploaded anywhere?

No. The file is read and parsed entirely in your browser with JavaScript. Nothing is sent to a server, and the tool keeps working offline once the page has loaded.

convertertextformatter