You can convert SRT to VTT in your browser without uploading anything. Paste an SRT file into the Subtitle Converter, choose VTT as the output format, and download the result. The converter rewrites the comma decimal separators as periods and adds the WEBVTT header, which is what an HTML5 video player needs.
The tool reads SRT, WebVTT, ASS and SSA, and it writes SRT, VTT or ASS, so the same page also handles VTT to SRT and SRT to ASS. A time offset in seconds shifts every cue at once, which fixes a track that runs early or late by a constant amount, while negative values move the subtitles earlier. Everything runs as plain text handling in the tab, so the file is never sent to a server, there is no account, and unlimited runs cost nothing. Converting to ASS discards the original styling and writes one plain Arial style instead.
A subtitle file is plain text, but the four common formats wrap the same information differently, and a player that accepts one may refuse another. If you are putting captions on a web page you already have the answer: browsers load subtitles through the track element, and that element expects WebVTT, not SRT. This guide explains what actually changes when you convert SRT to VTT, how to shift a track that runs early or late, and where the Subtitle Converter stops.
Subtitle Converter
Drop or paste an SRT, VTT, ASS or SSA file, pick the output format, shift the timing if the track runs early or late, then copy or download the result. All of it runs in the page.
Why a web video needs VTT and not SRT
Desktop players such as VLC and mpv read SRT without complaint, which is why SRT is the format most tools export by default. Browsers are stricter for the track element: if the file is not WebVTT, the player ignores it and shows no captions at all rather than an error message. That one rule is the usual reason people search for an SRT to VTT converter, and it is why the conversion is worth doing properly rather than renaming the file.
What the browser actually loads
A track element points at one subtitle file and declares its language, so a single video can carry several tracks and let the viewer choose. The markup is a single line: a track element with kind set to subtitles, a src that ends in .vtt, srclang set to en and a label such as English. The extension is a convenience rather than the requirement, because what makes the file WebVTT is the WEBVTT line at the top.
The real differences between SRT, VTT and ASS
All three formats store a start time, an end time and the caption text, so the conversion is not about translating dialogue. It is about the wrapper: the header, the punctuation inside the timecode, how a cue is identified and which styling the format allows.
| Feature | SRT | WebVTT | ASS / SSA |
|---|---|---|---|
| Opening line | A cue number | WEBVTT | [Script Info] |
| Timecode decimal separator | Comma, 00:00:01,000 | Period, 00:00:01.000 | Period with centiseconds, 0:00:01.00 |
| Cue numbering | Required, sequential | Optional identifier | Not used, event lines instead |
| Styling | Bold, italic, underline tags | Bold, italic, underline plus voice and class spans | Override tags in braces, fonts, karaoke, positioning |
| Typical use | Desktop players, editing | Web video track elements | Styled releases, fansubs |
Two rows in that table decide whether a simple rename would have worked. WebVTT requires the WEBVTT header line, and it uses a period before the milliseconds where SRT uses a comma, so a renamed SRT file is not valid WebVTT even when it looks nearly right. The third difference is subtler: SRT numbers every cue because the number is part of the structure, while WebVTT treats the identifier as optional, so a VTT file can carry named cues and the converter writes plain sequential numbers instead.
ASS and SSA sit further away. They are section based files with a script header, a style table and event lines, and the text of a cue can contain override commands in braces that change colour, position or karaoke timing from one word to the next. That is why converting from ASS loses more than converting from SRT does.
How to convert SRT to VTT in your browser
The whole job is five short steps, and none of them sends the file anywhere.
- Add your SRT file. Drop the .srt file into the converter or paste the subtitle text into the box. One file at a time, and the text lands in an editable area so you can fix a typo before converting.
- Check the detected format. The tool reads the WEBVTT header, the Script Info section or the file extension and reports what it found, so you can confirm it recognised SRT before going on.
- Choose VTT as the output. Pick VTT from the format options, with SRT and ASS as the other two targets.
- Set a time offset if you need one. Leave it at zero when the timing is fine. Otherwise type a value in seconds, using a minus sign to move the subtitles earlier.
- Convert and download. Press Convert subtitles, check the entry count and the preview, then copy the text or download a .vtt file with the same base name as the original.
The output starts with the WEBVTT line, then a blank line, then the cues with periods before the milliseconds. The file is written as UTF-8 text, which is the encoding WebVTT expects, so accented characters and non Latin scripts survive the trip as long as the source was already UTF-8.
How to shift a subtitle track that runs early or late
A constant offset is the most common subtitle problem. The dialogue is right, but every line sits a fixed distance from where it should be, usually because the subtitles were timed against a different release, a disc rip, a streaming version or a dubbed audio track.
The offset field takes a number of seconds and adds it to the start and the end of every cue, so the shape of the track is preserved and the whole thing slides. A negative value moves the subtitles earlier, for example -1.5 for one and a half seconds, and a positive value moves them later, for example 2 for two seconds. Any cue that would start before zero is clamped to zero, so the first lines do not vanish and the file stays valid.
Constant drift and progressive drift are different problems
An offset fixes a gap that stays the same size from beginning to end. It cannot fix a gap that grows, which usually means the subtitles were timed for a different frame rate, for example 23.976 fps against 25 fps. Stretching a track to a new frame rate is a different operation and this converter does not attempt it, so the honest fix is to find subtitles that match your release.
What the SRT to VTT converter cannot do
The tool is deliberately narrow, and the edges are worth knowing before you plan around it.
- Text subtitles only. It reads SRT, WebVTT, ASS and SSA, and it writes SRT, VTT and ASS. That four in, three out list is the whole of it.
- No image based subtitles. Formats such as SUB and IDX store pictures of the words rather than the characters, so there is no text to parse. Reading them would need optical character recognition, which this tool does not include.
- Styling does not survive a trip through ASS. When an ASS or SSA file is read, override tags, karaoke timings, drawing commands and fonts are dropped, and only the start time, the end time and the text are kept. Writing ASS produces one plain Arial style with a black outline.
- No automatic translation. The converter moves text between containers; it does not change the language of the words.
- No per cue re-sync. The offset applies to the whole track, so you cannot nudge a single line here, and there is no timeline to drag cues on.
- No burning into the video. The output is a subtitle file, not a new video. To place captions permanently inside the picture, use the Add Subtitles tool instead.
- The file is read as UTF-8. A subtitle file saved in an older encoding can look garbled in the box; open it in a text editor, save it as UTF-8, and paste it in again.
Sidecar subtitles or burned in captions
A converted VTT file is a sidecar: a separate file that the player loads alongside the video. That is what you want for a web page, because the captions stay selectable, searchable and editable, and they load only when the viewer asks for them.
When the captions have to be part of the picture
If the destination ignores sidecar files, for example a social platform or a plain video upload that accepts no track, the subtitles have to be burned into the frames. That is a different job with a different tool, and it is handled by Add Subtitles, which draws the text onto the video and exports a new file. Converting formats and burning captions are separate steps, and mixing them up is a common waste of time. The guide to burning subtitles into a video covers the font, colour and position settings and the two costs that catch people out: captions cannot be switched off afterwards, and the video has to be re-encoded.
Add Subtitles
Burn the captions into the video itself when a player or a platform will not read a separate subtitle file.