Subtitle text workflow

Convert subtitle timing while making WebVTT loss explicit

A fixed delay and progressive drift are different problems. A constant timestamp shift fixes only the first.

Content updated: · Maintainer and corrections

Use the correct timestamp syntax

SRT uses hours:minutes:seconds,milliseconds and a numeric cue index. WebVTT begins with WEBVTT, uses a period before milliseconds and permits minute:second timestamps. The workbench requires exactly three millisecond digits, minute/second values 00–59 and end strictly later than start.

Input is UTF-8 text up to 1 MiB and 2,000 cues. Times are bounded to 99:59:59.999. Output uses UTF-8 and CRLF, with 50 cues per visible table page and the complete result available for copy and download.

Shift atomically and preserve order

Positive milliseconds delay every cue; negative milliseconds advance it. If any shifted start becomes negative or any time exceeds the limit, the whole conversion is rejected. Clamping to zero would change durations and hide a bad offset.

Source order and overlapping intervals are retained with warnings. The workbench does not reorder, merge or delete cues. Test the resulting track in its intended player because ordering and overlaps can affect display.

Consent to metadata loss before SRT export

WebVTT cue identifiers and settings are retained when writing WebVTT. SRT cannot represent them under this contract, so conversion stops until you explicitly agree to remove them. STYLE, REGION and NOTE blocks and extra header metadata are rejected rather than silently dropped.

Cue payload remains literal text, including markup and trailing spaces. NUL and unpaired surrogates are rejected. A payload line containing --> is rejected whenever either format is WebVTT, whose cue grammar forbids that sequence. The page never renders it as HTML. SRT and WebVTT players interpret markup differently; preserving text does not promise identical styling or rendering in a target player.

Keep the source and verify the real player

No audio or video is loaded. The workbench does not transcribe, translate, repair encoding or correct frame-rate drift. Its timeline visualizes intervals; it cannot prove synchronization with media it has never played.

Input and output stay in page memory without uploads, storage, URL data or input analytics. Editing invalidates old exports. Keep the source and review the complete downloaded file. Static source snapshot: 2026-10-09.

Data provenance

Sources