How to Convert SRT to VTT (Free & Offline)
Convert SRT subtitles to WebVTT (.vtt). Do it free in a text editor, or in one click offline with FileHop — files never leave your device. Mac & Windows.
What SRT and VTT actually are
SRT (SubRip) and WebVTT (.vtt) are both plain-text caption files — a numbered (SRT) or optionally numbered (VTT) list of cues, each with a start → end timestamp and a line or two of text. They are about 95% the same file. Open either one in a text editor and you'll recognise the other instantly: timestamps, then the words that appear on screen during that window, then a blank line, then the next cue.
The reason WebVTT exists is the web. It's the format the HTML5 <track> element loads — a browser will not play an .srt as a caption track on a <video> element — so anything web-facing (a <video> on a site, players like Video.js, Plyr or hls.js, HLS streaming packaging) needs .vtt. SRT, meanwhile, is the universal interchange format: VLC and other media players, video editors, YouTube and Vimeo upload forms, and transcription tools all accept .srt without complaint. You convert SRT → VTT when something on the web is the destination.
The differences that actually bite are small but real. A VTT file must begin with a line containing exactly "WEBVTT" (an SRT has no header; a VTT without one is rejected outright). VTT uses a period for the millisecond separator — 00:00:01.000 — where SRT uses a comma — 00:00:01,000. VTT makes cue numbers optional (they're kept as cue IDs if present). And VTT supports extras SRT lacks: cue positioning and alignment, ::cue CSS styling, REGION blocks, NOTE comments, and chapter and metadata tracks. For a plain SRT, none of those extras are in play — which is exactly why converting SRT → VTT loses nothing.
SRT vs WebVTT — what actually changes
The two formats are almost identical. These are the differences that matter when a player rejects your subtitles.
| Aspect | SRT (.srt) | WebVTT (.vtt) |
|---|---|---|
| File extension | .srt | .vtt |
| Header line | None | "WEBVTT" — required |
| Millisecond separator | Comma — 00:00:01,000 | Period — 00:00:01.000 |
| Cue numbers | Required | Optional (kept as cue IDs) |
| Web video <track> | Not supported by browsers | The required format |
| Styling & positioning | Basic inline HTML tags only | Cue settings + ::cue CSS |
| Comments / metadata | None | NOTE blocks, chapters, metadata tracks |
Rule of thumb: web video needs .vtt; almost everything else (media players, editors, upload forms, transcription tools) is happy with .srt.
How to convert SRT to VTT by hand (free, in a text editor)
Because the formats are nearly identical, you can convert one file with no software at all. This is the method the YouTube tutorials and the Reddit threads circle around — and it's worth knowing, even if you'll use a tool for anything more than a one-off.
Open the .srt file in a plain-text editor
Notepad on Windows, TextEdit in plain-text mode on Mac (Format → Make Plain Text), VS Code, or any editor that won't add formatting. Don't use a word processor.
Add a "WEBVTT" header line at the top
Insert a line containing exactly WEBVTT — nothing else, no spaces before it — as the very first line, followed by a blank line. This single line is what tells a browser or player the file is WebVTT; without it, the file is rejected.
Replace the commas in the timestamps with periods
Every "-->" line looks like 00:00:01,000 --> 00:00:04,000 in SRT and must become 00:00:01.000 --> 00:00:04.000 in VTT. Use Find & Replace — but carefully: only the commas inside timestamps should change. If your caption text contains commas, a blind replace-all will mangle it. Safer: replace the pattern ",000 " / ",500 " etc., or use a regex such as ,(\d\d\d -->) → .$1 in an editor that supports regex.
Save the file with a .vtt extension
Rename output.srt to output.vtt (or use Save As and change the extension). That's the whole conversion — header, period-separated timestamps, .vtt extension.
What people get wrong
- •Forgetting the WEBVTT header — the player rejects the file, usually with no useful error.
- •Missing some timestamps — any "-->" line that still has a comma means that one cue silently won't show.
- •A blind comma replace-all — if the caption text has commas, replacing every comma corrupts the words on screen.
A tool does steps 2 and 3 perfectly, every cue, every time — see below.
How to convert SRT to VTT in FileHop
Four steps. The conversion runs entirely inside the desktop app — the subtitle file never touches a network.
Open FileHop
Launch the FileHop desktop app on Mac or Windows — or open the SRT to VTT converter directly. The subtitle converter is on the home screen.
Drag your .srt file in
Drop the .srt file onto the converter, or right-click the file → Convert. FileHop parses the SubRip cues.
Choose WebVTT (.vtt) as the target format
Pick WebVTT from the output-format dropdown. FileHop writes a valid "WEBVTT" header, converts every timestamp's comma to a period, and keeps cue numbers as cue IDs.
Click Convert
The .vtt file is written next to the original. If the target name already exists, the filename is auto-uniquified with _1, _2, etc., so a previous export is never silently overwritten.
SRT → VTT is lossless — nothing in a plain SRT is dropped. If you ever convert a styled .ass file instead, FileHop shows a preflight warning listing what won't survive (styling, positioning, karaoke, effects) before you commit.
Why offline beats online for caption conversion
Browser-based converters dominate the search results, but every one of them uploads your file, and most are lead magnets for a paid transcription vendor. Here's the editorial case for converting on your own machine.
Privacy: captions belong to the video
Every SRT → VTT converter on the first page of Google — HappyScribe, GoTranscript, Maestra, Rev, TechSmith, Ebby, SubtitleTools — uploads your subtitle file to a server. Captions routinely belong to confidential or client video: course material under NDA, internal training, unreleased product footage, legal or medical recordings. "Secure" on those pages is a privacy policy, not an architecture. FileHop's conversion runs in-process inside the desktop app — disconnect from the network and the conversion still runs.
Batches & reliability
Converting one file in a text editor is fine. Converting a course library or a video archive by hand is error-prone — a missed header here, a stray comma there, and one cue silently breaks. A tool gets the header and every timestamp right, every file, every time.
Odd inputs
SRT files with HTML formatting tags (<b>, <i>, <font>), unusual encodings, or byte-order marks trip up a naive find-and-replace. A real parser handles them — and the result is still valid WebVTT.
For anything more than a one-off, and for anything confidential, convert offline.
Working with captions more broadly? These pages handle the adjacent jobs:
FileHop vs the SERP: how the options compare
Seven ways to turn an .srt into a .vtt. FileHop is highlighted in blue. Honest about the things every option doesn't do.
| Tool | Type | Offline | Free | Uploads your file | Batch / folder | Other subtitle formats | Notes |
|---|---|---|---|---|---|---|---|
| FileHop | Desktop GUI (Mac, Windows) | Yes | Yes | Never | One file at a time today | SRT ↔ VTT ↔ ASS | Data-loss preflight warning for styled formats; auto-uniquified output filename |
| HappyScribe / GoTranscript / Maestra | Browser | No | Yes (lead magnet) | Yes | No (free converter) | Limited | Funnels to a paid transcription / subtitling service |
| Rev caption converter | Browser | No | Yes (lead magnet) | Yes | No | Many (SCC, STL, MCC, DFXP, QT, VTT, SRT) | Multi-format, but each conversion gets little attention; funnels to Rev's services |
| SubtitleTools.com | Browser | No | Yes (ad-supported) | Yes | Multiple files mode | Many | Broad format support, but every file is uploaded |
| Subtitle Edit | OSS desktop (Windows; Mono on Mac/Linux) | Yes | Yes | Never | Yes — Tools → Batch convert | Many | The standard free answer for a whole folder of files |
| FFmpeg | CLI | Yes | Yes | Never | Yes — via a shell loop | Many | ffmpeg -i in.srt out.vtt; no GUI |
| Manual text-editor method | Manual | Yes | Yes | Never | No | No | Free and private, but error-prone (missed header, stray commas) |
If you need a whole folder converted, Subtitle Edit's batch convert or an FFmpeg loop are honest recommendations. For a desktop GUI on Mac or Windows that never uploads your file, FileHop is free where the desktop competition is paid — and unlike the browser converters, the file never leaves your device.
Common questions about the conversion
Will I lose anything?
No. SRT → VTT is lossless — a plain SRT has no styling or positioning data to lose, and VTT is a strict superset of what SRT carries. (Going the other way, or from a styled .ass file, can lose styling, positioning, karaoke timing or effects — FileHop warns you first in that case.)
Why won't my hand-made .vtt play?
Almost always one of two things: the file is missing the "WEBVTT" header line at the very top, or a timestamp still has a comma instead of a period (one bad timestamp = one missing cue, silently). Open the file in a text editor and check the first line and every "-->" line.
Should I even convert, or re-export?
If your .srt came straight out of a transcription tool or a video editor, the cleanest fix is often to re-export from there as WebVTT directly. FileHop's transcription and video editor both export SRT or VTT, so you can skip the conversion step entirely.
Best practices
Six rules that keep an SRT → VTT conversion clean.
- 1 Web video needs .vtt — for an HTML5 <track>, Video.js / Plyr / hls.js, or HLS packaging, you must use WebVTT; everything else (VLC and other players, editors, YouTube/Vimeo uploads) takes .srt happily, so don't convert unless the destination requires it.
- 2 Always check the "WEBVTT" header is the very first line of a .vtt file — it's the single most common reason a hand-made VTT is rejected.
- 3 When converting by hand, fix the commas in timestamps only (00:00:01,000 → 00:00:01.000); don't blind-replace commas if your caption text contains any.
- 4 For a whole folder of files, use a tool — FileHop (one file at a time), Subtitle Edit's batch convert, or an FFmpeg loop — rather than editing each file by hand.
- 5 Converting captions for confidential or client video — keep it offline; don't upload to a hosted converter that's also harvesting leads.
- 6 If the conversion is just to get a web-playable file, consider re-exporting from your transcription tool or video editor as VTT directly (FileHop's transcription and video editor both do), which skips the conversion entirely.
Free. Offline. Files never leave your device. Mac & Windows desktop app.
Open the SRT to VTT Converter