Yes, you can convert a WebVTT subtitle file to SRT offline. Keep the original VTT file, change the timestamp separator from a period to a comma, remove web-only cue settings, number the subtitle blocks, and test the new SRT with the final video. The whole job can stay on your Windows computer.

VTT and SRT are similar, but not identical
Both formats store timed caption cues. The main difference is where they are most useful. WebVTT was made for web video and can carry cue settings, styling, regions, and voice labels. SRT is simpler and is accepted by many desktop players, editors, and upload tools.
| Detail | WebVTT | SRT |
|---|---|---|
| File marker | WEBVTT on the first line | No required header |
| Milliseconds | Uses a period | Uses a comma |
| Extra cue settings | May include position and alignment | Usually removed or simplified |
| Block numbering | Optional in many files | Expected by most readers |
Make a copy before converting
Do not edit the only copy of a subtitle file. Put the original VTT beside the working copy and give the output a different name, such as interview-en.srt. This makes it easy to compare the two files if a cue goes missing.
Also check the video and subtitle file before you begin. A VTT file can be valid while still being the wrong language, an old edit, or a file with a different starting offset. Play the first minute with the VTT if possible so you know what “correct” looks like.
Check the first cue
Open the copy in a plain-text editor. A simple VTT file may look like this:
WEBVTT
00:00:01.000 --> 00:00:04.000
Welcome to the tutorial.
00:00:05.500 --> 00:00:08.000
Let’s get started.
The WEBVTT line identifies the format. A cue has a start time, an end time, and one or more lines of text. Blank lines separate cues. Keep the subtitle text unchanged during the first conversion pass so you can separate format cleanup from caption editing.
Convert the timestamps
SRT uses the same time structure but changes the millisecond separator:

Change 00:01:02.500 to 00:01:02,500. Do this for both the start and end time of every cue. Do not change the colons between hours, minutes, and seconds. If a timestamp has no milliseconds, add them as ,000 in the SRT output.
Some files use hours inconsistently. Keep the hours field when it is present, even if the video is short. Consistent three-digit milliseconds are easier for players and editors to read.
Remove WebVTT-only parts
Several VTT features do not have a direct SRT equivalent. Remove or simplify them when the destination expects plain SRT:
- the
WEBVTTheader - metadata lines that are not part of a cue
- cue settings such as
line,position,size, andalign - CSS-style tags that the target player cannot render
- unneeded voice or region markup, after checking that speaker meaning is not lost
Be careful with voice labels. A label such as <v Alex> may be useful in a transcript, even when the destination does not support the original VTT syntax. If the speaker identity matters, turn it into readable text instead of deleting it blindly.
Number the SRT blocks
An SRT file normally numbers each cue from 1 upward:
1
00:00:01,000 --> 00:00:04,000
Welcome to the tutorial.
2
00:00:05,500 --> 00:00:08,000
Let’s get started.
Use one number per cue, keep the numbers in order, and leave one blank line between blocks. If you remove a cue, renumber the remaining blocks. Skipped numbers are accepted by some tools but can confuse older players and make later edits harder.
Save as UTF-8 SRT
Save the output with the .srt extension and UTF-8 encoding. UTF-8 keeps accents and non-English characters intact. If a player shows boxes or strange symbols, inspect the encoding before changing the text.
Keep the original VTT and the converted SRT in separate files. A useful naming pattern is:
meeting-original.vtt
meeting-en.srt
meeting-en-reviewed.srt
Test the first, middle, and last cue
A file can look correct in a text editor and still drift during playback. Open the SRT with the exact video it will accompany and check three points:
- First: confirm the opening caption appears at the intended moment.
- Middle: check a cue after a pause, cut, or speaker change.
- Last: make sure the final caption is not clipped or left on screen.
When all three points are correct, skim the rest at normal speed. Look for overlapping cues, empty blocks, long lines, and captions that cover important on-screen text. If the whole file is early or late by the same amount, fix the offset once instead of editing every timestamp.
Common problems
The player rejects the file
Check the extension, numbering, blank lines, timestamp separator, and UTF-8 encoding. Remove the VTT header and cue settings. A strict importer often needs the plainest possible SRT structure.
Captions are shifted
Compare the first cue with the video. If every cue is shifted by the same amount, apply a single time offset. If the error grows through the video, the source may have a different frame rate, edit length, or missing section.
Formatting appears as text
Remove unsupported HTML-like or VTT styling tags. Keep only the readable words unless the destination explicitly supports the formatting you need.
Speaker labels disappeared
Review voice tags before cleanup. Convert important labels into ordinary text, such as Alex:, instead of removing them with a broad find-and-replace.
When a local tool saves time
Manual cleanup is fine for one short file. For repeated work, an offline subtitle utility can open VTT, export SRT, keep the original, and make the timestamp rules repeatable. Our Video to Text Transcriber page covers a local transcription workflow for Windows. If you are starting with a video instead of an existing VTT file, see the guide to converting MP4 to SRT offline.
For a custom Windows workflow, the Windows app development service can be used to plan a small batch converter around your file naming, review, and export needs.
Final checklist
- keep an untouched copy of the VTT file
- change periods to commas only in timestamp milliseconds
- remove the VTT header and unsupported cue settings
- number SRT blocks from 1 with blank lines between them
- save as UTF-8 with an
.srtextension - test the first, middle, and last cues with the final video
FAQ
Can I rename a VTT file to SRT?
No. Renaming changes the label, not the format. The timestamps, header, cue settings, and numbering still need to be converted.
Will conversion change the video?
No. VTT and SRT are subtitle files. The video stays unchanged unless you later burn the captions into a new video export.
Should I keep both files?
Yes. Keep the VTT as the source and the SRT as a delivery copy. That gives you a clean fallback if the SRT needs another round of cleanup.