SRT to VTT Online: Differences and Three Approaches
You have an SRT file and want to play it on a web page or upload it to a platform that only accepts WebVTT — and you get blocked. The two formats look like they differ only by file extension, but they actually differ in header, timecode syntax and styling support. Understanding the differences first, then picking an approach, saves a lot of detours.
This comes up especially often when distributing videos internationally — the same finished video needs to work both on the web and in local players, so you need both formats ready.
What Exactly Differs Between SRT and VTT
Both are plain-text, cue-based subtitle formats. But VTT has a few things SRT does not:
- File header: the first line of a VTT file must be
WEBVTT; SRT has no such requirement - Timecode separator: SRT uses a comma
,for milliseconds (e.g.00:00:01,000), VTT uses a period.(e.g.00:00:01.000) - Styling and positioning: VTT supports inline tags like
<c>for coloring and<b>for bold, plus per-cue positioning; SRT essentially carries plain text only
# SRT
1
00:00:01,000 --> 00:00:02,500
We'll cover three things today
# VTT
WEBVTT
00:00:01.000 --> 00:00:02.500
We'll cover three things today
Note that VTT cues are also separated by blank lines, but the cue numbers are optional — the spec does not require writing 1, 2, 3. Simply renaming .srt to .vtt usually will not work: players will error out because of the missing header and the mismatched timecode format.
One easily missed point: some platforms claim to support VTT but only accept a specific dialect — for example, requiring every cue to be numbered, or rejecting certain inline styles. When an upload fails, first check whether it is "invalid format" or "unsupported styling". Only the former is a conversion problem; the latter is a platform limitation. Do not mistake a platform-side styling restriction for a failed conversion.
Approach 1: Online Conversion (Easiest)
If you do not want to install software and only convert occasionally, an online tool is the easiest route. Take SmileSub's SRT to VTT tool as an example — no login required:
- Upload the SRT file
- Wait for parsing and conversion to finish
- Download the VTT file, with the cue count and timeline unchanged
Conversion only touches the format, not the content — your original text, Chinese or English, is preserved as-is. The free quota is single files up to 1 MB and up to 500 subtitle cues, with 3 uses per tool per IP per day.
If your subtitles also need styling or positioning at a specific spot on screen, that is beyond what SRT can express — what you need is the SRT to ASS tool, not VTT.
Approach 2: Mount Directly in the Player
Many web players (and the browser-native <video> + <track> combo) only accept VTT. If all you want is to display subtitles on a web page, there is no need to convert the source file back and forth:
- Point a
<track>element in your HTML at the VTT file - Or upload the VTT as a separate track to a platform that supports it
The precondition for this route is that the platform accepts VTT in the first place. If you need to deliver a .srt file to a client, you still have to do a file conversion.
For a fuller guide to choosing subtitle formats — including burned-in vs. soft subtitles — you can browse the other articles on the SmileSub blog.
Approach 3: Command Line for Batches
When dozens or hundreds of subtitles in the same batch need converting, the command line is more reliable. The common approach is a single ffmpeg remux command:
ffmpeg -i input.srt output.vtt
It will likewise add the WEBVTT header and turn commas into periods. But the command line is stricter about the input file's format — once the source SRT has problems like overlapping cues or broken numbering, the converted VTT carries the same problems. Before converting, it is a good idea to run the file through the subtitle validation tool first.
One more reminder: ffmpeg conversion does not fix problems in the source file itself — it only moves formats. If the source SRT contains dirty data, clean it first, then convert, and the result will be clean.
How to Choose Among the Three
| Your scenario | Suggested approach | Main cost |
|---|---|---|
| Occasional conversion, no software installs | Online tool | Almost zero |
| Web display, platform accepts VTT | Player mounting | Requires platform support |
| Dozens or hundreds of files | Command line | Basic command skills, clean source files |
In one sentence: online conversion suits ad-hoc, small-volume jobs; player mounting suits web presentation; the command line suits batches and automation.
Start with the lowest-cost option and upgrade only when it is not enough — that is the steadier rhythm.
FAQ
Can I just rename the extension and use it?
Basically no. The VTT would lack the WEBVTT header and its timecodes would still use commas; most players will ignore it or throw an error. You need a real conversion to fill in these differences.
Why did the subtitle positions change after conversion?
SRT carries no position information, and converting to VTT will not invent positioning out of thin air. If you see subtitles in odd positions, it is usually the player's own default styling, not something the conversion caused. Precise position control requires ASS.
Will online conversion change my text content?
No. Conversion only touches the format layer (header, timecode separator, optional cue numbers); the text is preserved as-is. Translating or proofreading the text itself is a separate matter — that calls for a translation tool.