HKQuantityTypeIdentifierOxygenSaturation — reading blood oxygen (SpO₂) from Apple Health

Apple stores blood oxygen under HKQuantityTypeIdentifierOxygenSaturation, and the number inside is not the percentage the Health app draws on screen.

Open your file

Drop your file here

export.zip straight from the Health app — do not unzip it

No account. No upload. The file is read on this device and never leaves it.

Nothing has been sent anywhere. 0 requests to this site, for the page's own code.

It is a fraction, not a percentage

The Health app shows 97%. The export stores 0.97. Apple gives SpO₂ as a fraction between 0 and 1, while almost every other source — Garmin, Oura, a pulse oximeter’s CSV — gives a whole-number percent. Read the file naively and every reading is off by 100×, and it looks almost right (a plausible 0.97) until you plot it against a device that says 97, and the two are a hundredfold apart.

Why the unit attribute is the only safe source

The scale is not something to assume from the identifier — Apple records a unit attribute on every sample, and that attribute is authoritative. Our parser reads it per record rather than hard-coding “fraction”, because a single export can mix units when a user changed region mid-history. This page applies the same rule to your file.

This identifier is one of dozens. The Apple Health data dictionary lists every identifier this parser reads, with its canonical type and unit.