Accessibility / Media / Caption Quality Heuristics
The Caption Quality Heuristics bookmarklet analyzes caption track quality for videos. Finds all video elements, filters to caption/subtitle tracks, analyzes cues for reading speed (words per minute), gaps between captions (dead air where no captions appear), overlapping captions, and displays an alert with statistics for each track: track label, WPM rate, total gap time in seconds, and overlap count. High WPM (>180) may be too fast to read comfortably; gaps indicate missing content; overlaps indicate poor caption timing.
WCAG SC 1.2.2: Captions
Run Caption Quality Heuristics
Test run or drag to
bookmarklets bar to install
javascript:%21function()%7B%22use%20strict%22%3Btry%7Bconst%20t%3D%5B...document.querySelectorAll(%22video%22)%5D%3Bif(%21t.length)return%20void%20alert(%22No%20videos%22)%3Blet%20e%3D%5B%5D%3Bt.forEach(t%3D%3E%7B%5B...t.textTracks%7C%7C%5B%5D%5D.filter(t%3D%3E%2Fcaptions%7Csubtitles%2Fi.test(t.kind%7C%7C%22%22)).forEach(o%3D%3E%7Bconst%20a%3D%5B...o.cues%7C%7C%5B%5D%5D%3Blet%20i%3D0%2Cn%3D0%2Cr%3D0%2Cs%3D0%3Bfor(let%20t%3D0%3Bt%3Ca.length%3Bt%2B%2B)%7Bconst%20e%3Da%5Bt%5D%2Co%3Da%5Bt%2B1%5D%3Bif(i%2B%3D(e.text%7C%7C%22%22).trim().split(%2F%5Cs%2B%2F).filter(Boolean).length%2Cs%2B%3De.endTime-e.startTime%2Co)%7Bconst%20t%3Do.startTime-e.endTime%3Bt%3E0%26%26(n%2B%3Dt)%2Ct%3C0%26%26r%2B%2B%7D%7Dconst%20l%3Dt.duration%26%26isFinite(t.duration)%3Ft.duration%3As%2Cc%3Dl%3Fi%2Fl*60%3A0%3Be.push(%7Btrack%3Ao.label%7C%7C%22captions%22%2Cwpm%3Ac.toFixed(0)%2Cgaps%3An.toFixed(1)%2Coverlap%3Ar%7D)%7D)%7D)%2Calert(e.length%3Fe.map(t%3D%3E%60%24%7Bt.track%7D%3A%20%24%7Bt.wpm%7D%20wpm%2C%20gaps%20%24%7Bt.gaps%7Ds%2C%20overlaps%20%24%7Bt.overlap%7D%60).join(%22%5Cn%22)%3A%22No%20caption%20tracks%22)%2Cconsole.log(%22%5CnSource%3A%20https%3A%2F%2Fgithub.com%2Falejandrogiga98%2FA11y-Bookmarklets%5CnBookmarklet%20name%3A%20Caption%20quality%20heuristics%5CnAuthor%3A%20alejandrogiga98%5CnLicense%3A%20MIT%20License%5Cn%22)%7Dcatch(t)%7Balert(%22Bookmarklet%20Error%3A%20%22%2Bt.message)%7D%7D()%3B
← Back to all bookmarklets