67 Speed Challenge counts alternating hand pumps in roughly 20 seconds using a webcam—or falls back to keys 6 and 7. The webcam path is not magic: it is a short pipeline from camera pixels → machine-learning landmarks → geometry filters → scored reps. This article documents how that pipeline works in the shipping site, so players understand missed reps and developers can see what “browser vision game” actually means in 2026.
Contents
1. End-to-end pipeline
When you choose webcam mode, the browser requests camera permission and streams video into an HTML5 <video> element. A MediaPipe Hand Landmarker model (loaded as a .task asset) runs in the page via the Tasks Vision package. Inference is accelerated with WebGL / WASM on supported devices. Each successful frame yields zero, one, or two hands with landmark coordinates in image space.
The game mirrors the video for a natural “selfie” feel, draws a neon skeleton overlay for feedback, and feeds palm position into a custom HandTracker object—one tracker per hand. That tracker decides whether a vertical oscillation cycle has completed. Completed cycles call registerRep(), which updates score, combo UI, particles, and sound.
2. Twenty-one landmarks—and which ones matter here
MediaPipe’s classic hand model estimates 21 points per hand: wrist, thumb (CMC–TIP), index, middle, ring, and pinky joints. For counting pumps we care most about a stable palm center proxy (derived from wrist and metacarpals) and a rough hand size in normalized coordinates. Hand size drives the motion amplitude threshold: larger apparent hands require a larger up/down travel before a turn counts as a rep. That keeps the detector proportional whether you sit 60 cm or 100 cm from the lens.
Open palms facing the camera give the model the clearest silhouette of fingers and palm. Edge-on hands, fists, or hands leaving the frame produce landmark jitter or complete dropouts—players experience this as “WAITING” status chips or silent missed pumps.
3. Peak–valley rep detection (engine truth)
Each hand runs an independent oscillator tracker. Vertical position is low-pass filtered so single-frame noise does not spam reps:
smoothedY = smoothedY × 0.35 + palmY × 0.65
Direction starts as “moving down” (increasing image Y). When the hand reverses and travels more than handSize × 0.33 from the last extreme, the tracker flips direction and fires a rep. The same rule applies on the opposite turn. In plain language: you need a clear enough up or down leg relative to your hand size, not a theatrical full-arm windmill.
Constants in the shipped build include a minimum hand size clamp (MIN_NORMALIZED_HAND_SIZE = 0.06) so tiny or distant hands do not make the threshold impossibly small and noisy.
4. Combo levels from rolling reps-per-second
Score is not “1 point per rep.” Each registered rep awards base points scaled by the current combo level, which is derived from a rolling 2-second window of rep timestamps:
| Combo level | RPS (approx.) | UI label | Points per rep |
|---|---|---|---|
| 0 | < 3.5 | PUMPING… | 10 |
| 1 | ≥ 3.5 | HYPER! | 20 |
| 2 | ≥ 6.0 | GODLIKE! | 35 |
| 3 | ≥ 8.5 | SUPER 67!!! | 60 |
That is why a smooth high-frequency stretch beats a frantic start that collapses after three seconds: dropping out of the high RPS band collapses the multiplier even if total reps look okay. Keyboard mode uses the same scoring math; only the input source differs.
5. Failure modes (sensor reality, not “bugs”)
- Backlight: Face and hands silhouetted against a bright window → low contrast → landmarks jump.
- Motion blur: Very large amplitude at high speed on a slow sensor → peaks smear.
- Occlusion: Hands crossing or stacked → one hand disappears for several frames.
- Thermal throttle: Long sessions on thin laptops drop inference FPS; the detector sees fewer samples per second.
- Multi-person frame: Extra hands confuse assignment; clear the background when competing seriously.
Practical fixes live in our merged setup guide: Webcam lighting, framing, and troubleshooting.
6. On-device privacy model
Landmark inference for gameplay is designed to run inside your browser session using the local model asset. We do not need to upload camera frames to a server to count pumps. Optional leaderboard submissions store callsign and score-related stats—not your video. Full wording is in the Privacy Policy. If a workplace or school forbids cameras entirely, use keyboard mode.
7. Performance expectations
| Device class | Typical experience | Tip |
|---|---|---|
| Recent desktop / laptop + Chrome | Smooth skeleton, reliable counts | Close heavy tabs |
| Mid-range phone | Playable, occasional drops | Landscape, bright light, rest phone |
| Older integrated GPU | Lower FPS, laggy overlay | Prefer keyboard mode for fair scores |
Browser support is strongest on current Chromium builds; Safari and Firefox work on many devices but camera permission UX differs. See the beginner guide for first-run steps.
8. What this system is not
67 Speed Challenge is an arcade measurement of a meme gesture—not a clinical motor assessment, not laboratory motion capture, and not a guarantee that two different webcams produce identical absolute numbers. Improve relative to your setup, compare leaderboards within the same input mode, and treat social-media “faster than you” clips with skepticism (editing and angles exist).