How Your iPhone Counts Push-Ups (Without a Wearable)
A deep dive into how ARKit face-tracking technology turns your iPhone into a precision push-up counter — no bands, sensors, or wearables required.
The Problem With Counting Push-Ups
Counting push-ups sounds simple. You go down, you come up, that’s one. But anyone who’s done a hard set knows: counting gets fuzzy around rep 15. You lose track. You round up. You count partials as full reps. The harder the set, the less reliable the count.
Wearable devices try to solve this with accelerometers on your wrist, but they can’t distinguish a push-up from a burpee or a plank-to-push-up transition. They’re counting arm movements, not actual push-up mechanics.
Enter ARKit Face Tracking
Every iPhone with a TrueDepth camera (iPhone X and later) has ARKit — Apple’s augmented reality framework. One of its capabilities is tracking the distance between your face and the phone’s front-facing camera with sub-centimeter precision.
When you do a push-up with your phone on the ground in front of you, your face moves closer to the phone on the way down and farther away on the way up. This distance signal is the foundation of our counting algorithm.
What We Measure
The raw distance signal gives us far more than just a rep count:
- Face-to-phone distance at 60 frames per second
- Descent phase timing (eccentric) — how long each downward movement takes
- Ascent phase timing (concentric) — how long each upward movement takes
- Depth consistency — are you going to the same depth every rep?
- Pause detection — rest periods between reps within a set
From Distance to Reps
The algorithm processes the distance signal through several stages:
- Signal smoothing — raw distance data has noise from small head movements. We apply filtering without introducing lag.
- Phase detection — the algorithm identifies four phases: top position, descending, bottom position, ascending. Each transition is a state change.
- Rep classification — a complete down-up cycle that reaches sufficient depth is a FULL rep. Insufficient depth is a PARTIAL. An abandoned descent is ABORTED.
- Quality scoring — each rep gets timing data (eccentric/concentric duration) and depth measurement.
Why This Is Better Than Wearables
The key advantage is specificity. We’re measuring the exact biomechanical movement of a push-up — the vertical displacement of your head relative to a fixed reference point (the phone on the ground).
An Apple Watch accelerometer measures wrist acceleration in 3D space. It then has to guess what exercise you’re doing and what constitutes a “rep.” That’s a classification problem layered on top of noisy sensor data.
Our approach has none of that ambiguity. If your face went down and came back up past the depth threshold, that’s a push-up. If it didn’t reach the threshold, it’s a partial. The physics are direct and unambiguous.
Privacy By Design
A common concern: “Is the app watching me through the camera?”
The answer is no. ARKit provides a distance measurement — a single floating-point number at each frame. We never access the camera image, never record video, and never use facial recognition. The TrueDepth sensor projects infrared dots to measure depth. We only consume the resulting distance value.
Your push-up data stays on your device during the session. Only aggregated session metrics (rep count, timing, quality scores) are sent to the server after you finish.
The Bottom Line
Your iPhone is already a precision depth sensor sitting in your pocket. We just point it in the right direction and let physics do the counting. No wearable can match the specificity of measuring the actual push-up movement directly.
Want to track your push-ups?
Download the app and start counting — no wearables needed.
Download the App