tooloora

Subtitle converter: SRT to VTT and back

Convert between SubRip and WebVTT, shift the timing by seconds, repair garbled umlauts and check reading speed — all in your browser.

Runs locally — nothing is uploaded

Target format

Negative values show the subtitles earlier, positive ones later. Times below zero are clamped to the start of the file.

Everything runs in your browser – no upload, no storage.

Subtitle converter: SRT to VTT and back

Paste subtitles or load a file, pick the target format, done. The tool recognises SubRip and WebVTT on its own, rewrites the timestamps, shifts the timing by seconds if you need it, repairs garbled umlauts and shows an analysis of reading speed, overlaps and cues that are too short. Everything runs in your browser — no upload, no sign-up.

What is the difference between SRT and WebVTT?

SubRip (.srt) comes from a Windows program of the early 2000s and never received a formal specification. A cue consists of a running number, a timing line with a comma before the milliseconds, and one or more lines of text.

WebVTT (.vtt) is the W3C standard for the HTML <track> element, so it is the format a video loads in the browser. It starts with the WEBVTT line, uses a full stop before the milliseconds, and knows things SRT does not: comments (NOTE), styles (STYLE), regions (REGION), cue identifiers and positioning settings after the timestamp.

1                              WEBVTT
00:00:01,000 --> 00:00:03,500
Good morning.                  00:00:01.000 --> 00:00:03.500
                               Good morning.

What is dropped when converting VTT to SRT?

Everything SRT has no equivalent for:

  • NOTE comments, STYLE and REGION blocks
  • cue identifiers in front of the timing line
  • positioning settings such as align:start position:10%
  • WebVTT-only markup such as <v Speaker> or <c.yellow>, and karaoke timestamps

What stays is the simple formatting SRT players understand: <b>, <i>, <u> and <font>. The tool counts every removed part and lists it below the output, so you can decide yourself whether the loss matters for your purpose.

How does the encoding repair work?

When a UTF-8 file is read as Latin-1 or Windows-1252, the familiar pattern appears: ä turns into ä, ß into ß, an en dash into –. The tool maps every character back to its original byte and decodes the byte sequence strictly as UTF-8.

The result is kept only when three conditions hold: every character maps unambiguously to a byte, the decoding succeeds without a single invalid byte, and fewer suspicious spots remain afterwards than before. If one condition fails, your text stays untouched. Better no repair than a wrong one.

What does the reading speed tell you?

The analysis measures characters per second per cue, markup excluded. The reference is the Netflix Timed Text Style Guide, which specifies 17 characters per second for German adult programmes (20 for English, 13 for children's content) and a minimum duration of 5/6 of a second, roughly 833 milliseconds. Cues above that are hard to read along with; cues below it barely flash up.

The tool also counts overlaps — cues whose end lies past the start of the next one. They are the most common reason a player swallows lines.

Shifting the timing

If sound and subtitles drift apart, an even shift helps: negative values show the subtitles earlier, positive ones later, decimals are allowed (-1.5). Times below zero are clamped to the start of the file, and the tool says how often that happened. An uneven drift — start fits, end wanders — comes from differing frame rates and cannot be fixed with a constant shift.

Honest limits

SRT and WebVTT are supported. Not included are ASS/SSA (with styles and positioning), TTML/DFXP and subtitle tracks inside video containers, which would have to be extracted from the video first. Line endings are normalised on the way in (CRLF and BOM disappear); for the output you can switch CRLF back on if your target program insists on it.

Frequently asked questions

Is my subtitle file uploaded?

No. Parsing, shifting and writing happen in your browser, and the page works offline once loaded. Subtitle files often belong to unreleased material under embargo, which is a good reason not to hand them to a server you do not control.

What is the actual difference between SRT and WebVTT?

SubRip (.srt) numbers every cue and separates seconds and milliseconds with a comma. WebVTT (.vtt) is the format the HTML video element loads through a track element, standardised by the W3C: it starts with the WEBVTT line, uses a full stop for milliseconds and additionally knows comments, styles, regions, cue identifiers and positioning. Converting from VTT to SRT therefore always means dropping the extras.

What exactly gets removed when converting VTT to SRT?

NOTE comments, STYLE and REGION blocks, cue identifiers, positioning settings after the timestamp and WebVTT-only inline tags such as voice or class spans. Basic formatting that SRT players understand — bold, italic, underline, font — stays. The tool counts every removed part and lists it, so you can decide whether the loss matters.

How does the encoding repair work and can it break my text?

Text that was written as UTF-8 but read as Latin-1 or Windows-1252 shows the classic pattern of a capital A with tilde in front of every umlaut. The tool maps each character back to its byte and decodes the result strictly as UTF-8. It keeps the repaired version only if the decoding succeeds without a single invalid byte and fewer suspicious spots remain than before — otherwise your text stays exactly as it was.

What does the reading speed check tell me?

It measures characters per second per cue, excluding markup. The Netflix Timed Text Style Guide gives 17 characters per second for German adult programmes (20 for English) and a minimum duration of five sixths of a second. Cues above the limit are counted, together with overlaps and cues that are too short, so you can spot timing problems before a player does.