SRT to VTT converter
Convert SubRip subtitles to WebVTT so they play in HTML5 video.
Processed in your browser. This file is converted on your device and is never uploaded.
Converter
.srt up to 25 MB. You can also drag a file here.
No file selected.
About this tool
HTML5 video only accepts WebVTT subtitles, but most subtitle files in circulation are SubRip .srt files. The two formats are close relatives, and this tool converts between them.
It adds the required WEBVTT header, rewrites timestamps to use a decimal point rather than a comma, and renumbers the cues in order.
Supported formats and limits
- Input
- .srt
- Output
- .vtt (text/vtt)
- Output name
- The original name with the new extension, for example data.srt becomes data.vtt.
- File size limit
- 25 MB
- Processing
- In your browser. The file is not uploaded.
How to use it
- Choose a .srt file, or switch to Paste text and paste the subtitles directly.
- Select Convert, then download the .vtt file.
Limitations
- SubRip formatting tags such as <b>, <i>, and font colour are passed through as written. WebVTT supports some of them and ignores others.
- Positioning and alignment are not added; every cue uses the player's default placement.
- Cues are renumbered sequentially, so custom identifiers are not preserved.
- A cue that ends before it starts stops the conversion rather than producing a file a player would reject.
- The file is read as UTF-8. A subtitle file saved in a legacy encoding will show damaged accented characters.
Frequently asked questions
- Is my file uploaded?
- No. The conversion runs entirely in your browser. The file never leaves your device and no request carrying its contents is made.
- What actually changes?
- A WEBVTT header is added, the comma before the milliseconds becomes a full stop, and cues are renumbered. The text and timings are untouched.
- Will the timings still line up with my video?
- Yes. Timings are converted exactly, down to the millisecond, and no offset is applied.
- Why was my file rejected?
- Usually a cue with no timing line containing --> , or a timestamp the parser could not read. The error names the cue number so you can find it.