Subtitle splicer & cleaner
Parse SRT/WebVTT timecodes, sort by time, de-duplicate, drop repeated lines and merge adjacent cues with a small gap, then export clean SRT or VTT. Local only.
Runs in your browserEvery computation happens in your browser — your data never leaves this device.
Handles SRT (comma milliseconds, index lines) and WebVTT (WEBVTT header, dot milliseconds, cue settings, NOTE comments).
Splice options
Spliced subtitles
Spliced, time-sorted subtitle text you can save as .srt / .vtt.
1 00:00:01,000 --> 00:00:07,000 你好,世界 第二句台词
3 → 1 cues · merged 2 · duplicates 0 · removed repeated lines 1 · overlaps 0 · max gap 0 ms · range 00:00:01,000–00:00:07,000
What this tool does
- Clean subtitles exported from players or tools: sort out-of-order cues and drop identical duplicates
- Merge adjacent cues with a tiny gap (split sentences, rolling captions) into readable blocks
Example
Input
1 00:00:01,000 --> 00:00:03,000 你好,世界 2 00:00:03,180 --> 00:00:05,000 你好,世界 3 00:00:05,200 --> 00:00:07,000 第二句台词
Output
1 00:00:01,000 --> 00:00:07,000 你好,世界 第二句台词
Real output with merging (300 ms) and repeated-line removal enabled: three cues become one, and the duplicate line is kept once.
Frequently asked questions
Which formats and timecode granularities are supported?
SRT and WebVTT. SRT uses `00:00:01,000 --> 00:00:03,000` with comma milliseconds and optional index lines; WebVTT uses dot milliseconds and may include a WEBVTT header, NOTE/STYLE blocks and cue settings such as align:start position:10%, which are ignored. Hours may be omitted (`01:00.000`) and milliseconds accept 1–3 digits. ASS/SSA, LRC and other formats are not parsed.
How does merging decide, and can it glue unrelated lines together?
After sorting by start time only neighbouring cues are compared: a cue merges when its start minus the previous end is less than or equal to the merge gap (300 ms by default). Texts are joined with the separator and timings are unioned. A larger gap merges more aggressively and 0 only merges butted cues; the rule is purely temporal, so lower the gap or disable merging when you need surgical control.
What is the difference between de-duplication and dropping repeated lines?
De-duplication works on whole cues: cues with identical start, end and text collapse into one and the count is reported. Dropping repeated lines works inside a single cue after merging and removes consecutive duplicate lines — rolling captions repeat the same line, and this option compresses it to one.
What are the "overlaps" and "max gap" figures for?
Overlaps count how often a cue ends after the next one starts (common in live captions and dual-language tracks), while max gap is the largest hole between neighbouring cues in milliseconds and hints at a broken timeline. Both are diagnostics only — nothing is rewritten unless you turn merging on. Subtitles never leave your browser.
Keywords:字幕合并字幕拼接SRT解析VTT时间码字幕排序subtitle splicerSRT parserWebVTTmerge subtitles