Try it · no signup needed
Fingerspell the missing word.
Eight short fill-in-the-blank puzzles. Sign each missing word at your camera, one letter at a time. The recognizer runs entirely in your browser — your camera frames never leave this device.
How we keep that promise. The classifier loads as JavaScript and WebAssembly from a public CDN, then runs entirely on your device. Open your browser's Network tab while you sign — you'll see the model load once, then nothing. No video frames are ever uploaded. This page transmits zero data of its own.
Ready when you are.
Click below to turn on your camera. Your browser will ask permission.
Your camera runs locally. Nothing is uploaded. You can stop the camera any time.
Can't use a camera right now? Skip to typed mode or try our typed quiz preview.
Camera unavailable.
We couldn't access your camera. That's fine — the typed challenge below works the same way, and the full course never requires a camera.
Now signing
Fill in the blank by fingerspelling the missing word.
The 16 letters this engine recognizes
The ten dimmed letters — J K M N P Q T X Z — need camera-unfriendly motion or finger combinations. In the full course, questions whose answers use those letters automatically use typed input. Same credit, same mastery either way.
Nice work.
Solved 0 / 8 fill-in-the-blank words with fingerspelling. The same recognizer powers every quiz in the full course.
Sign in to start Lesson 1 →Typed mode
Same eight fill-in-the-blank puzzles. Just type each letter and press Enter.
Loading…
Puzzle 1 / 8
What's happening under the hood
This page loads /thinkasl/assets/js/camera-engine.js —
the recognizer ported from the 1891 Signal v2 work. The pipeline is:
MediaPipe Hands extracts 21 landmarks per frame; a TensorFlow.js MLP
(trained on 23.7k samples from the ASL Alphabet dataset, ≥97% val
accuracy) classifies the handshape; hand-coded rules supplement for
gestures the model wasn't trained on (ILY / OK / NOK); a hybrid
dispatcher merges all of it with context-target boosting so the
recognizer locks faster on the letter you're hunting.
MediaPipe + TensorFlow.js load once from cdn.jsdelivr.net;
the model weights load from /thinkasl/assets/model/ on
this domain. After that, recognition runs entirely on your device.
Verify it yourself. Open your browser's developer tools (View → Developer → Network on most browsers) and watch the Network tab while you sign. You'll see the page's HTML, JavaScript, the MediaPipe assets, and the model weights load once — then nothing. Filter for "media" or "xhr" to confirm no video is being uploaded.
The classifier returns one of 29 tokens: 16 letters
(A B C D E F G I L O R S U V W Y),
10 digits, and 3 gestures (ILY, OK, NOK).
Off-limits letters (J K M N P Q T X Z)
need motion or finger combinations that we can't classify reliably from a
single webcam frame, so they're typed-only in the full course.
Source: the engine module is in the static assets folder of this site, readable from the network tab. Same file, same logic.