Translate or understand ASL
It matches a static handshape against a target letter. Nothing more.
on-device · no upload · 24 handshapes
A classifier this project trained and evaluated itself — 4,200 parameters, 39.3KB, committed to the repo — grades your webcam frame in the browser. The camera feed never leaves your device.
This checks handshapes, not ASL. ASL is a full language with its own grammar and facial and body grammar this tool doesn't see.
✓ no accounts✓ no server write path✓ no LLM
F1 ≥ 0.950.85–0.95below 0.85J and Z are absent: both need traced motion
Confusable pairs the eval actually found: X/G · D/B · D/E · F/B · G/Q · K/V. The practice drill picks from this list — the published eval decides what to drill, not a hardcoded guess.
the number, with its caveat attached
The full 24×24 confusion matrix and the per-letter precision/recall/F1 table come from this same run and are published in full on Concept & eval — not summarised in prose here.
no black box
The page imports the same normalize.ts the trainer imports, so the model and the code running it cannot silently drift apart.
MediaPipe's Hand Landmarker produces 21 raw points. They are mirrored to a canonical right hand, translated to the wrist, scaled by the wrist-to-knuckle distance and rotated to a fixed angle. The only network request this product makes is MediaPipe's one-time download.
stated up front
It matches a static handshape against a target letter. Nothing more.
A B C D E F G H I K L M N O P Q R S T U V W X Y — 24 classes. Both missing letters need traced motion a single held frame cannot see.
Progress lives in your browser's localStorage and nowhere else.
The classifier is ~4,200 numbers, trained once and committed to the repo.
Twelve named failure modes — no camera, GPU rejected, model fetch fails, low-confidence prediction, localStorage unavailable, and eight more — each with a stated contract instead of a silent broken state. The full table · Limitations · Source