Browser ML · MediaPipe + TensorFlow.js
Pushup Form Tracker
Point your camera at yourself side-on, do pushups, and the page counts the reps whose form was good at the top and the bottom. Everything runs on your device: the pose model and the form classifier are downloaded once (about 20 MB) and no frame is ever uploaded. Ported from the Python original.
Controls
Nothing loads until you press a button.
Your camera (mirrored) or the demo clip appears here with the skeleton, the rep count and the form verdict drawn on top.
- Good reps0
- Attempts0
- Form now–
- Speed–
How it decides
- MediaPipe PoseLandmarker (full) finds 33 body points on every frame, on your GPU when available.
- Twelve of them (wrists, elbows, shoulders, hips, knees, ankles) go into a small neural network trained on Kalp's own good- and bad-form videos; it answers "good" or "bad" per frame (94.8 % on held-out frames).
- Shoulder height tracks the movement. A rep is top → bottom → top, and it only counts when the form was good at both ends.
Tips
- Camera at roughly floor level, whole body in frame, side view, one person.
- The first rep calibrates the range, so the count may lag by one rep.
- No camera? The demo clip runs the exact same pipeline on a short recording.