Convert SRT to VTT Online Free, No Upload

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.

Open the converter

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.

FeatureSRTWebVTTASS / SSA
Opening lineA cue numberWEBVTT[Script Info]
Timecode decimal separatorComma, 00:00:01,000Period, 00:00:01.000Period with centiseconds, 0:00:01.00
Cue numberingRequired, sequentialOptional identifierNot used, event lines instead
StylingBold, italic, underline tagsBold, italic, underline plus voice and class spansOverride tags in braces, fonts, karaoke, positioning
Typical useDesktop players, editingWeb video track elementsStyled 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.

  1. 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.
  2. 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.
  3. Choose VTT as the output. Pick VTT from the format options, with SRT and ASS as the other two targets.
  4. 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.
  5. 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.

Open the tool

Frequently asked questions

Yes. The conversion runs entirely in your browser, so the subtitle file is read from your disk into the page and never sent to a server. There is no upload step, no account and no fee, and the tool is a single HTML page with zero external libraries, so nothing else is contacted while it works. The format detection, the timecode parsing and the output writing are ordinary JavaScript string operations. That matters when the subtitles describe an unreleased video, a client recording or a private interview, because the file never leaves your machine. You can confirm it with the developer tools: open the Network panel, then convert a file and watch that no request carries its contents. An upload based converter cannot make that claim, because the file has to reach their servers before any work begins.
Both formats hold the same idea, a start time, an end time and the text of each cue, but the wrapper around that data differs in three ways. SRT uses a comma before the milliseconds, as in 00:00:01,000, while WebVTT uses a period, as in 00:00:01.000. Every VTT file must begin with the line WEBVTT, and that header is what tells a browser it is looking at WebVTT. Cue identifiers are optional in VTT, so a cue can carry a name or a number, and the converter writes sequential numbers the way SRT does. VTT also supports positioning and cue settings after the timestamp, plus inline markup such as a voice span for the speaker name and class spans for styling, which SRT does not define. When you convert SRT to VTT, the times and the text are kept and the wrapper is rewritten.
Use the time offset field. Enter a value in seconds and it is added to the start and the end of every cue, so the whole track moves together. If the subtitles appear too late, use a negative value such as -1.5 to pull them one and a half seconds earlier; if they appear too early, use a positive value such as 2 to push them two seconds later. This repairs a constant drift, which is the usual cause of a mismatch, for example subtitles timed against a different release, a disc rip or a dubbed audio track. Any cue that would start before zero is clamped to zero, so the first lines do not disappear off the front of the timeline. The offset shifts everything by the same amount and does not adjust individual cues.
Yes. The converter detects the source format and offers SRT, VTT and ASS as targets, so the same page converts in both directions. Drop or paste a WebVTT file and the header tells the parser it is VTT; choose SRT and the output uses sequential numbers and commas before the milliseconds, the two things a player such as VLC expects. The VTT specific parts are removed on the way out: voice spans, class spans and standalone timestamp tags inside the text are stripped, while general formatting tags for bold, italic and underline are kept. Line breaks inside a cue survive. You can also convert ASS or SSA to SRT, which gives clean text without the styling and positioning tags that ASS carries. Every conversion keeps the entry count visible, so a format that parsed badly is easy to spot before you download.
No. When an ASS or SSA file is read, only three things are taken from each Dialogue line: the start time, the end time and the text. The override tags inside curly braces are deleted, so karaoke timings, drawing commands, positioning and colour changes do not survive, and the separate style section of the file is ignored. Line break codes are translated into real line breaks, and a non breaking space code becomes a normal space. When the target is ASS, the tool writes its own header with a single style named Default, using Arial at size 20 with a black outline and bottom centre alignment. That output is valid and plays everywhere, but it is a plain conversion, not a restoration of the original look, so keep the styled file if you need the design back.
No. Those formats, and the VobSub pair of SUB and IDX in particular, store pictures of the text rather than the characters themselves, so there is nothing for a text converter to read or rewrite. Handling them would need optical character recognition plus a timing model, which is a different tool. The Subtitle Converter works on text based formats only: SRT, WebVTT, ASS and SSA. If your source is an image based subtitle track, the practical path is to run the video through an OCR step that produces SRT, then convert that SRT to VTT here. It is also worth knowing that turning text subtitles into images is not supported either. The converter reads only the four text formats, and anything else fails with a message rather than a silent, empty result. That check is worth doing before you build a workflow on a file of unknown origin.

Convert your SRT file to VTT

Free, private and unlimited. No account and no upload.

Open Subtitle Converter