Free tool · Video

SRT to VTT Converter (and VTT to SRT)

To convert SRT to VTT, add a WEBVTT line at the top and change the comma before the milliseconds to a period. To go from VTT to SRT, drop the header and number the cues. Paste or open a subtitle file below to do it in your browser, shift the timing by a plus or minus number of seconds, and see any malformed timestamps by line number.

Free, no account required.

Nothing you paste or open leaves your browser.

Detected

SRT, 2 cues, 0 problems.

Use +1.5 to show subtitles later, -2 to show them earlier. Times never go below zero.

Output as VTT

SRT and VTT side by side

Both formats are plain text files that pair a time range with the words shown during it. The same two cues look like this in each. The conversion between them is mechanical, which is why a browser can do it without a server.

SRT

1
00:00:01,000 --> 00:00:03,500
Welcome back to the channel.

2
00:00:04,000 --> 00:00:06,250
Today we are fixing subtitles
that appear too early.

WebVTT

WEBVTT

00:00:01.000 --> 00:00:03.500
Welcome back to the channel.

00:00:04.000 --> 00:00:06.250
Today we are fixing subtitles
that appear too early.

Read the SRT first. Each cue is a number, a time line with an arrow between the start and the end, the text on one or more lines, and a blank line to finish. Now the VTT: the file opens with the word WEBVTT, the numbers are gone, and the only change inside the time lines is the period where the comma was. Everything else, including the two-line second cue, is identical.

A word on authority. WebVTT has a real specification: the W3C publishes the WebVTT: The Web Video Text Tracks Format document, and every format fact below about VTT comes from it (checked October 2026). SRT has no formal standard that we know of. It grew up by convention instead of by specification, so we call it the de facto format and treat details such as how a player handles a missing hours field as player behaviour, not as rules.

The differences that break players

When a subtitle file refuses to load, the cause is nearly always one of four small differences. Each is listed with what the W3C specification says (checked October 2026) and what this tool does about it.

Comma versus period

The specification describes the part of a timestamp after the seconds as a full stop, U+002E, followed by three digits. SRT files in the wild use a comma there instead. A VTT file with a comma is therefore not valid WebVTT, and a strict player may ignore the cue or the file. The converter always writes the separator that belongs to the output format, and when reading it accepts either, because real files are messy.

The WEBVTT header

A WebVTT file must begin with the string WEBVTT, and the specification says the file must be UTF-8 and labelled with the MIME type text/vtt when served. SRT has no header at all. Add the header when converting to VTT and a player that insists on it will stop rejecting the file. The tool also removes a byte order mark at the start of pasted text so it cannot hide the header from the check.

Hours are optional in VTT

In WebVTT the hours part of a timestamp is required only when it is non-zero, so 00:01.500 is valid and means one and a half seconds. SRT is conventionally written with hours every time, so the converter always writes all of them: 00:00:01.500 in VTT and 00:00:01,500 in SRT, and it reads either short or full form.

Cue settings, comments and identifiers

A VTT time line can carry cue settings after the end time. The specification lists vertical, line, position, size, align and region. Comments are blocks that start with NOTE, and a cue can have an identifier line above its times. SRT has no place for any of these. Converting VTT to SRT therefore discards them, which is lossless for the words and the timing but not for placement. Converting SRT to VTT never adds them.

One more rule the tool enforces, again from the specification: a cue's end time must be greater than its start time. A cue that breaks it is reported with its line number and left out of the output, rather than written into a file that a player may reject.

Fixing subtitles that are out of sync

Out-of-sync subtitles come in two kinds, and only one is fixed by a shift. Look at the first cue and the last cue against the audio.

  • A constant gap. The first line is two seconds early and the last line is two seconds early too. Enter the offset and you are done. This is typical when a file was timed for a cut with a different intro.
  • A growing gap. The first line is right and the last line is several seconds off. The subtitles were timed against a video running at a different speed. A single offset moves the whole file by the same amount, so it cannot cure this, and the tool does not pretend to.

For a constant gap, here is a worked case. A cue runs from 00:04:12,500 to 00:04:15,000 and appears two seconds too early. Type 2 and it runs from 00:04:14,500 to 00:04:17,000, with the end moved by the same two seconds so the cue lasts as long as before. If instead the subtitles lag, type -1.5. The start of the first cue at 1.0 seconds would move to zero, because times never go below zero, and a cue that ended at 1.0 seconds would be dropped entirely. The tool tells you how many cues were dropped so nothing disappears silently.

A practical tip, ours and not a rule: shift by a round number first, check a line in the middle of the video, then fine tune by a quarter of a second. Judge the result by ear, because the right offset is the one that feels in time to you. If you are reviewing how fast the words appear rather than when, the other free tools on this site cover related video jobs.

Runs in your browser

This page reads the file you choose with the browser's FileReader, converts it with plain JavaScript and builds the download in memory. It makes no network request when you convert, there is no account, and no watermark or usage cap. That matters for subtitles of unreleased video, which are often a full transcript. It also reads files saved on Windows with CRLF line endings, a byte order mark or extra blank lines at the end, because those are the files that most often fail elsewhere.

How to convert SRT to VTT and shift subtitle timing

Step 1

Paste your subtitles or open a file

Paste SRT or VTT text into the box, or press Open file. The file is read inside your browser and is never uploaded. The detected format and cue count appear straight away.

Step 2

Fix any problems it lists

If a timestamp is malformed, the tool shows the line number. Cues with problems are skipped, so correct the line in the box and the list updates as you type.

Step 3

Shift the timing if the subtitles are out of sync

Type an offset in seconds. Use a positive number such as 1.5 to show subtitles later and a negative number such as -2 to show them earlier. Times stop at zero, and cues that would end before zero are dropped.

Step 4

Download the other format

The output is always the opposite format to the input: SRT in, VTT out, and VTT in, SRT out. Press Download to save it as a file.

When you outgrow this tool

Linkeddit Studio transcribes speech on your device with Whisper and burns the captions into the video in plain, highlight, pop, karaoke or box styles. It does not export SRT or VTT files.

This converter is free and complete on its own, with no account. Linkeddit Studio is the desktop editor for the video itself. It transcribes speech on your device with Whisper and burns the captions into the exported video, in plain, highlight, pop, karaoke or box styles. It does not export SRT or VTT files, so use this page when you need a caption file for another player or platform. Studio is a one-time purchase.

FAQ

SRT to VTT Converter and Subtitle Timing Shifter questions

Direct answers on converting, fixing and re-timing subtitle files.

How do I convert SRT to VTT?

Paste the SRT text or open the .srt file and the converter writes WebVTT. Two things change: the file gains a WEBVTT line at the top, and the comma before the milliseconds becomes a period, so 00:00:01,000 becomes 00:00:01.000. The SRT cue numbers are not needed in VTT, where an identifier line is optional, so they are left out.

How do I convert VTT to SRT?

Paste the VTT text or open the .vtt file and the converter writes SRT. The WEBVTT header, NOTE comments, STYLE and REGION blocks, cue identifiers and cue settings such as align or position are dropped, because SRT has nowhere to put them. Cues are numbered from 1, and the period before the milliseconds becomes a comma. Any styling tags in the cue text, such as bold, are left as written.

What is the difference between SRT and VTT?

SRT is a plain list of numbered cues with a start time, an end time and text. WebVTT, defined by the W3C, uses a period instead of a comma before the milliseconds, must start with the line WEBVTT, allows hours to be left out, and adds optional cue identifiers, cue settings for position and alignment, comments and styling. SRT has no formal standard and is the de facto format, so details vary between programs.

Why won't my VTT file work?

The usual causes, checked against the W3C WebVTT specification, are a missing WEBVTT first line, a comma where a period belongs in a timestamp, an end time that is not later than the start time, or a file that is not saved as UTF-8. A byte order mark at the very start is a common companion problem in files saved by some Windows editors. Paste the file here and the tool lists malformed timestamp lines by number.

Why are my subtitles out of sync?

If every cue is early or late by the same amount, the file was timed against a different cut of the video, for example a version with an intro or a different frame rate start. A single offset fixes that case. If the gap grows over the video, the offset is not constant, and shifting alone will not fix it. In that case the subtitles were timed for a video at a different speed, and you need a tool that rescales time as well. This tool shifts only.

How do I delay or advance subtitles by 2 seconds?

Type 2 in the shift box to show every subtitle two seconds later, which fixes subtitles that appear too early. Type -2 to show them two seconds earlier, which fixes subtitles that appear too late. The tool works in milliseconds underneath, so 0.25 and -1.5 are fine. A negative shift never produces a time below zero: start times stop at 0:00 and cues that would end before 0:00 are removed.

Is my subtitle file uploaded?

No. A file you open is read with your browser's FileReader and the conversion is plain JavaScript on your device. The download is created in your browser as well. There is no account, no server step and no network request when you convert, so you can use it for unreleased material.

Can Linkeddit Studio export SRT or VTT files?

No. Linkeddit Studio transcribes speech on your device with Whisper and burns the captions into the exported video. It does not write SRT or VTT files, so this converter is for files that came from somewhere else, such as YouTube, a transcription tool or a client.