← Open the tool
# Cue Delivery Desk 1.0.0

Local subtitle delivery checks for SRT and basic WebVTT. Check a batch, review reading-speed and timing issues, deliberately apply shared timing transforms, and produce a delivery ZIP with a change log. Source included. No paid software or account required.

## Quick start
1. Extract the whole ZIP and open index.html in current desktop Chrome or Edge.
2. Click Load subtitle examples. The first synthetic example has an overlap and reading-speed warnings; the second is clean under the default rules.
3. Select UTF-8 .srt/.vtt files, or paste one file. Choose your review thresholds and run the check.
4. Inspect the queue and issue table; download CSV/JSON audit reports.
5. Full edition: use Timing & delivery options if necessary. Run the check again, review the change log in JSON, and download Delivery ZIP after errors are resolved. Warnings can remain; human review is necessary.

## What is checked
Invalid duration, empty visible text, source cue ordering, overlapping intervals (including nested intervals), minimum gaps, approximate characters per second, maximum characters per line, line count, duration and consecutive repeated text. Reading speed counts Unicode code points and spaces, excluding line breaks and recognized tags; it is an estimate, not language-aware reading ability. Grapheme clusters may contain several code points. Timing correctness against speech and translation quality are not checked.

Default rules are editable review heuristics: 20 characters/s, 42 characters/line, two lines, 700–7000 ms duration, 80 ms minimum gap. They are not a Netflix, BBC, broadcaster, legal or accessibility certification.

## Timing transforms
New time = old time × scale + offset, rounded to milliseconds. Offset is in milliseconds. Use two anchor pairs (entered in seconds) to calculate a linear drift correction from known subtitle/video correspondences. There is no automatic audio synchronization or scene-cut detection. Apply per batch only when the same transform is appropriate to every file.

Sort reorders by start time. Optional overlap repair shortens earlier cues to the next start minus the chosen minimum gap. It refuses to create a cue shorter than 100 ms, and refuses out-of-order input unless sorted first. A repair can make text too fast; audit warnings show this. Negative times and nonpositive durations are rejected; nothing is silently clamped or dropped. Originals remain unchanged.

With no transform selected, invalid original durations still appear in the audit. Delivery ZIP is blocked by errors or export failures. Audit reports remain available. Changing settings invalidates previous exports until a new check runs.

## Formats and data preservation
UTF-8 with optional BOM; CRLF/CR/LF line endings. Maximum 50 files, 5 MB per file, 25 MB total, 20,000 cues per file. Free Lite checks one file at a time and exports audit reports; it does not perform timing transforms or build delivery ZIPs.

SRT numeric identifiers are accepted and output is renumbered sequentially. Basic WebVTT supports cue IDs, timing settings, NOTE blocks and a one-line WEBVTT header. WebVTT output preserves these (NOTE blocks are collected before cues). STYLE/REGION blocks and multiline header metadata are rejected explicitly. SRT coordinate extensions are rejected. Inline markup is retained for same-format export, not rendered as HTML in the interface. This is not a general ASS/SSA, TTML, SCC, STL or professional caption-format converter.

Conversion to SRT blocks when supported WebVTT-only metadata/markup would be lost, unless you explicitly allow plain-text conversion. That option discards notes, cue settings and markup. Always inspect the converted output. Output timing strings are canonical and line endings normalize to LF.

Delivery ZIP has numbered sanitized filenames, so original duplicate basenames do not overwrite one another. It includes transformed subtitle text, audit.json and issues.csv. The manifest records output-to-input filenames, options, issues and timing change operations. It does not embed the original subtitle file. Keep originals yourself. The tool never writes over an input.

## Privacy and troubleshooting
No network requests or analytics. Data is held in the browser tab and cleared by refresh. Exported reports contain subtitle text. CSV formula-like prefixes receive a leading apostrophe for safer spreadsheet viewing; JSON retains text exactly. A parser error identifies the file and approximate cue block. Export UTF-8 rather than legacy ANSI. Use a full subtitle editor for unsupported styling or professional caption formats. If a transform fails, reduce the offset, correct the source or process files individually.

For reproducible issues use the marketplace support channel when available with an anonymized minimal sample, version, browser and expected behavior. No guaranteed response time or future updates are promised. Core tests run with free Node.js: `node --test test.cjs`.

## License and version
One operator per paid license; source may be modified for internal use, not redistributed or resold. See LICENSE.txt. Version 1.0.0 is the initial release. Core tested on Windows/Node; browser verification recorded in portfolio QA. Other operating systems are not claimed tested.