Turn SubRip (.srt) subtitles into WebVTT (.vtt) files for HTML5 video players, Video.js, JW Player, Vimeo and online course platforms. Paste text or drop several files, preview every cue on a mock video frame, and download the VTT files one by one or as a ZIP.
Last updated:
00:00:00.000
#
Start
End
Text
Advertisement
Advertisement
How to use the SRT to VTT
Drop your .srt files on the box, click choose files, or paste SRT text into the left box. An example is loaded so you can see the result first.
Check the encoding shown next to each file. Accents look wrong? Pick the correct code page in File encoding.
Choose cue settings if you want every subtitle at the top, left-aligned or positioned; leave them on Player default otherwise.
Drag the preview slider or click a row in the cue table to see how each subtitle will appear.
Press Download .vtt or Copy VTT. For several files, press Download all as ZIP.
What changes when SRT becomes VTT
SRT and WebVTT look almost identical, which is why many SRT files fail on websites for tiny reasons. These are the exact changes the converter makes:
Part
SRT
WebVTT
First line
Cue number 1
WEBVTT header, then a blank line
Timestamp
00:01:02,500 --> 00:01:04,000
00:01:02.500 --> 00:01:04.000
Cue number
Required
Optional cue identifier (kept if you tick the option)
Position
{\an8} tag (unofficial)
Cue settings after the time: line:0 align:start position:10%
Formatting
<i> <b> <u> <font color>
<i> <b> <u> <c.class> <v Speaker>
Special characters
& and < written as-is
Must be escaped as & and <
Text encoding
Any (often Windows-1252)
UTF-8 only
Using the VTT file on a web page
Upload the .vtt file next to your video and reference it with a <track> element:
Serve the file with the text/vtt content type. If the video and the VTT are on different domains, the server must send CORS headers and the video needs crossorigin="anonymous", otherwise the browser silently ignores the track. Use kind="captions" instead of subtitles when the file includes sound descriptions such as [door slams] for deaf and hard-of-hearing viewers.
Cue settings in short
line:0 puts the cue on the top line; line:-1 is the bottom line (the default), line:-2 one line higher. Percentages such as line:50% place it vertically.
align:start | center | end aligns the text inside the cue box; start is left for left-to-right languages.
position:10% moves the cue box horizontally. Players apply settings slightly differently, so check the preview in your own player.
Frequently asked questions
What is the difference between SRT and VTT?
Both are plain-text subtitle formats with numbered or named cues and start and end times. VTT (WebVTT) must start with a WEBVTT line, uses a dot instead of a comma before the milliseconds (00:00:01.000), allows cue settings such as line and align after the timestamp, and supports NOTE comments, STYLE blocks and <c> and <v> tags. SRT has none of these extras.
Why do I need VTT instead of SRT for my website?
The HTML5 <track> element used by web browsers only accepts WebVTT. If you add an SRT file to a <video> tag, Chrome, Safari, Firefox and Edge will ignore it. Converting to VTT is required for native browser captions and for most web players.
Does the converter keep italics and other formatting?
Yes. <i>, <b> and <u> tags are valid in both formats and are kept. <font color> tags are not part of WebVTT, so they are removed by default or can be converted into <c.colour> classes that you style with CSS. Other unknown tags are escaped so they show as text instead of breaking the file.
What does {\an8} mean in an SRT file and what happens to it?
{\an8} is a positioning tag borrowed from the ASS format: it puts the subtitle at the top centre, often used so text doesn't cover on-screen captions. WebVTT does not understand it, so the tool removes it and adds the equivalent cue setting line:0 (top). {\an7} and {\an9} also get align:start or align:end.
My accented letters turn into strange symbols. How do I fix it?
Old SRT files are often saved in a Windows code page instead of UTF-8. The tool tries UTF-8 first and falls back to Windows-1252, which covers Western European languages. For Polish, Czech, Russian, Greek, Turkish or Arabic subtitles, choose the matching code page in File encoding; the output is always UTF-8 as WebVTT requires.
Are the subtitle timings changed?
No. Each timestamp is copied exactly, only reformatted from HH:MM:SS,mmm to HH:MM:SS.mmm. A cue whose end time is before its start time, which players would drop, is given a 2-second duration and reported in the notes. To shift or resync timings, use the SRT Time Calculator.
Are all the tools on FreeToolCabin tested for quality and accuracy?
Yes! Every tool on our site undergoes automated Q/A testing in real browser environments to ensure high precision, correct output, and zero errors. If you happen to spot a bug or have a suggestion, please contact us at [email protected] and our team will review it right away.