Research · Technical note v1.0 · Published 2026-10-27
Subtitle Repair Benchmark: 11,597 injected defects, scored
A reproducible benchmark of the subtitle checker and fixer behind VideoText's Fix Subtitles tool. It measures whether the fixer finds subtitle errors, whether the file it returns meets the rules, and whether it tells you the truth about what it could not fix. The corpus, code and every per-file result are public.
Direct answer
How well does the VideoText subtitle fixer work?
Evaluated on 2,000 synthetic subtitle files containing 11,597 injected defects. The VideoText subtitle engine detected all injected defects and produced compliant output for 99.2% of files containing repairable defects.
Where a defect had no safe fix in place, the fixer left it and reported it rather than hiding it. It never changed the wording of a cue. These are results on synthetic English files checked against explicit rules, published by VideoText; they are not an independent peer review.
- 2,000 SRT files, 118,803 cues, built from public-domain books
- Rules: 42 characters per line, 2 lines, 20 characters per second, 1.5 s minimum for cues over 20 characters, no overlaps
- Compared with two simple baseline fixers on the same files
Key results
- injected defects detected
- 11,597 / 11,597
- false positives on unmodified cues
- 0 / 107,206
- of files with repairable defects made compliant
- 99.2%
- claimed fixes confirmed in the exported file
- 10,322 / 10,322
Median processing time was 1.13 ms per 60-cue file. All 2,412 violations the fixer could not repair were reported on the cue that has them, and no file it marked as passed had a violation.
Files compliant after repair
200 files per condition. Baseline A clamps overlaps and wraps lines. Baseline B also extends cues that are too fast where the next cue allows it. Rows marked * are stress conditions with no repair in place.
| Condition | VideoText engine | Baseline A | Baseline B |
|---|---|---|---|
| Overlap | 200/200 | 200/200 | 200/200 |
| Long line | 200/200 | 200/200 | 200/200 |
| 3+ lines | 191/200 | 200/200 | 200/200 |
| Fast reading | 200/200 | 0/200 | 200/200 |
| Invalid timing | 200/200 | 0/200 | 200/200 |
| Mixed | 199/200 | 0/200 | 200/200 |
| Overflow text* | 200/200 | 0/200 | 0/200 |
| Dense overlap* | 0/200 | 0/200 | 0/200 |
| Dense fast* | 0/200 | 0/200 | 0/200 |
- On defects with room to repair, Baseline B matched or slightly beat the engine (1,200 vs 1,190 files). The engine keeps an author's line breaks when it splits a three-line cue, which occasionally leaves a piece under 1.5 s. It reports each one.
- When text needs more than two lines, only the engine produced compliant files: it split the cue. Both baselines left three or more lines.
- In the dense conditions no fixer succeeded. The baselines turned 1,200 overlaps into cues too fast to read, without saying so. The engine left them and reported every one.
Does the fixer report the truth?
| Fixes marked "fixed" and confirmed in the export | 10,322 / 10,322 |
| Open findings confirmed by the oracle | 2,412 / 2,413 |
| Violations left in the file without a finding or warning | 0 / 2,412 |
| Files marked "passed" that are not compliant | 0 / 1,565 |
| Files with the same words, in the same order | 2,000 / 2,000 |
| Cues away from any defect whose timing moved | 0 / 85,289 |
| Files unchanged when fixed a second time | 2,000 / 2,000 |
Methodology
- Corpus: 2,000 SRT files of 60 cues each, cut from five public-domain Project Gutenberg books by a seeded generator. Every clean file meets all the rules.
- Defects: 11,597 defects injected into chosen cues, never next to each other, so each finding has one cause.
- Oracle: an independent rule checker written for the study that does not call VideoText code. It checks 42 characters per line, 2 lines, 20 characters per second, a 1.5 s minimum for cues over 20 characters, no overlaps, and end after start.
- System tested: the VideoText subtitle engine with Fix timing and Line breaks on, and grammar, filler removal and re-sync off.
- Reproducible: two runs give byte-identical files and identical results.
| Condition | Injected defect | Defects |
|---|---|---|
| Overlap | A cue ends 0.3–1.5 s after the next one starts | 1,200 |
| Long line | A two-line cue joined into one line over 48 characters | 1,200 |
| 3+ lines | A cue broken into three lines | 1,200 |
| Fast reading | Duration cut to 25–40 characters per second | 1,200 |
| Invalid timing | End time at or before the start time | 1,200 |
| Mixed | Two of each defect above in one file | 2,000 |
| Overflow text* | Two cues merged into one line over 88 characters | 1,197 |
| Dense overlap* | Next cue starts 0.3–0.8 s after a cue over 30 characters | 1,200 |
| Dense fast* | A cue at 25–40 CPS with the next cue 0.04 s after it | 1,200 |
Limitations
- Published by VideoText, not peer reviewed. The author develops VideoText. The data and code are released so anyone can check the numbers.
- Synthetic files. Real files have correlated errors, markup, speakers, VTT positioning and encoding problems that were not tested.
- Same rules. The oracle is separate code but uses the same thresholds as the engine, so it tests the implementation, not whether those rules suit every audience.
- No audio. Timing was not checked against speech, and the corpus is English only.
- Simple baselines. The two baselines were written for the study. They are not any other company's product, and no claim is made about other tools.
- Two checkers. These results are for the engine behind Fix Subtitles, its API and the
fix_subtitlestool. The freecheck_subtitlestool for AI assistants is a separate checker. Before a fix made for this study it detected 9,997 of 11,597 defects (86.2%); with the fix, all of them (paper, section 5.5).
Research files
- Paper (PDF, 9 pages)
Methods, all results, limitations and references.
- corpus.zip (4.6 MB, Zenodo)
All 2,000 input SRT files.
- benchmark-code-and-results.zip (Zenodo)
Generator, oracle, baselines, scorer, ground truth, all results and the check_subtitles measurement.
- per_file.csv
One row per file: defects, residual violations, status.
- summary.json
Every aggregate number on this page, with run metadata.
Licensed CC BY 4.0. To reproduce the run, follow the README in benchmark-code-and-results.zip.
How to cite
Guntupalli, S. (2026). Honest Automated Subtitle Repair: A Reproducible Defect-Injection Benchmark of the VideoText.io Subtitle Quality Engine (Version 1.0) [Technical note]. Zenodo. https://doi.org/10.5281/zenodo.23701131
@techreport{guntupalli2026subtitlerepair,
author = {Guntupalli, Santhosh},
title = {Honest Automated Subtitle Repair: A Reproducible Defect-Injection Benchmark of the VideoText.io Subtitle Quality Engine},
institution = {VideoText},
type = {Technical note},
year = {2026},
version = {1.0},
publisher = {Zenodo},
doi = {10.5281/zenodo.23701131},
url = {https://doi.org/10.5281/zenodo.23701131}
}DOI 10.5281/zenodo.23701131 · Title on Zenodo: Honest Automated Subtitle Repair: A Reproducible Defect-Injection Benchmark of the VideoText.io Subtitle Quality Engine
Frequently asked questions
How accurate is the VideoText subtitle fixer?
In a reproducible benchmark of 2,000 synthetic SRT files with 11,597 injected defects, the engine detected every injected defect, flagged none of 107,206 unmodified cues, and produced compliant output for 99.2% of files with repairable defects. Results are for synthetic English files checked against explicit rules, not for every real-world file.
Is this benchmark peer reviewed?
No. It is a technical note published by VideoText on Zenodo with a DOI. The author develops VideoText. To make it checkable, the corpus, ground truth, scoring code and per-file results are all published, including the conditions where VideoText does not win.
What does the fixer not repair?
When the next cue starts too soon for a fix in place, the fixer leaves the cue as it is and reports it instead of creating a cue too short to read. In the two dense stress conditions, no fixer tested produced a compliant file. The fixer also does not judge wording or translation.
Can I test another subtitle tool with this benchmark?
Yes. Download corpus.zip from Zenodo, run your tool on the 2,000 SRT files, and score the output with the oracle in benchmark-code-and-results.zip. The ground truth file lists which cue received which defect.
Do these results apply to the free check_subtitles tool for AI assistants?
Not directly. That tool uses a separate, lighter checker. Before a fix made for this study it missed every three-line cue (86.2% of defects detected). With the fix it detects all 11,597 defects; see section 5.5 of the paper.