txscribe

Subtitle converter

SubRip, WebVTT and plain text, in any direction. Shift the timing while you're here. It runs in your browser — the file never leaves it, and there's no account.

Result

What it handles

Subtitle files in the wild disagree with the spec in a handful of predictable ways. These are the ones that usually break a converter:

Commas and full stops
SubRip separates milliseconds with a comma, WebVTT with a full stop. Both are read, and each is written the way its own format expects.
Missing hours
WebVTT lets a timestamp start at minutes, and plenty of SubRip files do it too even though they shouldn't. Both are accepted.
Byte-order marks and Windows line endings
Stripped and normalised, rather than turning the first cue into an unreadable block.
Cue settings and styling
Positioning after the arrow, NOTE and STYLE blocks, and inline tags like <b> or <c.classname> are recognised and set aside.
Speaker names
A WebVTT <v Name> tag and a leading “Name:” in SubRip mean the same thing. Names survive the round trip, or you can drop them.
Cue numbering
Renumbered from one on the way out, so a file with gaps or duplicates in its numbering comes back valid.

If a block can't be read, the count is shown rather than quietly dropped. Output that lost four cues out of six hundred still looks completely fine, which is exactly why it needs saying.

Need the subtitles first?

txscribe transcribes audio and video with a timestamp on every word, and exports SubRip and WebVTT directly. Unlike this page, that part runs in the cloud.

See what it does