Subtitle Converter

SRT, VTT, ASS and SBV — plus timing shift and encoding repair.

Drop a subtitle file here or click to choose — .srt, .vtt, .ass, .ssa, .sbv, .lrc, .txt
…or paste the subtitle text instead

The subtitle formats, and which one you need

SRT is the universal one. Plain text, a numbered block per line of dialogue, understood by every player, every TV and every upload form. If you are unsure what to convert to, convert to SRT.

WebVTT is what HTML5 <video> requires — a browser will silently ignore an SRT file passed to a <track> element. It is nearly identical to SRT with three differences: a WEBVTT header line, a full stop instead of a comma before the milliseconds, and optional positioning settings after the timestamp.

ASS/SSA is the styling format, standard for anime fansubs and karaoke. It carries fonts, colours, outlines, positioning and animation. Converting ASS to SRT necessarily throws all of that away and keeps only the text and timings — that loss is inherent to SRT, not a limitation here.

SBV is YouTube's own format, occasionally still handed out by its caption editor. LRC is the lyrics format used by music players, with a single timestamp per line and no end time.

Fixing garbled Chinese, Japanese and Korean subtitles

If a subtitle file opens as ä½ å¥½ or a wall of question marks, the file is not broken — it is simply not UTF-8. Chinese subtitles circulated for years in GBK, traditional ones in Big5, Japanese in Shift_JIS, and none of those carry any marker saying so. Software that assumes UTF-8 produces mojibake.

This converter reads the raw bytes and tries the plausible encodings, scoring each result by how many characters land in ranges that real text actually uses. It tells you which encoding it picked, and you can override it from the dropdown if the guess is wrong. Output is always UTF-8, which every current player handles — tick Add UTF-8 BOM only if an older Windows player still refuses.

Fixing subtitles that are out of sync

There are two distinct problems, and they need different fixes:

  • A constant offset — subtitles are consistently two seconds early from beginning to end, usually because the release has a different intro length. Fix it with Shift all timings. Find a line of dialogue, note how far off it is, and enter that as a positive or negative number.
  • Growing drift — in sync at the start, seconds off by the end. This is a frame-rate mismatch, almost always between a 25 fps PAL release and a 23.976 fps original. No amount of shifting fixes it; use the frame rate pair, which rescales every timestamp proportionally.

If it is drifting and offset, convert the frame rate first, then shift.

How to use it

  1. Drop in a subtitle file, or paste the text. The format and encoding are detected automatically.
  2. Choose the output format.
  3. Adjust the timing if it is out of sync, and check the quality warnings.
  4. Copy the result or download it with the right file extension.

Frequently asked questions

Is my subtitle file uploaded anywhere?

No. The file is read locally with the browser's FileReader and everything — decoding, parsing, converting — happens in this page. Nothing is transmitted, so unreleased translations and client work are safe.

Will converting ASS to SRT lose the styling?

Yes, and unavoidably so — SRT has no concept of fonts, colours or positioning. Italic, bold and underline are carried across as <i>, <b> and <u> tags, which most players honour. Everything else, including karaoke timing and signs, is dropped. Keep the ASS file if you might need it back.

What is the chars-per-second warning?

Reading speed. Professional subtitling generally keeps a line under about 20 characters per second for adult programming; beyond that most viewers cannot finish reading before the line disappears. A high peak usually means one cue is far too short for its text, and the fix is to split it or extend it.

Why does my SRT not work in an HTML5 video player?

Because <track> only accepts WebVTT. Convert to VTT and serve it with the text/vtt MIME type — and if the file is on a different domain from the page, the video element also needs CORS headers and a crossorigin attribute.

Can it convert to SUB or IDX?

No. VobSub (.sub/.idx) and PGS (.sup) store subtitles as images, not text, so extracting them requires optical character recognition rather than a format conversion. Every format handled here is text-based.

Does it handle files with thousands of lines?

Yes. A full feature-length film runs to around 1,500 cues and converts instantly. The preview table shows the first 100 rows to keep the page responsive, but the downloaded file always contains everything.