Free tool · runs in your browser · updated 2026-09-06

SRT to VTT, VTT to SRT, or plain text — without uploading the file.

Drop in a subtitle file or paste its text, pick the output format, press Convert. It reads SRT and WebVTT and writes SRT, WebVTT or plain text with the timestamps stripped. It can shift every cue by a number of seconds when the subtitles run ahead of or behind the audio. And it handles the case most converters get wrong: a bilingual cue whose first line is the original and second line the translation stays two lines, or becomes two separate files, one language each. Nothing is uploaded — the file is read by JavaScript in this tab, converted there, and never sent anywhere. No sign-up, no size limit other than your own memory, no watermark on the output.

SRT or WebVTT. Paste it, or choose a file — either way it stays in this tab.

 

The file is read in this tab with the browser's own FileReader. It is not uploaded, not stored, and not logged.

Bilingual cues: keep both lines, or split them apart

Captions from a meeting, a lecture or a conference talk are often bilingual: the original on the first line, the translation on the second. That shape is fragile. Converters that treat a cue as “one string” flatten the two lines into one run-on line, and some drop everything after the first newline entirely — you get a file that looks converted and has lost half its content.

This one keeps the line structure as it found it. Beyond that, the Cue lines selector does something no other converter on the first page of results offers: Line 1 only writes the original as a monolingual file, Line 2 only writes the translation as its own file with the same timings. One bilingual archive becomes two clean deliverables — one for the video platform, one for the person who only reads the translation.

Cues where the chosen line is empty are dropped rather than written as blanks, and SRT numbering is regenerated for what remains, so the output is a valid file rather than a file with holes in it.

When the subtitles and the audio disagree

A constant offset is the common case: someone trimmed three seconds off the front of the recording, or the captioner started late. Type the offset in seconds — negative to pull the subtitles earlier, positive to push them later — and every timestamp moves in one pass together with the format conversion.

Drift, where the gap grows through the file, is a different problem and this page does not solve it; that needs re-timing against the audio, not arithmetic.

What it will not do

No translation. No transcription from audio. No ASS or SSA styling, no burning subtitles into a video, no cloud queue to wait in. It reads SRT and WebVTT, and WebVTT styling blocks and cue settings after the timestamp are ignored rather than carried over.

If what you need is the transcript in the first place — a meeting turned into bilingual captions as it happens, then saved — that is a different kind of tool: Voice Translator (formerly Meeting Translator) captions English meetings on a Mac and keeps the bilingual archive this page is happy to convert. Its measured latency is on the first-party data page.

Questions people actually ask

What is the difference between SRT and VTT?+

Both are plain-text subtitle files with the same idea: a start time, an end time, and the lines to show. SRT numbers every cue and separates the milliseconds with a comma (00:00:01,000). WebVTT starts the file with the word WEBVTT, uses a period for the milliseconds (00:00:01.000), needs no numbering and is the format HTML5 video accepts natively. Converting between them is mostly punctuation, which is why this can happen in your browser.

Does the file get uploaded to a server?+

No. Choosing a file hands it to the browser's FileReader, which reads it locally; the conversion is JavaScript running in this tab. Nothing is sent, nothing is stored, and closing the tab leaves nothing behind. That matters more than usual for subtitles, because a meeting transcript is often the most confidential file a person owns.

Can it translate the subtitles?+

No, and it will not pretend to. This page converts formats and moves timestamps. If your file is already bilingual — original on the first line, translation on the second — it keeps both lines, and “Line 2 only” writes out just the translation as its own file. Files like that come out of a live captioner such as Voice Translator; they do not come out of this page.

My subtitles run two seconds behind the video. Can I fix that here?+

Yes. Put -2 in the shift box and convert; every start and end time moves back two seconds, and anything that would land before zero is clamped to zero. Use a positive number when the subtitles run early. Shift and format conversion happen in one pass, so you do not have to convert twice.

Related: how long a script takes to say · how fast live captions actually arrive · about Voice Translator