AI Rep Counter
Point your webcam at yourself and it counts your squats, push-ups, curls, sit-ups and jumping jacks automatically — with live form feedback. A real pose-tracking model runs on your device, so your camera never leaves your machine.
🔒 100% private — your camera feed never leaves your deviceCount reps with your camera
Start your camera to begin, or watch a quick demo with no camera needed. The AI model (about 5 MB) downloads once, then is cached.
How it counts your reps
When you start your camera, the page loads a pose-detection model called MediaPipe Pose Landmarker. On every frame it finds 33 points on your body — shoulders, elbows, wrists, hips, knees, ankles and more. From those points it measures the one joint angle that defines your chosen exercise: the knee angle for squats, the elbow angle for push-ups and curls, the hip angle for sit-ups, and the shoulder angle for jumping jacks.
A small state machine watches that angle. Each time you move from the resting position, through the full range of the movement, and back, it logs one rep. It also tracks how deep you went and how long the rep took, so it can nudge you when your range of motion gets shallow or your tempo drifts.
Why it can run entirely in your browser
The model is compiled to WebAssembly and runs on your GPU through the browser. Once it has downloaded (about five megabytes, cached after the first visit), every camera frame is processed locally. There is no server in the loop, which is exactly why your video never leaves your device and why it works even on a flaky connection once loaded.
Tips for an accurate count
Stand back far enough that your whole body is in frame, with even lighting and a reasonably clear background. For squats and push-ups a side-on angle reads depth best; for curls and jumping jacks face the camera. Loose, contrasting clothing helps the model find your joints. If the count pauses, it usually means part of your body left the frame.
Is my camera video uploaded anywhere?
No. The pose model runs entirely in your browser. Frames are processed on your device and never sent to a server, which is why it is private and works offline once the model has loaded.
Which exercises does it support?
Squats, push-ups, bicep curls, sit-ups, and jumping jacks, each with its own joint-angle logic, range-of-motion gauge, and form feedback.
Why is the first load slow?
It downloads the pose model (about 5 MB) once. After that your browser caches it, so future visits start almost instantly.
It is not counting — what is wrong?
Make sure your whole body is in frame and well lit. The counter only advances when it can clearly see the joints for your exercise, so step back or improve the lighting if it stalls.
Does it work on my phone?
Yes, in most modern mobile browsers. Prop the phone up so it can see your full body. Performance depends on your device, but the lite model is tuned to run smoothly on phones.
I build tools like this every day.
Senior full-stack engineer, available for senior or contract work, fully remote. See the rest of the lab or get in touch.