A fail-closed subtitle QA workflow for safer handoff
Turn one subtitle file into an explicit release decision: reject broken input, stop on temporal contradictions, preserve unsupported coverage as uncertainty, and hand off exact artifacts that another person can hash and verify.
Decision boundaryThe tool does not listen to audio, inspect video frames, judge translation or certify accessibility or platform compliance. It reviews only the supplied SRT/WebVTT bytes, declared media duration and selected local profile.
Editorial and source review: 2026-08-09. This guide contains no advertising.
1. Define the handoff before touching timestamps
Identify the job
Record whether the file is same-language captions or translated subtitles, the source format, the intended player or delivery platform and the accountable reviewer. W3C WAI distinguishes captions from translated subtitles; neither label makes the text accurate by itself.
Bring the missing evidence
Supply the exact media duration when it is known. Keep the audio/video, shot changes, speaker intent and target-player preview available for the human review because this browser parser cannot observe them.
Freeze the input bytes
Use one UTF-8 SRT or WebVTT file, at most 5 MiB and 10,000 cues. Preserve the original file beside the output. Raw bytes and normalized text receive separate SHA-256 values, so BOM or line-ending drift remains visible.
Choose a review profile
Balanced, concise and relaxed profiles are bounded heuristics for duration, gaps, reading speed, line length and line count. They are review policies, not universal accessibility requirements or broadcaster certificates.
2. Use this decision tree
Can the exact file be parsed inside the declared limits? Malformed timestamps, unsafe controls, missing cues, unsupported SRT settings or oversize input are rejected. No result or export is minted.
Does the timeline contradict itself? End-before-start, zero duration, source-order reversal, cue overlap or a cue beyond the declared media duration produces BLOCK.
Is supported coverage complete? Missing media duration, WebVTT STYLE/REGION/cue settings, cue markup, suspicious identifiers or a crossed readability threshold produces INDETERMINATE unless a blocker already exists.
Did only safe normalization occur? A supported file with no blocking or review finding produces PASS. Same-format output may normalize bytes; it does not rewrite dialogue.
Can every exported byte be verified? Compare the displayed hash, downloaded byte hash and Receipt v1. Any mismatch stops the handoff.
3. Treat the verdict as a control, not a quality score
PASS
The supported syntax, declared boundary and selected FastTool profile produced no blocking or review finding. It does not prove word accuracy, audio sync, speaker attribution, visual placement or target-player rendering.
BLOCK
Do not deliver the normalized preview. Repair the temporal contradiction in the source editor, review neighboring cues, then rerun from the changed bytes.
INDETERMINATE
Do not relabel uncertainty as PASS. Inspect the unsupported surface or heuristic flag against the media and the actual delivery specification; record the reviewer decision outside the engine result.
Precedence
BLOCK > INDETERMINATE > PASS. A style or reading-speed review cannot hide an overlap or out-of-media blocker.
4. Correct without losing provenance
Edit in a subtitle-aware editor while watching and listening to the media.
Resolve a blocker with its neighboring cues, not as an isolated timestamp. A gap or overlap change can move the problem downstream.
For readability flags, test segmentation, line breaks and duration against meaning and shot/audio boundaries. Do not delete content only to satisfy a counter.
Rerun the changed file. Input or policy changes invalidate the prior result and lock its downloads.
Keep the failed receipt when it explains why a revision was required; keep only the final exact artifact set in the delivery folder.
Why cross-format conversion is conditional
Same-format normalization is the primary output. An SRT↔WebVTT conversion appears only after the generated file parses and its cue payload, timing and order round-trip. WebVTT IDs, STYLE, REGION, cue settings or other unsupported rendering surfaces can suppress conversion because a superficially valid file could still be lossy.
Wrong approaches that create false confidence
Using PASS as audio-sync proof
The engine has no waveform or frame context. A syntactically tidy cue can still begin on the wrong word or remain across the wrong shot.
Calling one platform rule universal
Netflix and BBC references help reviewers reason about editorial choices; they are not silently imported as universal policy, and FastTool does not certify conformance to either.
Flattening unsupported WebVTT
Removing cue IDs, regions, settings or style merely to obtain a conversion can erase intended semantics. Keep the original and route the file to a target-player review.
Delivering a screenshot
A screenshot cannot prove the analyzed input, exported bytes or review profile. Deliver the files, hashes and receipt together.
Subtitle handoff checklist
Exact source file and its raw-input SHA-256 are retained.
Media duration is declared, or the resulting uncertainty is accepted by an accountable reviewer.
No BLOCK finding remains; every INDETERMINATE finding has a recorded human disposition.
Dialogue, non-speech audio, spelling, speaker labels and synchronization were checked against the real media.
Target player, frame rate, shot changes, safe area, font rendering and language-specific line breaking were visually reviewed.
Only PASS artifacts are treated as deliverable; non-PASS normalized files remain review previews.
Every artifact filename, byte length and SHA-256 matches Receipt v1.
A one-byte mutation or receipt-core edit produces a verification failure before delivery.
W3C WAI: Captions/SubtitlesAccessibility context: synchronized speech and relevant non-speech audio need human-accurate caption content. The engine does not hear or validate that content.
Netflix Timed Text Style Guide: timing guidancePlatform-specific editorial reference; its visible change log includes 4 July 2025. FastTool profiles are not Netflix presets and do not establish Netflix acceptance.
BBC Subtitle GuidelinesBroadcaster editorial reference for human judgment. FastTool neither represents the BBC nor claims BBC compliance.
Privacy, limits and corrections
Subtitle bytes are parsed in the active browser tab. This workflow page does not accept a file. The linked tool states its own local processing boundary; normal static page assets and consented analytics can still make network requests, but raw subtitle text, filenames and hashes are not analytics fields.
Supported scope is UTF-8 SRT and WebVTT text, up to 5 MiB, 10,000 cues, 120,000 lines, 16,384 code points per line and 65,536 code points per cue. There is no OCR, speech recognition, translation review, audio alignment, video/frame inspection, legal advice, WCAG audit or Netflix/BBC certification.
Verify a produced packet with the Receipt Verifier. Report a material error to corrections@fasttool.app with this URL, the fixture or artifact hash, observed result and a reproducible correction.