tooly

Convert SRT to VTT and back

Paste subtitles in any of the common formats and get the one you need — SRT for players and YouTube, VTT for HTML5 video, plain text for a transcript. Out of sync? Shift every cue by a fixed offset.

Everything runs in your browser — nothing is sent anywhere

How to use

  1. 1

    Paste your subtitles — SRT or VTT, either works.

  2. 2

    Pick the output format, and shift the timings if they run early or late.

  3. 3

    Copy the result or download it as a file.

Two formats that look almost identical

SRT and WebVTT carry the same information: a list of cues, each with a start time, an end time and one or more lines of text. The differences are small but strict, and players reject a file over them.

SRT (SubRip) came out of a Windows ripping tool around 2000 and became the de facto standard because it is plain text that anyone can edit. Each cue starts with a running number, timings use a comma before the milliseconds, and there is no header:

  • 1
  • 00:01:02,500 --> 00:01:05,000
  • Where were you last night?

WebVTT was designed for the HTML5 <track> element. The file must begin with WEBVTT, timings use a dot (00:01:02.500), cue numbers are optional, and cues can carry settings for position, alignment and line, plus styling blocks. Browsers load only VTT in a <track> element; an SRT file there simply shows nothing.

Where each format is expected:

  • SRT: desktop players, video editors, most upload forms for video platforms, TV media players reading files from a USB stick.
  • VTT: subtitles on your own website, HTML5 players and many web-based course platforms.
  • Plain text: reading, quoting or editing the words without timings.

What the conversion keeps and drops

You paste the subtitles into the box and the result updates as you type. The parser splits the input into blocks at blank lines, finds the line with --> in each block, reads the two timestamps and treats everything after that line as the cue text. Cue numbers are rebuilt from scratch for SRT, so a file with gaps or duplicate numbers comes out numbered 1, 2, 3 in order.

Some specifics:

  • Windows line endings and a byte order mark at the start of the file are handled.
  • Blocks without a timing line, such as VTT NOTE and STYLE blocks, are skipped.
  • VTT cue settings written after the end time (align:start, position:10%) are not carried over.
  • VTT timestamps without the hours part (00:01.500) are read as well.
  • The cue text is copied as it is, line breaks included. <i>, <b> and <u> work in both formats and are kept; SRT <font> colour tags are removed when converting to VTT, because VTT players would show them as text.
  • Plain text output puts each cue on one line, joining multi-line cues with a space and removing all tags.

The counter next to the options shows how many cues were recognised. If it is lower than you expect, look at the blocks that went missing: the usual reason is a malformed timing line.

Fixing subtitles that are out of sync

The shift field moves every cue by the same number of seconds, in steps as small as 0.1. A positive value delays the subtitles; a negative value makes them appear earlier. Cues that would move before zero are clamped to 00:00:00.

A reliable way to find the right offset:

  1. Play the video and note the time at which a distinctive line is spoken, say 00:12:40.
  2. Find that line in the subtitle file, say timed at 00:12:43.
  3. The subtitles are 3 seconds late, so enter -3.
  4. Check a second line near the end of the video.

If the offset at the end differs from the offset at the start, the problem is not a delay but drift. That typically happens when subtitles made for a 23.976 fps release are played against a 25 fps one: the gap grows by about 4% over the film, roughly 4 minutes over 100 minutes. A constant shift cannot correct drift; you need subtitles made for that exact version of the video.

Practical tips

  • To convert a file, open it in any text editor, select all, copy and paste it in. The download button saves the result as subtitles.srt, subtitles.vtt or subtitles.txt; rename it to match the video file if your player loads subtitles automatically.
  • For a local player to pick up subtitles on its own, the names usually have to match: holiday.mp4 and holiday.srt in the same folder.
  • If accented or Cyrillic letters look garbled when you open an old SRT file, it was saved in a legacy encoding. Reopen it in your editor with the correct encoding before copying, and save the converted file as UTF-8.
  • No subtitles yet? Generate them from the audio with transcription, or have them drawn directly into the picture with add subtitles to video.

FAQ

What is the difference between SRT and VTT?

The header and the decimal separator, mostly. SRT numbers every cue and uses a comma in timestamps; VTT starts with WEBVTT and uses a dot. Players are picky about which they accept.

How do I fix subtitles that run ahead?

Set a negative shift. If the text appears two seconds too early, enter -2 and every cue moves back.

Is my file uploaded?

No. Parsing and conversion happen in your browser.

Are styling and positioning kept?

Cue text and timings are kept, and so are <i>, <b> and <u>, which both formats support. VTT positioning settings are dropped, and SRT <font> colour tags are removed when converting to VTT; plain text output has no tags at all.

Where do I get subtitles in the first place?

Run the video through our transcription tool and choose SRT or VTT as the output.

Related tools