Ownership and preparation: We own and sell CueKeeper. This guide was prepared with AI assistance from first-party automated runs of fictional SRT fixtures on November 15, 2026. It is not an independent review or a customer result.
A subtitle file can convert successfully and still need review. This checklist shows what the shipped CueKeeper 1.0.0 CLI actually reports, including two timing cases it misses. You can use all five manual checks and read the fictional inputs and selected outputs without buying the toolkit.
A five-check manual pass
- Check the timestamp components and timing-line structure.
- Require each cue's end to be later than its start.
- Check that each timed cue contains dialogue.
- Review overlaps and exact duplicates against the original material.
- Compare the exported text with the source after styling and entity conversion.
Keep an untouched copy of the original subtitle file. These checks concern the supplied text and intervals; important passages still need comparison with the recording. For the clean starting point, see the two-cue before-and-after example. Our clean fixture emitted two cues without reported issues.
1. A malformed timestamp stops this conversion
1
00:00:61,000 --> 00:01:02,000
Fictional malformed timestamp.
The seconds component is 61. In this run the command exited 2, the report status was FAILED, and the error was INVALID_TIMESTAMP at cue 1. No transcript was generated in the new output directory. Check the intended time against your source rather than guessing a correction.
{"status":"FAILED","emitted_cue_count":0,"errors":[{"code":"INVALID_TIMESTAMP","cue_index":1}]}
This display selects a few fields from the published selected report. It omits the error message and other fields; it is not the full unmodified report.
2. A reversed interval is an error; a zero-length interval slips through
1
00:00:02,000 --> 00:00:01,000
Fictional reversed interval.
The reversed-interval run exited 2 with INVALID_INTERVAL at cue 1. For a manual review, require a positive duration: the end should be greater than the start.
1
00:00:01,000 --> 00:00:01,000
Fictional zero-length cue.
The shipped Python toolkit accepts this zero-length cue without a warning: exit 0, COMPLETE, one emitted cue. Inspect the selected report and generated transcript. A completed conversion is not proof that every cue has a useful duration. The free browser preview uses a stricter end-after-start check and rejects this example.
3. A timing range without dialogue is not a reading copy
1
00:00:01,000 --> 00:00:02,000
The empty-dialogue fixture exited 2 with EMPTY_DIALOGUE at cue 1. Check for missing text, accidental cue separators, or a cue that contains only styling. The tool cannot reconstruct missing words.
4. Warnings keep the cues, so review them
1
00:00:01,000 --> 00:00:03,000
<i>Hello</i> & goodbye
2
00:00:02,000 --> 00:00:04,000
Overlap
3
00:00:02,000 --> 00:00:04,000
Overlap
This run exited 0 with COMPLETE and three emitted cues. Its selected report includes UNSUPPORTED_MARKUP, OVERLAP, DUPLICATE_CUE, and another OVERLAP. All three passages remain in the timed export.
An exact duplicate has the same start, end, and cleaned dialogue. A repeated phrase at a different time is not that same test. Overlapping captions may be intentional, such as simultaneous dialogue; check the source before deleting or retiming anything.
Check nonadjacent overlaps yourself
1
00:00:01,000 --> 00:00:10,000
Long fictional cue.
2
00:00:02,000 --> 00:00:03,000
Short fictional cue.
3
00:00:04,000 --> 00:00:05,000
Also inside the first cue.
Cue 3 is still inside cue 1's interval. The Python toolkit compares each cue with only the preceding cue: this run reports an overlap for cues 1 and 2, but does not flag cue 3's nonadjacent overlap with cue 1. Its selected report has one overlap warning and three emitted cues. Review long intervals against all cues inside them; this is not exhaustive overlap detection or automatic repair.
5. Compare the words after formatting changes
The first cue in the warnings fixture contains <i>Hello</i> & goodbye. In the Python toolkit it becomes Hello & goodbye, with an UNSUPPORTED_MARKUP warning. The dialogue-only output retains the words but drops the timestamps and styling. Markdown output also escapes punctuation. Compare the reading copy with the original; a styling transformation is not a spelling, translation, or accuracy check.
The free preview keeps that markup and entity text literally rather than performing the Python toolkit's cleanup. It also groups overlap/out-of-order warnings differently. The preview and the paid Python parser are separate implementations: use it to inspect a short excerpt, not as a promise of an identical full report. This guide's captured CLI fixtures are SRT only and do not establish complete SRT/WebVTT conformance.
Read the evidence or reproduce the CLI runs
The evidence manifest records the archive hash, CPython 3.13.14 runtime, commands, exit statuses, and file hashes for all seven cases. Public report names end in .report.selected.json; batch excerpts are named batch-summary.selected.json. They contain selected deterministic fields, sorted and formatted with LF newlines. Generated transcript text is copied unchanged. Raw output and report hashes are recorded; raw reports and runtime files are not published.
Reproduction needs your own purchased CueKeeper 1.0.0 archive; no paid source or ZIP is republished here. The offline reproduction instructions create a fresh directory outside the repository. After extracting the toolkit manually, this is one of the recorded case commands:
python app.py convert fixtures/invalid-timestamp.srt -o output/invalid-timestamp --dialogue-only
Use the fixture from this guide and the Python launcher for your installation. Exit 2 is the expected result for this invalid example. Python 3.10+ is the toolkit's declared requirement; this run used 3.13.14. No customer subtitles, media recording, time-saving benchmark, payment, sale, or profit was evaluated.
Use the checklist, then decide whether you need the toolkit
Try the free browser excerpt preview with up to 20 cues, or keep using this manual checklist. If local file/batch conversion and reports suit your workflow, buy CueKeeper for a one-time $1.00 USD through PayPal. The product page also offers 1.00 USDC on Base. The full toolkit needs Python 3.10+ and no third-party Python packages. It converts subtitles you already have; it does not transcribe media, translate dialogue, identify speakers, or certify caption accuracy.