SRT and VTT, either way round
Convert between SubRip and WebVTT — and fix the timing while you are there. The two formats look alike and are not, which is why a renamed file is rejected. Your subtitles are parsed on this device and never uploaded.
The subtitles you have
Drop a file, or paste them straight in.
Drop an .srt or .vtt file, or click to choose
…or just paste the subtitles belowWhat to write, and what to mend
A shift moves every cue by the same amount; a frame-rate fix rescales them.
What comes out
Copy it, or download it with the right extension on the end.
SRT and VTT — what actually differs
Both formats are plain text listing cues with a start time, an end time and some words. The differences are small but they matter to players: SubRip separates seconds from milliseconds with a comma (00:00:01,500) and numbers each cue; WebVTT uses a full stop (00:00:01.500), starts the file with a WEBVTT header, and allows positioning settings and comment blocks. WebVTT is the format HTML5 video expects; SRT is what most desktop players and upload forms want.
This converter reads either one, keeps your text exactly as written — including non-English characters — and writes out the other. Cue positioning settings and comments in a VTT file are dropped, because SRT has nowhere to put them. Everything happens in your browser: the file is read into memory, converted and handed back, and nothing is sent anywhere.
Fixing timing at the same time
If your subtitles run early or late against the video, enter a shift in seconds — negative moves them earlier. If they drift steadily further out of sync, that's usually a frame-rate mismatch rather than an offset, and the frame-rate presets rescale every timestamp to compensate. "Fix overlaps" nudges any cue that runs into the next one so players don't show two lines at once.
Getting a player to find the file
Converting the subtitles is usually only half the job; the other half is naming them so the player loads them without being asked. The near-universal convention for a sidecar file is to match the video's filename exactly and change only the extension, keeping both in the same folder: holiday.mp4 alongside holiday.srt.
Where there is more than one language, a code goes between the name and the extension — holiday.en.srt, holiday.fr.srt — using the two-letter ISO codes, which most players use to populate the subtitle menu. Getting the base name wrong by a single character, including a trailing space, is the usual reason a correctly converted file appears not to exist.
A browser needs the track declared
In a web page nothing is discovered by filename. A WebVTT file is attached with a <track> element inside the <video>, carrying the source, a kind, a srclang and a label for the menu — and it must be WebVTT, because browsers do not read SubRip at all. That is the single most common reason to convert in this direction.
Two things then catch people out. Subtitle files are subject to the same cross-origin rules as other resources, so a VTT served from a different domain than the page needs the appropriate header or the track silently fails to load. And when the video is played from a file:// path during testing, many browsers refuse to load the track at all — which looks exactly like a broken file and is fixed by serving the page over HTTP.