Subtitle QC – SRT/VTT Compliance Checker
Pricing
from $40.00 / 1,000 subtitle file checkeds
Subtitle QC – SRT/VTT Compliance Checker
Validate SRT and VTT subtitle files for reading speed, line length, timing, overlaps, gaps, and formatting. Get a detailed compliance report and, when safe, an automatically corrected subtitle file with all remaining issues clearly listed.
Pricing
from $40.00 / 1,000 subtitle file checkeds
Rating
0.0
(0)
Developer
François Fernandez
Maintained by CommunityActor stats
0
Bookmarked
2
Total users
1
Monthly active users
3 days ago
Last modified
Categories
Share
Automatically check subtitle files before delivery. Upload SRT or VTT files and receive a structured quality report covering reading speed, line length, line count, timing, overlaps, gaps, and common formatting problems.
When Check and correct is selected, the Actor also produces a corrected subtitle file when it can make safe, measurable changes. It never rewrites dialogue or translation content. Every generated file is then checked again, so the report clearly separates the original problems from the issues that still require manual review.
Common uses
- Post-production quality control before client or broadcaster delivery
- Localization vendors checking files received from translators
- Video platforms screening subtitle uploads
- Agencies enforcing consistent subtitle specifications across a batch
- Automated Make, Zapier, API, or agent workflows
Input
| Field | Type | Initial value | Description |
|---|---|---|---|
files | array | empty | Upload SRT/VTT files or select Key-Value Store records. |
fileUrls | array | empty | Direct HTTP(S) file URLs. |
kvsKeys | array | empty | Keys already stored in the run's default Key-Value Store. |
example | string | clean in Console | Bundled example used only when no real file is supplied. |
profile | string | documentary | Documentary, social, accessibility, or custom thresholds. |
specOverrides | object | {} | Override CPS, line length, duration, and gap thresholds. |
correctionMode | select | check-only in Console | Choose checking only or checking plus safe automatic correction. |
maxCostUsd | number | 1.50 | Additional safety cap checked before custom event charging. |
Correction modes
check-only: produces the report only.check-and-correct: requests a corrected file. The correction event is charged only when a genuinely changed file is produced. A compliant file therefore remains a $0.04 check even if correction was requested.
What is checked
- Maximum lines per cue
- Maximum displayed characters per line
- Reading speed in characters per second, including CJK-aware width
- Minimum and maximum cue duration
- Overlapping cues
- Gaps that are too short
- Leading, trailing, and repeated whitespace
- Malformed or empty subtitle blocks
Automatic corrections
Safe correction can:
- Normalize whitespace
- Reflow lines without rewriting words
- Remove empty cues
- Trim overlaps
- Create the requested minimum gap when this does not create a new timing or reading-speed error
- Extend durations when sufficient room exists
- Cap overly long durations when the resulting reading speed remains compliant
- Renumber cues after a real change
- Reanalyse the exact corrected output before delivery
Text that cannot fit within the selected specification without changing the edit is marked for manual splitting instead of being falsely labelled as corrected. The final report includes both Issues detected in input and Issues remaining after automatic correction.
Secure file delivery
Generated reports and corrected subtitle files are stored in the run's private key-value store. Open the run's Storage > Generated files tab to download them. API users fetch the listed storageKey from the run's default key-value store with their own Apify token. The Actor deliberately does not expose unsigned API links.
Output
Each run stores:
- A structured
OUTPUTJSON record - A dataset overview
- A Markdown compliance report
- A corrected SRT/VTT file only when requested and genuinely changed
Example result:
{"status": "ok","metrics": {"filesProcessed": 1,"errors": 9,"warnings": 3,"compliant": false,"finalErrors": 6,"finalWarnings": 1,"finalCompliant": false,"correctionMode": "check-and-correct","correctedFilesProduced": 1,"correctedFilesNeedingManualReview": 1},"postCorrectionIssues": [{"code": "CPS_TOO_HIGH", "severity": "error", "message": "Reading speed remains above the selected limit.", "location": {"file": "messy.srt", "artifact": "messy.corrected.srt", "cue": 1}}],"artifacts": [{"name": "messy.corrected.srt", "kind": "corrected", "storageKey": "subtitle-qc-messy.corrected.srt", "access": "authenticated"},{"name": "report.md", "kind": "report", "storageKey": "subtitle-qc-report.md", "access": "authenticated"}],"billing": {"events": {"file-checked": 1, "file-corrected": 1},"costUsd": 0.07}}
Accepted files
- SRT and WebVTT
- Up to 20 files per run
- Up to 8 MB per file and 32 MB combined per run
Social platform page links such as YouTube, TikTok, Instagram, Facebook, or X are not accepted. Use an uploaded subtitle file or a direct file URL.
Pricing
This Actor uses Pay per event.
| Event | Price | Charged when |
|---|---|---|
file-checked | $0.04 | A valid SRT/VTT file is parsed and analysed. |
file-corrected | $0.03 | A genuinely changed corrected file is produced. |
Typical custom-event totals:
- Compliant file, report only: $0.04
- Compliant file with correction requested but no change needed: $0.04
- Non-compliant file with a corrected file produced: $0.07
- Unreadable file with no subtitle cues: $0.00 custom events
The small automatic Actor-start event is configured separately in Apify Console. Platform usage is included according to the Actor's pricing setup.
Bundled test examples
clean: compliant SRT, report onlymessy: non-compliant SRT with correctable problemsvtt_social: WebVTT checked against the social profileinvalid: invalid SRT content used to test error handling
Real uploaded files always take priority over bundled examples.
Limitations
This Actor does not check spelling, translation accuracy, dialogue meaning, shot-change alignment, or positioning tags. Automatic correction is deliberately conservative and never rewrites words. A generated file can therefore remain non-compliant when the available timing is physically insufficient; those remaining issues are explicitly listed instead of being hidden.
Support
Include the Apify run ID and a minimal reproducible input when reporting a problem.