Convert SRT to VTT Online
Drop an .srt file and get a .vtt (WebVTT) file in seconds. WebVTT is the subtitle format that HTML5 <video> players and YouTube actually understand, while almost every subtitle download gives you SRT. This SRT to VTT converter runs entirely in your browser, so your subtitle text never leaves your device.
How to convert SRT to VTT
Converting takes a few seconds and never involves a server. Follow these steps:
- Drop your SRT file — Drag the .srt file onto the box above, or click to browse. The file is read directly from your device — nothing is uploaded. The format is detected from the file name and from the contents of the file itself.
- Check the detected format and encoding — Two badges show the detected format and text encoding. Chinese subtitles saved on Windows are frequently GBK or GB18030 rather than UTF-8, which is what makes them look garbled elsewhere. This tool detects those encodings automatically and converts the text to clean Unicode.
- Shift the timing if needed — If the subtitles are consistently early or late, enter a value in the Time shift field before converting. Use a negative number to show cues earlier (for example -1.5) and a positive number to delay them (for example +3).
- Convert — Click Convert to VTT. Each timestamp is rewritten into WebVTT form, the required WEBVTT header is added, and the output is assembled entirely inside your browser.
- Preview and download — The converted text appears in the preview box. Skim it to confirm the characters render correctly, then click Download to save the .vtt file alongside your original.
What is a SRT file?
SRT (SubRip Subtitle) is the plain-text subtitle format that has been the de facto standard since the late 1990s. An .srt file is simply a numbered list of cues: a sequence number, a line holding start --> end timestamps that use a comma for milliseconds (00:01:23,456 --> 00:01:26,456), one or more lines of text, then a blank line. It carries no styling, no positioning and no metadata. That simplicity is exactly why it is so widely supported: virtually every media player, editor, streaming box and phone opens an .srt file without complaint. When you download subtitles from a subtitle site, they almost always arrive as .srt.
What is a WebVTT file?
VTT (WebVTT, Web Video Text Tracks) is the W3C standard caption format for the web. A .vtt file must begin with the literal line WEBVTT, followed by cues whose timestamps use a dot instead of a comma (00:01:23.456 --> 00:01:26.456). On top of that, WebVTT adds features SRT never had: optional cue identifiers, cue settings for positioning and alignment (line, position, align, size), limited inline markup for bold, italic and underlined text, voice spans, chapter and metadata blocks, and a NOTE syntax for comments. Most importantly, WebVTT is supported natively by the browser's <track> element, so no JavaScript library is needed to display it.
SRT vs VTT: what actually changes
Here is exactly what the conversion alters and what it preserves, so there are no surprises when you play the result:
| Aspect | SRT (source) | VTT (output) |
|---|---|---|
| Timestamps | 00:01:23,456 --> 00:01:26,456 (comma) | 00:01:23.456 --> 00:01:26.456 (dot) |
| File header | None | Must start with WEBVTT |
| Cue numbering | Required sequence numbers | Optional cue identifiers |
| Styling | Not supported | CSS via ::cue, plus limited inline tags |
| Positioning | Not possible | Cue settings: line, position, align, size |
| Native web support | No (needs JavaScript) | Yes, via the HTML5 <track> element |
| Comments | Not part of the format | NOTE blocks supported |
Why convert SRT to VTT?
SRT plays in virtually every desktop player, but the moment you put captions on a web page you need WebVTT (.vtt). Converting SRT to VTT only changes the timestamp format and adds the required header — no dialogue is altered and nothing is dropped. This tool also auto-detects Chinese GBK/GB18030 subtitle files, so text that looks garbled in a plain editor comes out correct here.
Common use cases
Embedding captions in your own website
If you serve video with the HTML5 <video> element, the browser only accepts .vtt for <track kind="subtitles">. Converting your SRT to VTT is the standard way to add captions to a self-hosted player without a JavaScript shim.
Uploading to YouTube and Vimeo
Both platforms accept SRT, but VTT is the safer choice when you also need cue positioning or styling, and it is the format most LMS and course platforms expect by default.
Accessibility compliance
Many WCAG and Section 508 workflows standardise on WebVTT. Converting once gives you a caption file that satisfies common web accessibility checkers with no further conversion steps.
Browser-based caption editors
Most modern caption editors and review tools import VTT natively. Keeping a VTT copy of every subtitle avoids a conversion step later in the production pipeline.
Tips and troubleshooting
Keep the original SRT
WebVTT features cannot be represented back inside an SRT file, so treat the .vtt as a delivery artefact and keep your .srt as the master.
Garbled characters mean an encoding problem
If the preview shows strange symbols, the source was saved in a legacy encoding such as GBK or Windows-1252. This tool detects and converts those automatically, but re-saving the original as UTF-8 is still the cleanest fix.
Subtitles drifting as the video plays
A constant offset is fixed with the Time shift field. If the drift grows steadily over time, the real cause is a frame-rate mismatch (for example 23.976 vs 25 fps), which a constant shift cannot fully correct.
Cue positioning is not carried over
SRT stores no positioning data, so converted VTT cues sit in the default bottom-centre position. Add cue settings manually in a VTT editor if you need custom placement.
Naming your subtitle files so players find them
Most desktop and mobile players load a subtitle file automatically when two conditions are met: the subtitle sits in the same folder as the video, and both files share the same base name. A video called movie.mp4 is matched by movie.srt, movie.en.srt or movie.en.forced.srt, but not by subtitles.srt or movie (1).srt. The language code in the middle is optional and is used by players that offer a subtitle track menu.
If captions do not appear, the problem is almost always the file name rather than the file contents. Rename the subtitle to match the video exactly, or use the player's subtitle menu to load it manually once. On macOS, Total Video Player Pro goes a step further and matches subtitle files to your video automatically, including subtitle tracks already embedded inside MKV and MP4 files.
Using the converted VTT file
On a web page, put the .vtt next to your video and reference it with a <track> element inside your <video> tag: <track kind="subtitles" src="movie.en.vtt" srclang="en" label="English" default>. The srclang and label attributes are what let the browser build a language menu, and default tells it to show captions automatically. If you serve several languages, add one track per language and drop default so the viewer can choose.
YouTube Studio and Vimeo both accept .vtt uploads, and most learning management systems expect it. On the desktop, VLC and other modern players open a .vtt automatically if it sits in the same folder as the video and shares its base name — movie.vtt beside movie.mp4. Older hardware players may not read WebVTT at all, so keep your original .srt if you distribute to mixed devices.
Privacy: nothing leaves your browser
Most online subtitle converters work by uploading your file to a server, processing it there and letting you download the result. That approach has three practical drawbacks: your subtitle text passes through someone else's machine, you wait for the upload and the download, and the service can impose file size limits, queues or watermarks.
This converter does none of that. It is built with JavaScript and runs inside your browser tab. When you drop a SRT file, the browser reads it from your disk, parses it in memory, converts it to VTT and hands the result straight back to you — no network request ever carries your content. That has a useful side effect: there is no queue, no server-side size limit and no watermark, and the tool keeps working even if you lose your connection after the page has loaded. If you handle unreleased footage, confidential transcripts or anything you would rather not share with a third party, local processing is the safer default.
Frequently asked questions
What is the difference between SRT and VTT?
SRT stores numbered cues with 00:00:01,000 --> 00:00:04,000 timestamps. VTT (WebVTT) uses 00:00:01.000 --> 00:00:04.000 (a dot instead of a comma), requires a WEBVTT header, and allows CSS styling and cue positioning. Both carry the same text and timing; VTT is the web-native format.
Is converting SRT to VTT lossless?
Yes for text and timing. The conversion only reformats timestamps (comma to dot) and adds the header. No dialogue is changed or dropped, and there is no styling to lose because SRT has none to begin with.
Do I need to keep the WEBVTT header?
Yes. Browsers reject a .vtt file that does not start with the WEBVTT line. This tool adds the header automatically, so you do not have to think about it.
Can I convert several files at once?
Not in a single click, but conversion is instant and local, so you can convert files one after another with no queue and no waiting for an upload.
Will Chinese or Japanese subtitles survive the conversion?
Yes. The file encoding is detected automatically, including UTF-8 and the GBK/GB18030 encodings common on Chinese Windows systems, and everything is exported as clean UTF-8.
Can I convert SRT to VTT on a Mac, Windows or phone?
Yes. Because the converter runs in the browser it behaves identically on macOS, Windows, Linux and mobile browsers. There is nothing to install and no operating-system-specific step, and the file is processed on whichever device you happen to be using.
Watching videos with subtitles on your Mac?
Total Video Player Pro for Mac plays MKV, AVI, 4K and Blu-ray with automatic SRT/ASS subtitles, embedded subtitle tracks and full styling — no codec or converter needed.