Stand back so your whole body is in frame and throw some
straight punches. Facing the camera works — depth is tracked in 3D — and turning
slightly side-on gives the fullest read of balance and hooks. A pose model reads 33
body landmarks per frame; your own biomechanics engine grades each punch.
Video never leaves your device — all processing runs in your browser.
balance —guard —— fps
JAB
0
Load the pose model with “Start camera”, or “Run demo” to see it work with no webcam.
How it works
1
Pose
MediaPipe BlazePose returns 33 body landmarks per frame, in-browser and on the GPU. Positions are one-euro filtered before any velocity is computed — smoothing before differentiation is the single biggest accuracy lever.
2
Features
Every landmark becomes a boxing-meaningful signal, normalized to a shoulder-width unit so it survives a change in camera distance: de Leva center of mass, sagittal base of support, elbow extension, guard height.
3
Detection
A punch is a wrist-speed peak coincident with real excursion of the wrist from its guard position. The classifier separates jab / cross / hook / uppercut from wrist-path shape and elbow behavior.
4
Scoring
Each punch is graded on five dimensions — balance, weight recovery, kinetic-chain sequencing, guard integrity, retraction speed — against reference bands, and turned into plain-language coaching notes.
The analysis engine is vendored from Kodawari, my boxing motion-analysis pipeline —
the same pose → features → detection → scoring code that ports into the jab-coach
pure-TypeScript analyzer. This page adds a thin real-time streaming layer on top.
Capture tips for a clean read
Frame the whole body. Step back so your feet are in view — the center-of-mass and base-of-support metrics need them.
Facing the camera is fine. Forward punches are tracked in 3D via depth; a slight turn toward side-on sharpens balance and hook reads.
Good light, plain background. Motion blur — not frame rate — is what makes pose models hallucinate the wrist on the frames that matter.
Shadow-box. A heavy bag occludes the arm at impact; sparring (multiple people) is out of scope here.