Skip to content
↗ all articles

Metric vs GymAware: internal accuracy validation, June 2026

How accurate is Metric across different camera positions, lighting conditions, frame rates and lift types? We ran a controlled session with a GymAware tether unit as ground truth, testing iOS v6.9 and Android v1.2 across 17 sets and multiple phone setups. Here is the full breakdown.

7 MIN

The validation summary on the accuracy page gives the headline numbers: CCC 0.982 for mean velocity and CCC 0.975 for peak velocity across 95 reps. This article goes behind those numbers — the full test setup, per-condition breakdown, what changed between versions to get there, and what the jump data looked like.

The test setup

One lifter, one gym, one session. Reference device: a GymAware linear-position transducer, widely regarded as the most accurate tether-based LPT on the market.

17 sets total: bench press, deadlift, squat, power cleans, and two sets of jump training. Each set was filmed simultaneously by up to four phones running Metric. The phones covered different positions and recording contexts in the same lift — so each GymAware rep had multiple Metric readings from different angles and conditions.

Phone setups tested across sets:

ConditionWhat it covers
Gold standard (perpendicular, 1080p60)Ideal placement: tripod, side-on, full-height framing
45° anglePhone placed off to the side, not square-on to the bar
Floor level / low anglePhone on the ground, angled up
30fpsiPhone or Android recording at 30fps instead of 60fps
720p and 4KResolution variants vs the standard 1080p
Dim light, backlit, glareIndoor gym with overhead backlight, window glare, low ambient light
1.2 m and 5 m distanceCloser and further than the recommended 2–3 m
Background clutterGym equipment in frame behind the barbell

That produced 234 total Metric recordings matched to GymAware ground truth. The summary statistics on the validation page use 95 of those — one per set, best available condition, non-jump sets only. The per-condition breakdown below uses all valid recordings from the session.

Headline agreement: best condition per set

Selecting the best Metric recording per set (prioritising perpendicular 1080p60, otherwise the primary alt condition), across the 15 non-jump sets:

MetricCCCMAESystematic bias
Mean velocity0.9820.044 m/s+0.021 m/s
Peak velocity0.9750.088 m/s−0.054 m/s

For mean velocity, Metric reads slightly fast on average (+0.021 m/s). For peak velocity, slightly slow (−0.054 m/s). Neither is zero, but both are small relative to the measurement range across these lifts.

At gold-standard positioning specifically — perpendicular, 1080p60 — peak velocity bias drops to near-zero (−0.010 m/s) and the correlation reaches CCC 0.993.

00.511.52 0.511.52 GymAware mean velocity (m/s) Metric mean velocity (m/s) CCC = 0.982
Mean velocity concordance — Metric vs GymAware · 95 reps · bench, deadlift, squat, power cleans · diagonal = perfect agreement
00.511.522.53 0.511.522.53 GymAware peak velocity (m/s) Metric peak velocity (m/s) CCC = 0.975
Peak velocity concordance — Metric vs GymAware · 95 reps · bench, deadlift, squat, power cleans · diagonal = perfect agreement

Per-condition breakdown

Mean velocity MAE by condition

Mean velocity was already strong across nearly every condition before the work that went into v6.9. The main exception was floor-level recording, where phone tilt compressed vertical motion — a known issue that v6.9 addresses directly (more on that below).

Conditionn repsMean velocity MAE
Gold standard (perpendicular, 1080p60)630.041 m/s
45° angle480.045 m/s
Floor level / low angle130.043 m/s
30fps450.088 m/s
720p / 4K390.090 m/s
Dim / backlit / glare300.045 m/s
Distance extremes + clutter220.033 m/s

The standout takeaway: mean velocity holds up well at 45° and in poor lighting. The two conditions that take the biggest hit are 30fps and non-1080p resolution — both roughly double the MAE compared to gold standard.

Peak velocity MAE by condition

Peak velocity is more sensitive to conditions than mean velocity. It is a single-sample measurement — the highest instantaneous speed reached during the concentric phase — so frame rate, smoothing and camera position all matter more.

Conditionn repsPeak velocity MAE
Gold standard (perpendicular, 1080p60)630.052 m/s
45° angle480.156 m/s
Floor level / low angle130.105 m/s
30fps450.292 m/s
720p / 4K390.242 m/s
Dim / backlit / glare300.111 m/s
Distance extremes + clutter220.043 m/s

30fps is the biggest issue for peak velocity. At 0.292 m/s MAE, it is nearly six times worse than gold standard. 30fps recordings undersample fast movements — at typical explosive velocities, the genuine peak occurs between frames, and interpolation smooths it out. If peak velocity is a metric you rely on, 60fps recording is not optional.

720p and 4K both degrade peak accuracy, though by less than 30fps. 720p has lower spatial resolution and loses tracking precision; 4K is limited by mobile chip throughput during processing. 1080p60 is the sweet spot.

45° is worse for PV than for MV. Camera angle affects peak tracking more than mean tracking because the plate’s apparent motion path changes — the horizontal component of bar travel contaminates the vertical velocity estimate more at peak (where the bar is moving fastest).

Lighting is manageable. Dim conditions, backlight and glare raised peak MAE to 0.111 m/s — roughly double gold standard, but nowhere near the 30fps penalty. Metric handles poor lighting better than it handles poor frame rate.

Distance and clutter barely matter. From 1.2 m to 5 m, and with gym equipment in the background, peak MAE was 0.043 m/s — actually slightly below gold standard. The plate detection algorithm is not sensitive to what is behind the plate.

Jump sets

The two jump sets (S08, S09) are excluded from the validation page headline numbers because the measurement context for jumps differs from barbell lifts: the bar separates from the hand at the top, there is no eccentric-to-concentric transition in the same sense, and GymAware’s concentric window definition does not translate cleanly to jump ballistics.

That said, here is what we found:

MetricJump MAE (all conditions)
Peak velocity0.124 m/s
Mean velocity0.148 m/s

Peak velocity on jumps is actually reasonably consistent with the 45° and lighting conditions on barbell lifts. Mean velocity on jumps reads roughly 10% below GymAware across all camera setups — including gold standard. Our read on this: it is likely a definitional difference in how GymAware windows the concentric phase on jumps, not a Metric tracking error. The metric remains internally consistent across repetitions; it is the inter-device agreement that diverges. We are not treating jump mean velocity as a validated comparison metric until we can isolate the definitional question.

Peak velocity on jumps is cleaner. The bar reaches clearly higher velocities (often 2.4–2.75 m/s in the cleans and jump sets), and at those speeds, tracking has more signal to work with.

What changed to get here

The v6.9 results above did not come from scratch. Three specific tracking problems were diagnosed and fixed:

1. Peak velocity was being smoothed out. The motion smoothing that stabilises bar paths was also shaving the top off every velocity peak — roughly 4% on slow lifts and up to 25% on explosive movements at 30fps. The fix re-measures peaks from a second, lighter-smoothed reconstruction of the path, blended in proportion to how trustworthy the sharper estimate is at the video’s frame rate. This is why the peak velocity results across conditions are substantially better than earlier versions.

2. 30fps gaps were being filled by interpolation. Before v6.9, imported 30fps footage had its frame gaps filled by straight-line interpolation before analysis. That flattens the true peak. Now peak measurement works from the genuine camera samples only. This did not fully solve 30fps (it remains the weakest condition) but it improved it.

3. Low-angle recordings were under-reading. A phone placed on the floor angled up at the bar compresses all vertical motion by the cosine of the tilt. Live recording corrects this using the phone’s motion sensors. For imported video there are no sensor data, so imported low-angle footage used to under-read by 10–12%. v6.9 estimates the tilt from the shape of the plate in frame — how elliptical it appears and in which direction — and rescales the vertical axis. The floor-level MAE dropped from 0.106 to 0.043 m/s for mean velocity as a result.

4. Rep ordering was wrong. When the detector recovered a quieter rep after its louder neighbours, reps could be filed out of chronological order — corrupting rep numbers, eccentric pairing and velocity-loss calculations. Reps are now always chronological.

Practical setup recommendations

Based on what the data shows:

For mean velocity monitoring: conditions are forgiving. 45°, 30fps, dim lighting and distance all produce MAE under 0.090 m/s. Use whatever setup is practical.

For peak velocity and %1RM profiling: use 60fps at 1080p, positioned as close to perpendicular as possible. 30fps is meaningfully worse for peak; 45° also degrades peak tracking. Get the phone roughly level with the plates and give the bar room in frame.

Lighting: less important than frame rate or angle. Metric handles mixed gym lighting well.

Distance and clutter: not a meaningful concern in the data. Film from wherever is practical within 1–5 m.

For jump tracking: peak velocity reads consistently across conditions. Mean velocity on jumps diverges from GymAware in a way we attribute to a definitional difference; treat Metric’s jump MV as internally consistent rather than GymAware-comparable until that is resolved.

The full headline numbers and methodology are on the validation page. The independent peer-reviewed studies are listed there too.


Get Metric

Point your phone's camera at a code to install.

Scan to download Metric on the App Store
iPhone & iPad Download on the App Store
Scan to download Metric on Google Play
Android Get it on Google Play