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:
100:01:02,500 --> 00:01:05,000Where 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
NOTEandSTYLEblocks, 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:
- Play the video and note the time at which a distinctive line is spoken, say 00:12:40.
- Find that line in the subtitle file, say timed at 00:12:43.
- The subtitles are 3 seconds late, so enter -3.
- 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.vttorsubtitles.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.mp4andholiday.srtin 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.