Drop subtitle files here
SRT, VTT, ASS/SSA, SBV, LRC — or click to browse
Convert, retime and repair subtitle files — SRT ↔ VTT ↔ ASS ↔ SBV, locally.
Your files never leave your browser — all processing is local.
Drop subtitle files here
SRT, VTT, ASS/SSA, SBV, LRC — or click to browse
This subtitle converter parses SRT, VTT, ASS/SSA and SBV files into a common cue model and writes them back out in whichever format you need — including a plain-text export. Drop one file or a whole batch (batches download as a zip), or just paste subtitle text straight in. Everything runs in your browser: your subtitle files are never uploaded.
It is built for the problems that actually break subtitles. Garbled characters from legacy encodings are the big one: files saved as BIG5, GBK or Shift-JIS are auto-detected, previewed live so you can see the fix, and can be switched manually if the guess is wrong. A timing-shift control moves every cue forward or back to rescue out-of-sync subtitles, and an FPS retime (23.976 ↔ 25 ↔ 29.97) fixes the steady drift that appears when a video was converted between frame rates.
A built-in table editor lets you correct text and timestamps cue by cue, with live validation that flags overlapping cues and negative durations. Cleanup options strip HTML tags, remove hearing-impaired annotations like [music], and merge cues that flash by too quickly. When a conversion would lose information — ASS styling and positioning don't survive a trip to SRT — the tool lists exactly what will be dropped before you convert.
Beyond single-file conversion, it merges two tracks into a bilingual pair: load an English and a Chinese file (for example) and it stacks them into one track, pairing cues by time overlap and letting lines that don't match up pass through on their own. A video-preview mode plays a local video with the current cues rendered over it, so you can check a timing shift or FPS retime against the actual footage before exporting. LRC lyrics files are supported for import and export too — bear in mind LRC keeps only start times, so end times are dropped on the way out.
No. Parsing, conversion, encoding repair and the editor all run in your browser — files never leave your device. Batch conversions are zipped locally too.
Garbled text usually means the file isn't UTF-8 — older Chinese subtitles are commonly BIG5 or GBK, Japanese ones Shift-JIS. The tool detects the likely encoding, shows a live preview of the decoded text, and lets you switch encodings manually until the preview reads correctly. Exported files are always clean UTF-8.
Steady drift (fine at the start, seconds off by the end) is a frame-rate mismatch: the subtitles were timed for a different fps than your video, typically 23.976 vs 25. Use the FPS retime option to rescale every timestamp. A constant offset (equally wrong everywhere) is fixed with the shift control instead.
SRT has no styling or positioning, so ASS features like fonts, colors, karaoke effects and screen placement are dropped — only the text and timing survive. The converter lists the specific features found in your file before you commit, so nothing disappears silently.
SRT, WebVTT (.vtt), ASS/SSA, YouTube's SBV and LRC lyrics, in any direction, plus plain-text export for transcripts. Batch conversion handles mixed input formats in one go.
Yes. Load both files, choose which is primary (the top line) and which is secondary, and the merge pairs cues that overlap in time into a single dual-language track. Cues with no counterpart in the other file pass through unchanged, so mismatched timing never silently drops a line.
Load a local video file and the current cues — including any shift, FPS retime or manual edit — are rendered over it as live captions. The video plays from your device only and is never uploaded; it's there purely so you can confirm the timing lines up with the picture.
Yes, for both import and export. LRC stores only a start time per line, so exporting to LRC drops each cue's end time (every line shows until the next begins) and flattens multi-line cues onto one line — the converter flags this before you export.