Sum it or average it?
Apple states whether a quantity type accumulates or is measured point-in-time in the type’s prose, not as a property you can read — so the wrong HKStatisticsQuery option returns a plausible, wrong number instead of an error. Type an identifier below and this returns the answer for it, with Apple’s own sentence as the evidence. Of the 121 quantity types read from Apple’s documentation on 2026-10-02, 64 are described as cumulative and 53 as discrete; for 4 Apple’s wording does not say and neither does this tool.
121 quantity types and 30 category types, read from Apple’s documentation on 2026-10-02. Arrow keys to move, Enter to pick, Escape to close.
Pick an identifier to see whether Apple describes it as cumulative or discrete — and the sentence that says so.
Why the wrong choice stays silent
Most products do not aggregate inside HealthKit. They read raw samples, write them into their own database and roll them up later in SQL or a worker, and from then on nothing in the table remembers which kind of quantity a row holds, so a SUM() runs happily over heart rates. Averaging a cumulative type gives the mean of whatever chunks the device chose to write, which changes between a phone and a watch. Summing a discrete type gives a number that grows with how many samples exist. Neither throws, and neither fails a test written against a fixture built on the same wrong assumption.
The test that needs no lookup: should doubling the time window roughly double the number? Distance and energy do; a heart rate or a body weight does not. When the answer is not obvious, look the type up above, then store its aggregation style next to every value you write into your own schema, so the rollup code can refuse to sum something it should not. Where Apple states no style, do not build a rollup on an assumption. As of September 1, 2026 that meant three quantity types, appleSleepingBreathingDisturbances, estimatedWorkoutEffortScore and workoutEffortScore, and the October 2, 2026 read added heartRateVariabilityRMSSD. Show the samples you have, or probe the behaviour yourself and write down what you found.
How this works
Everything runs client-side from this site’s published dataset — no API call and no lookup service. The 151 rows behind the type-ahead were read from Apple’s documentation on 2026-10-02 by scripts/fetch-healthkit-identifiers.mjs.
Aggregation style and unit family are the only derived fields in that dataset: Apple states both in prose rather than as machine-readable properties, so the sentence each was derived from is stored beside it and shown here verbatim. Where Apple’s wording does not state a value, the field is null and this tool renders not stated rather than a guess. The read-only flag works the same way — it is set only where Apple explicitly says the samples cannot be saved, and its evidence sentence sits behind the chip.
The whole dataset is downloadable as JSON and CSV — open datasets, CC BY 4.0.
A free tool from AIFitnessAPI. The full table is every HealthKit type identifier; the enums that decode a category sample are at every HKCategoryValue enum. More at free tools for health-app builders.