Skip to content

Free tool

SRT to VTT converter

By the KeyMo team · Updated

Paste SRT text or add .srt files and the tool writes a WebVTT file: a WEBVTT header, a full stop instead of a comma before the milliseconds, and cue text escaped so the file is valid. It also converts VTT back to SRT. Cues it has to change or leave out are listed by line, and nothing leaves your browser.

SRT to VTT converter

Paste subtitles or add files. Conversion happens in your browser: nothing is uploaded.

Direction

Optional. Negative moves cues earlier.

Options

Your VTT file appears here.

Output follows the W3C WebVTT specification: a WEBVTT header, UTF-8, hh:mm:ss.mmm times. SRT has no official specification, so the tool reads the common layout and tells you what it changed. Check the result in your player.

What this tool does

SRT and WebVTT hold the same thing: lines of text with a start and an end time. The differences are small but a player will reject a file over them. This tool rewrites an SRT file into WebVTT, or a WebVTT file back into SRT, and tells you everything it had to change.

  • Adds the WEBVTT header and changes the timing format to hh:mm:ss.mmm.
  • Keeps bold, italic and underline, removes other tags, and escapes characters that WebVTT does not allow in cue text.
  • Lists every cue it left out or fixed, with the line number from your file.
  • Moves all cues earlier or later by a number of seconds, for subtitles that are a little out of sync.
  • Takes several files at once and gives each one its own download.
  • Reads UTF-8 files, and UTF-16 files that have a byte order mark. The files you save are UTF-8.

It does not translate, transcribe, retime to a new frame rate or check reading speed. Your text is processed in this tab only: there is no upload, no account and no network request.

How to use it

  1. Pick the direction: SRT to VTT, or VTT to SRT.
  2. Press Choose files or drop files on the box, or paste the text into the text area. Try an example fills the box with a short file.
  3. Read the notes under the result. A yellow Check means something was changed or left out; a grey note is for information.
  4. Optional: type a number of seconds in the move box if the subtitles are early or late. A negative number moves them earlier.
  5. Press Download, or Copy for pasted text. With several files, use Download all.

What changes between SRT and WebVTT

The WebVTT rules below come from the W3C specification, read on 11 October 2026. SRT has no official specification, so the SRT side describes what this tool accepts, based on the example in YouTube's help page for caption files, which numbers each cue and puts a comma before the milliseconds.

What the converter does when going from SRT to WebVTT
Part of the fileSRT as readWebVTT as writtenSource for the WebVTT rule
Start of fileUsually a cue numberThe text WEBVTT, then a blank lineW3C WebVTT
Timestampshh:mm:ss,mmm with a commahh:mm:ss.mmm: a full stop, then three digitsW3C WebVTT
Cue numbersOne per cueDropped, or kept as identifiers if you tick the box. An identifier must be unique in the fileW3C WebVTT
End timeAny valueMust be greater than the start time, so cues that are not are left outW3C WebVTT
Cue orderAny orderStart times must not go backwards, so cues are sorted by start timeW3C WebVTT
Overlapping cuesCan happen, for example when two people talk at onceAllowed, so they are left aloneW3C WebVTT
Characters in textAny& and < are escaped. The text -->, which is not allowed in a cue, is escaped tooW3C WebVTT
EncodingNo official rule; YouTube asks for plain UTF-8UTF-8 when you saveW3C WebVTT

What is lost when you go back from VTT to SRT

SRT has no place for most of what WebVTT can carry. Converting VTT to SRT keeps the times and the text, and the tool says what it dropped.

  • Cue settings such as position, alignment and size are dropped.
  • STYLE and REGION blocks and NOTE comments are dropped.
  • Voice tags are removed, so a speaker name inside a tag is not in the SRT. The spoken text stays.
  • Class, language, ruby and inline timestamp tags are removed. Bold, italic and underline are kept.
  • Entities such as &amp; and &lt; are turned back into the characters.

Going SRT to VTT to SRT again gives back the same times and text for a plain file. It will not bring back colours or positions that the first step removed.

Worked examples

First, one cue with the usual traps in it: an ampersand and a colour tag. The tool writes the header, swaps the comma, escapes the ampersand and removes the font tag, then lists the font tag in the notes.

SRT inWebVTT outWhy
1(removed)The cue number is not needed in WebVTT
00:00:01,000 --> 00:00:03,50000:00:01.000 --> 00:00:03.500Full stop before the milliseconds
Tom & Jerry <font color="#ff0000">wave</font>.Tom &amp; Jerry wave.A bare & is not allowed; the font tag is dropped and the text stays

Second, an example file with two bad cues. Cue 14 starts and ends at 00:02:10,000, and cue 20 is listed above cue 19. The zero-length cue is left out and reported with its line number, and the others are sorted. If you need that cue, fix its end time in the SRT and convert again.

Third, an offset. A 3,500 ms cue that starts at 00:00:01,000 is moved by -3 seconds. It would start at minus two seconds, so it is cut to start at 00:00:00.000 and ends at 00:00:00.500, with a note. A cue that would end before 00:00 is left out and reported.

Which format to use

  • Uploading to YouTube: its help page lists SubRip (.srt) as a basic format, basic version only and plain UTF-8, and WebVTT (.vtt) as an advanced format marked In initial implementation, with styling limited to bold, italic and underline. Both are accepted, so convert only if you need the VTT.
  • Using the file with a web video player or the HTML track element: WebVTT is the web format. The W3C names it as the most common format for captions on the web.
  • If letters show as question marks or odd symbols after converting: the source was not saved as UTF-8. Re-save it as UTF-8 in your editor and add it again.
  • If every cue is late or early by the same amount: use the move box instead of editing times by hand.
  • If you want to do it by hand: add WEBVTT and a blank line at the top and change the comma to a full stop in the timing lines only, not in the dialogue. Save as UTF-8 with a .vtt extension.

For the wider comparison of the two formats, see SRT vs VTT, and for the terms see what is VTT and what is an SRT file.

Limits of this converter

  • It checks the WebVTT rules listed above. It does not check that your player will accept the file. Test the result in the player you use.
  • It reads the common SRT layout. A file in a very unusual layout may come out with cues missing, and the notes will say that no timing lines were found.
  • Each file is limited to 5 MB. That is a limit of this tool, not of any platform.
  • It does not create WebVTT styling, regions or positions. Cues come out as plain cues with optional bold, italic and underline.
  • It does not touch the words. Spelling, line length and timing against the audio are still your job; the W3C says automatic captions usually need significant editing before they meet accessibility needs.

Where KeyMo fits

This is a utility for people who already have a subtitle file. KeyMo does something different: it cuts a long video into vertical 9:16 clips with word-by-word captions in 12 styles, and each clip comes with a score out of 10. This page makes no claim that KeyMo exports SRT or VTT files, and the converter does not need an account. If your next step is turning a long recording into captioned clips, see word-by-word captions.

Sources: W3C: WebVTT, The Web Video Text Tracks Format (Candidate Recommendation Draft, 20 May 2026) (checked 11 October 2026); YouTube Help: Supported subtitle and closed caption files (checked 11 October 2026); W3C WAI: Captions/Subtitles (checked 11 October 2026).

FAQ

How do I convert SRT to VTT manually?

Open the SRT in a plain-text editor, put WEBVTT and a blank line at the top, and change the comma to a full stop in each timing line only. Then save as UTF-8 with a .vtt extension. A tool is quicker for long files and also escapes characters WebVTT does not allow.

Can I convert SRT to VTT on Mac, Windows or Linux?

Yes. The converter runs in the browser, so the operating system does not matter and there is nothing to install. Open this page, add your file and download the result.

Can I convert many SRT files at once?

Yes. Add several files together and each gets its own converted download. Download all saves them one after another, and your browser may ask whether to allow multiple downloads.

Is my subtitle file uploaded anywhere?

No. The conversion runs in your browser tab. The text is not sent to a server, stored or tracked, and it disappears when you close or reload the page.

Why does WebVTT use a full stop instead of a comma?

The W3C WebVTT specification defines a timestamp as minutes, seconds, a full stop and three digits for the thousandths of a second. SRT, as shown in YouTube's example file, uses a comma in the same place.

Will colours and positions survive the conversion?

No. Font tags and position codes such as {\an8} are removed, and the tool lists how many it removed. Bold, italic and underline are kept unless you tick the option to remove them.

Does YouTube accept both SRT and VTT files?

YouTube's help page lists both. It describes SubRip as a basic format that must be plain UTF-8 and WebVTT as an advanced format marked In initial implementation. Check the result after uploading.