How Accurate Is ARKit for Motion Capture? I Measured It Across 10 Exercises

Apple’s ARKit turns an iPhone into a markerless 3D motion tracker — no markers, no lab. But how good is ARKit motion capture accuracy, really? I put the app to the test across 10 exercises with 11 participants, comparing ARKit’s joint angles against a 2D video-analysis reference. This post (summarised in the video above) walks through what I found, with the actual error numbers — and the short version is that accuracy depends heavily on the pose.

How I tested ARKit’s accuracy

The setup was simple: 11 participants performed 10 exercises, filmed by an iPhone 11 Pro about 4 metres away. The ARKit app’s joint angles were compared against a video-analysis reference — for both the maximum and minimum angle in each movement. That max/min split turns out to matter enormously, because ARKit is not equally accurate across a movement.

The test method: 11 participants, 10 exercises, iPhone 11 Pro at 4 m, ARKit 3D skeleton compared against 2D video analysis on max and min joint angles.
The method — 11 participants, 10 exercises, ARKit’s 3D skeleton vs 2D video analysis, comparing the max and min joint angle in each move.

It looks perfect on screen — the numbers disagree

Here is the catch. On screen, the tracking looks flawless — the skeleton hugs the body, and you would happily trust it. But the numbers underneath tell a different story: accuracy depends heavily on the pose. A convincing overlay is not the same as a correct measurement, and that gap is the whole point of this evaluation.

Where ARKit is accurate

ARKit shines at the peak angle of a flexed joint. Maximum knee flexion in the squat was off by under 3°; the front lunge by about 3°; the side lunge by under 2°; and the maximum shoulder angle in a push-up was near perfect. For a single joint at peak flexion, ARKit motion capture is genuinely accurate.

Where ARKit is accurate: maximum-angle error under 3° — squat knee 2.7°, front-lunge knee 3.3°, side-lunge knee 1.9°, push-up shoulder 0.05°.
Where it shines — a single joint at peak flexion: squat knee 2.7°, front-lunge knee 3.3°, side-lunge knee 1.9°, push-up shoulder 0.05°.
Exercise & jointAngle measuredError vs reference
Squat — kneeMax flexion2.7°
Front lunge — kneeMax flexion3.3°
Side lunge — kneeMax flexion1.9°
Push-up — shoulderMax angle0.05°
Push-up — shoulderMin angle (near floor)63°
One-leg deadlift — hipMax angle35°
Squat — kneeMin angle (near extension)24°

Where ARKit breaks down

The errors balloon near full extension and near the ground. The minimum knee and hip angles were off by 20° or more, and the minimum shoulder angle in a push-up — where the body is close to the floor — was off by a staggering 63°. Same app, same recording; only the pose changed.

Where ARKit breaks down: errors versus reference balloon near full extension and near the ground — push-up min shoulder 63°, one-leg deadlift max hip 35°, squat min knee 24°.
Where it breaks down — the push-up’s minimum shoulder angle was off by 63°; errors grow near full extension and close to the ground.

The consistent pattern behind the errors

Across exercises, one pattern held: ARKit underestimates deep flexion and overestimates near extension, so it compresses the range of motion. It also tracks small joints — the wrist, ankle, and toe — poorly, which drags down the joints attached to them. The result is measurements that look plausible but systematically shrink the movement.

A consistent pattern: ARKit underestimates deep flexion and overestimates near extension, so range of motion is compressed and small joints (wrist, ankle, toe) track poorly.
A consistent pattern — deep flexion underestimated, near-extension overestimated, range of motion compressed, small joints tracked poorly.

Why the errors happen

The root cause is that the 3D skeleton is drawn on a flat screen, so it looks aligned even when the joint centres land on the edge of a limb rather than inside it. When an arm overlaps the torso, or the body is near the ground, the app cannot tell the parts apart — and that is exactly what wrecks the push-up measurement. It looks aligned on screen, but the underlying data is off. This is the same single-camera depth ambiguity discussed in our overview of 3D markerless motion capture approaches.

Why the errors happen: the 3D skeleton is drawn on a flat 2D screen, joint centers land on the edge of a limb, overlapping limbs confuse the app, and poses close to the ground break detection.
Why the errors happen — it looks aligned on screen, but joint centres, overlapping limbs, and near-ground poses throw the data off.

A safety note

This is not just academic. Because the app underestimates deep hip flexion, someone chasing a deeper number on screen might over-flex — leaning the trunk or arching the spine — which loads the lower back and knees. If you use ARKit for feedback, be aware that a “not deep enough” reading can push you into a riskier position than the number suggests.

A safety note: because ARKit underestimates deep hip flexion, a user chasing a deeper number may over-flex, arching the spine and loading the lower back and knees.
A safety catch — underestimated deep hip flexion can push users to over-flex, arching the spine and loading the lower back and knees.

How to use ARKit well

So how should you actually use it? Trust ARKit for a single joint angle at peak flexion — squat depth, for example — not whole-body kinematics or near-extension angles. Keep the camera level and side-on. For push-ups, try a wall push-up instead, so the body is not near the floor. And it is reliable for counting reps, because the angle peaks are always clear. For how ARKit reconstructs 3D in the first place, see our explainer on ARKit 3D motion capture, and how it compares in our roundup of smartphone motion-capture apps.

How to use ARKit well: good for a single joint at peak flexion and counting reps; cautious for whole-body or near-extension and small joints; keep the camera level and side-on.
How to use it — trust it for a single joint at peak flexion and rep counting; keep the camera level and side-on, and try a wall push-up.

Frequently asked questions

How accurate is ARKit for motion capture?

For a single joint at peak flexion it is excellent — under about 3° of error for squat, lunge, and push-up peaks. But near full extension or when the body is close to the ground, errors can reach 20° or more, up to 63° for the minimum shoulder angle in a push-up. Accuracy depends heavily on the pose.

Can I use ARKit instead of a motion-capture lab?

Not for full-body kinematics. ARKit is great for targeted single-joint tracking and rep counting, but it compresses range of motion and struggles with small joints and near-ground poses. For research-grade whole-body measurement you still want multiple cameras or a marker-based system.

Why does the skeleton look perfect but the numbers are wrong?

Because the 3D skeleton is rendered on a flat screen, it can look aligned while the joint centres sit on the edge of a limb. Overlapping limbs and near-ground poses confuse the app, so a convincing on-screen overlay can hide a large underlying error.

The bottom line

ARKit is genuinely useful for targeted single-joint tracking and rep counting — just not full-body motion capture, yet. Know where it shines and where it breaks down, keep the camera side-on, and treat near-extension and small-joint numbers with caution. For the wider context, start with our foundational overview of motion capture and performance analysis.


Takashi Fukushima — Sports Science & Pose Estimation.
Subscribe on YouTube  ·  Website  ·  ORCID  ·  Contact

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top