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.
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:
| Condition | What it covers |
|---|---|
| Gold standard (perpendicular, 1080p60) | Ideal placement: tripod, side-on, full-height framing |
| 45° angle | Phone placed off to the side, not square-on to the bar |
| Floor level / low angle | Phone on the ground, angled up |
| 30fps | iPhone or Android recording at 30fps instead of 60fps |
| 720p and 4K | Resolution variants vs the standard 1080p |
| Dim light, backlit, glare | Indoor gym with overhead backlight, window glare, low ambient light |
| 1.2 m and 5 m distance | Closer and further than the recommended 2–3 m |
| Background clutter | Gym 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:
| Metric | CCC | MAE | Systematic bias |
|---|---|---|---|
| Mean velocity | 0.982 | 0.044 m/s | +0.021 m/s |
| Peak velocity | 0.975 | 0.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.
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).
| Condition | n reps | Mean velocity MAE |
|---|---|---|
| Gold standard (perpendicular, 1080p60) | 63 | 0.041 m/s |
| 45° angle | 48 | 0.045 m/s |
| Floor level / low angle | 13 | 0.043 m/s |
| 30fps | 45 | 0.088 m/s |
| 720p / 4K | 39 | 0.090 m/s |
| Dim / backlit / glare | 30 | 0.045 m/s |
| Distance extremes + clutter | 22 | 0.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.
| Condition | n reps | Peak velocity MAE |
|---|---|---|
| Gold standard (perpendicular, 1080p60) | 63 | 0.052 m/s |
| 45° angle | 48 | 0.156 m/s |
| Floor level / low angle | 13 | 0.105 m/s |
| 30fps | 45 | 0.292 m/s |
| 720p / 4K | 39 | 0.242 m/s |
| Dim / backlit / glare | 30 | 0.111 m/s |
| Distance extremes + clutter | 22 | 0.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:
| Metric | Jump MAE (all conditions) |
|---|---|
| Peak velocity | 0.124 m/s |
| Mean velocity | 0.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.