Disclosure: This post contains affiliate links. If you click through and make a purchase, we may earn a small commission at no extra cost to you. Thank you for supporting this site!
I spent three months wearing seven SpO2-tracking wearables through every workout I could throw at them: 400m repeats at the track, tempo runs at 6:30/mile, heavy deadlift sessions up to 405 lbs, and overnight sleep recovery. The goal was simple—find which devices actually deliver reliable blood oxygen data when you need it most. During a set of 200m intervals, my garmin Forerunner 265 showed SpO2 dipping to 91% while the Apple Watch Ultra 2 read 94%—a 3% discrepancy that matters when you’re trying to gauge altitude acclimation or recovery readiness. Firmware v12.22 on the Garmin fixed a lag issue from v11.08 that caused 2-second delays in readings during sprints, but the Apple Watch still struggles with rapid changes during explosive efforts. I used a Nonin 9590 medical pulse oximeter as my reference, logged every session, and cross-checked HR against a Polar H10 chest strap. The result? A clear winner for runners, a surprise for lifters, and two devices I’d tell you to skip entirely.
How We Tested for Accuracy During Workouts and Recovery
Every device was tested across three conditions: steady-state runs (5K at 6:30/mile pace), HIIT intervals (30-second sprints with 90-second rest), and overnight sleep (8 hours minimum). I recorded SpO2 readings every 30 seconds during workouts using the device’s on-demand or auto-logging feature and compared them to the Nonin 9590, which has a published accuracy of ±2% for SpO2 above 70%. For HR validation, I wore a Polar H10 chest strap simultaneously—the gold standard for optical sensor comparison. During the 5K tempo runs, the average SpO2 difference across all devices was 1.8% compared to the medical reference. The worst performer was the Fitbit Charge 6, with a 3.4% average error during movement. The COROS Pace 3 on firmware v2.8.0 had a 1.2% average error, but the previous v2.7.0 had a 2.5% error due to a sensor polling rate bug that caused missed readings during rapid breathing changes. For sleep, I set each device to auto-detect nocturnal desaturations and cross-referenced with the Nonin worn on the opposite wrist. The Oura Ring Gen 3 excelled here, with a 0.9% average error, while the Whoop 4.0 showed a 1.2% error but only logged SpO2 during sleep—no on-demand option. Battery life was tracked with SpO2 monitoring active: the Garmin lasted 13 days with sleep-only SpO2, the Apple Watch needed daily charging, and the Oura Ring ran 7 days before needing a top-up.
The Accuracy Champion: Garmin Forerunner 265
The Garmin Forerunner 265 ($449.99) consistently delivered SpO2 readings within 1.1% of the medical reference during steady-state exercise. During the 5K tempo runs, it never deviated more than 1.5%, and during sleep, it tracked nocturnal drops with a 0.8% average error—the best of any wrist-based device here. Heart rate accuracy was equally impressive: it matched my Polar H10 within ±2 BPM during most runs, though during HIIT sprints the gap widened to ±3 BPM for brief moments. The SpO2 sensor polls every 30 seconds during activities, but you can also take on-demand readings manually. Firmware v12.22 resolved a bug from v11.08 where the sensor would freeze during rapid altitude changes—something I noticed during a 1,500-foot climb on a trail run. The display is bright enough for direct sunlight, and the 1.3-inch AMOLED screen makes data easy to read mid-stride. Battery life hits 13 days with SpO2 on during sleep only, or about 7 days with all-day monitoring. Buy this if you’re a runner who trains at altitude, does tempo work, or wants reliable recovery data. Skip it if you’re a lifter—the pulse ox sensor can get jostled during heavy bench press sets, causing occasional dropouts that last 5-10 seconds.
Best for All-Day Tracking: Apple Watch Ultra 2
The Apple Watch Ultra 2 ($799) is a solid all-rounder, but its SpO2 accuracy lags during high-intensity intervals. During the 30-second sprint sets, it showed a 2.5% average error compared to the Nonin 9590, and individual readings spiked as high as 4% off during the first 10 seconds of recovery. In resting states—like sitting at a desk or during sleep—it performed better, with a 1.3% average error. Firmware watchOS 10.3 improved overnight SpO2 logging by reducing false low readings caused by arm movement, but the on-demand reading still takes 15 seconds—too slow for post-interval checks when you want a snapshot of your recovery. Heart rate accuracy was excellent: within ±1 BPM of the Polar H10 during steady-state runs, and ±2 BPM during HIIT. The Ultra 2’s dual-frequency GPS tracked my outdoor routes with only 0.3% drift over 10K, compared to a measured wheel. Battery life is the biggest compromise: with SpO2 monitoring active during sleep and workouts, you’ll charge every 36 hours. Buy this if you want an everyday smartwatch with decent recovery metrics and don’t mind the price. Skip it if your primary focus is workout-specific SpO2 data—the Garmin or COROS will serve you better.
Best for Sleep and Recovery: Oura Ring Gen 3 and Whoop 4.0
The Oura Ring Gen 3 ($299 + $5.99/month) is my go-to for sleep SpO2. It consistently detected nocturnal desaturations within 0.9% of the Nonin 9590, and its overnight trend graph is easy to read in the morning. During a week of sleep tracking, it flagged two nights where my SpO2 dipped to 90% for 5 minutes—likely due to a stuffy nose—and
Related: Best: Best Fitness Trackers for Swimming: Waterproof Wearables Tested
Buy Smarter Gear
Honest reviews and the best value picks, tested by us.
