Subtitle timing correction
Text tools
Loading
Loading tool
The tool is loaded only when you open it.
All processing for this tool happens in your browser. Your input is not sent to a server.
About this tool
Apply a signed millisecond offset or a two-anchor linear correction to the supported SRT/WebVTT subset. Preserve literal multiline payloads and preview before/after timings. No playback, speech matching, frame-rate detection or automatic alignment.
Common uses
- Shift a uniformly early or late subtitle without changing its text.
- Correct linear drift with two measured matching events and inspect rounded/extrapolated endpoints.
How to use it
- 1.Paste a supported subtitle or select one strict UTF-8 file; select the source and SRT/WebVTT output format.
- 2.Enter a signed whole-millisecond offset, or source/desired A and B anchor times in whole milliseconds. Inspect the formula, extrapolation and default negative-time rejection.
- 3.Correct timings, compare before/after previews and counts, and acknowledge timing/format changes before full export. Any collapsed cue blocks the entire file.
Exact timing examples
+500 milliseconds, same overlap
1 00:00:01,001 --> 00:00:03,999 Hello World 2 00:00:02,000 --> 00:00:04,000 Overlap
1 00:00:01,501 --> 00:00:04,499 Hello World 2 00:00:02,500 --> 00:00:04,500 Overlap
Offset +500 ms; two cues, one overlap, no rounding or clamping.
Two anchors and millisecond rounding
1 00:00:01,001 --> 00:00:03,999 Hello World 2 00:00:02,000 --> 00:00:04,000 Overlap
1 00:00:01,502 --> 00:00:04,503 Hello World 2 00:00:02,502 --> 00:00:04,504 Overlap
Source A=0, desired A=500, source B=60000, desired B=60560 ms: t × 1001/1000 +500; two rounded endpoints.
Limits and notes
- Reuses the bounded subtitle converter: strict UTF-8, one leading BOM, LF/CRLF/CR normalization; SRT HH:MM:SS,mmm or WEBVTT with blank header separator and MM:SS.mmm/HH:MM:SS.mmm. Empty or SPACE/TAB-only lines separate cues. Literal multiline payloads remain unchanged. Header/NOTE/STYLE/REGION metadata and timing settings are reported then omitted; all IDs/numbers regenerated. VTT stably sorts starts; SRT retains input order. Any malformed cue rejects the whole file. No complete dialect validator or media rendering.
- Single file ≤1 MiB; input ≤500000 UTF-16 units and 20000 lines; ≤2000 cues, ≤4000 units per cue; output ≤500000 UTF-16 units,2 MiB and 20000 lines. Times 00:00:00.000–99:59:59.999, exactly 3 millisecond digits, end > start. File read deadline15 seconds; bounded synchronous conversion, not a worker or whole-process memory guarantee.
- Enter canonical whole milliseconds: no whitespace, decimals, exponents or leading zeroes. Offset may use ASCII + or -; anchors are unsigned, 0–359999999. Both B values must exceed A. Formula: desiredA + (time − sourceA) × (desiredB − desiredA)/(sourceB − sourceA). Exact rational arithmetic, nearest millisecond, half ties away from zero. Negative exact times are rejected before rounding unless explicitly clamped. Upper overflow or any end ≤ start rejects the whole file, including after clamping. Anchors extrapolate outside their range; review the count and every timing change.
- Process locally without upload or persistence. Subtitle downloads contain complete text. JSON summaries contain correction parameters, timing statistics and diagnostics, but omit text, filenames, cue IDs and source metadata; those timing parameters may still identify your workflow.
Frequently asked questions
Are negative cues silently deleted?
A cue ends at or before its start after correction/rounding/clamping. The whole file is rejected; no cue is dropped. A mapped time is negative. The whole file is rejected; revise the offset/anchors or explicitly choose clamping.
Does the tool find matching events automatically?
Apply a signed millisecond offset or a two-anchor linear correction to the supported SRT/WebVTT subset. Preserve literal multiline payloads and preview before/after timings. No playback, speech matching, frame-rate detection or automatic alignment. Enter canonical whole milliseconds: no whitespace, decimals, exponents or leading zeroes. Offset may use ASCII + or -; anchors are unsigned, 0–359999999. Both B values must exceed A. Formula: desiredA + (time − sourceA) × (desiredB − desiredA)/(sourceB − sourceA). Exact rational arithmetic, nearest millisecond, half ties away from zero. Negative exact times are rejected before rounding unless explicitly clamped. Upper overflow or any end ≤ start rejects the whole file, including after clamping. Anchors extrapolate outside their range; review the count and every timing change.