Skip to main content

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.

1

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.

2

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.

3

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.

4

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.

1

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.

2

Drag your .srt file in

Drop the .srt file onto the converter, or right-click the file → Convert. FileHop parses the SubRip cues.

3

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.

4

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.

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. 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. 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. 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. 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. 5 Converting captions for confidential or client video — keep it offline; don't upload to a hosted converter that's also harvesting leads.
  6. 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

Frequently Asked Questions

Are SRT and VTT files the same thing?
Almost. SRT (SubRip) and WebVTT (.vtt) are both plain-text caption files — a list of cues, each with a start → end timestamp and a line or two of text. The practical differences: a VTT file must begin with a "WEBVTT" header line (an SRT has none); 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; and VTT supports extras SRT doesn't — cue positioning, ::cue CSS styling, REGION blocks, NOTE comments, chapters and metadata tracks. For a plain SRT none of those extras are in play, which is why converting SRT → VTT loses nothing.
How do I convert SRT to VTT for free without any software?
Open the .srt file in any plain-text editor (Notepad, TextEdit in plain-text mode, VS Code). Add a line containing exactly "WEBVTT" at the very top, then a blank line. Replace the commas in the timestamps with periods — every "00:00:01,000 --> 00:00:04,000" becomes "00:00:01.000 --> 00:00:04.000" (use Find & Replace carefully so you don't change commas inside the caption text — a regex like ,(\d\d\d -->) → .$1 is safer than a blind replace-all). Save the file with a .vtt extension. That's it. The two things people get wrong: forgetting the WEBVTT header (the player rejects the file), and missing some timestamps (those cues silently won't appear).
How do I convert SRT to VTT offline without uploading my file?
Download FileHop (free, Mac and Windows) and open the SRT to VTT converter. Drag your .srt file in, choose WebVTT (.vtt), click Convert — the .vtt is written next to the original. The conversion runs entirely inside the desktop app, so the subtitle file never touches a network. Every browser-based SRT → VTT converter on the first page of Google uploads your file to a server (and most are lead magnets for a paid transcription service); for confidential or client captions, an offline desktop conversion is the only version with no upload at all.
Will I lose any formatting or styling when I convert SRT to VTT?
No. SRT → VTT is lossless. A plain SRT carries only cue numbers, timestamps and text (plus, at most, basic inline HTML tags like <b> or <i>, which VTT also supports), and WebVTT is a strict superset of all of that. The only conversions where you can lose something are the other direction — or from a styled .ass / .ssa file, which can hold fonts, colours, positioning, karaoke timing and effects that SRT and VTT can't represent. FileHop shows a preflight warning listing exactly what won't survive before you run an .ass conversion; for SRT → VTT there's nothing to warn about.
Why won't my .vtt file play in the browser or video player?
Almost always one of two things. First: the file is missing the "WEBVTT" header — it must be the very first line, on its own, with nothing before it (not even a blank line or a byte-order mark). Second: a timestamp still has a comma instead of a period — one bad "-->" line means that one cue silently won't display. Open the file in a text editor, confirm line 1 is "WEBVTT", and check that every timestamp uses periods (00:00:01.000), not commas. A converter does both of these correctly every time, which is why a hand-made VTT is the one most likely to break.
Can I batch or bulk convert a whole folder of SRT files to VTT?
If you have many files, use a tool rather than editing each one by hand. FileHop converts subtitle files one at a time in the desktop app today — there's no one-click folder mode for subtitles yet. For a whole folder, two reliable free alternatives: Subtitle Edit (free, open-source) has a Tools → Batch convert option that does SRT → VTT across many files at once; or, from a terminal, FFmpeg in a loop — for example, on macOS or Linux: for f in *.srt; do ffmpeg -i "$f" "${f%.srt}.vtt"; done. All of these run offline; none upload your files.
How do I convert SRT to VTT on a Mac?
Same options as on Windows. Manually: open the .srt in TextEdit (Format → Make Plain Text), add the "WEBVTT" header line at the top, replace commas with periods in the timestamps, and save as .vtt. With a tool: FileHop has a Mac desktop build — open the SRT to VTT converter, drag the file in, click Convert, and the .vtt appears next to the original, all on-device. From Terminal: ffmpeg -i input.srt output.vtt (install FFmpeg via Homebrew). Subtitle Edit also runs on Mac under Mono if you want its batch-convert mode.
How do I convert an SRT caption file to VTT in Adobe Premiere Pro?
Premiere Pro itself doesn't convert subtitle files between formats — it imports captions, lets you edit them on the timeline, and exports them. If you import an .srt as captions and then export the sequence's captions as a sidecar file, choose WebVTT as the export format to get a .vtt. If you just need the file converted (not re-edited), it's faster to use a dedicated converter: FileHop's SRT to VTT tool offline, or a browser converter if the file isn't confidential. Either way the result is the same — a valid WEBVTT file with period-separated timestamps.
How do I convert a TXT file to VTT?
A plain .txt with no timestamps isn't a caption file, so there's nothing mechanical to convert — captions need a start → end time for every line. You have two real paths: (1) if the .txt is a transcript of a video or audio recording, generate timed captions from the media itself — FileHop's transcription tool turns audio into a timed SRT or VTT directly; (2) if the .txt is actually an SRT that just has the wrong extension (it has the numbered-cue, timestamp, text blocks), rename it to .srt and convert that to .vtt as normal. A bare wall of text without timings can't become a usable .vtt without re-timing it against the media.
Does FileHop's SRT to VTT converter work on Linux?
Not today — FileHop ships Mac and Windows desktop builds. For an offline SRT → VTT conversion on Linux, the best free options are FFmpeg (ffmpeg -i input.srt output.vtt, and a shell loop for a whole folder), or Subtitle Edit running under Mono (which also gives you its batch-convert mode). Both run entirely on your machine with no upload. The manual text-editor method — add the "WEBVTT" header, swap commas for periods in timestamps, save as .vtt — works on Linux too, in any plain-text editor.

Related Tools & Guides