Skip to content
AF
HealthKit reference

The 37 HealthKit Activity Types

37 identifiers · read from Apple’s documentation on 2026-08-28

37 HealthKit activity types: 20 cumulative, 13 discrete, 2 documented in name only. Nine arrived in iOS 18.0. Which ones you sum and which you average.

Apple's Activity group holds 37 type identifiers. Thirty-five of them are quantity types, which carry a number and a unit. Two are category types, which carry an enum value instead. This is the corner of HealthKit most fitness products read first, and it is where the quietest mistakes live. Everything below comes from this site's HealthKit identifier dataset, parsed from Apple's developer documentation on 2026-08-28.

The 35 quantity types split 20 cumulative, 13 discrete, and 2 that state no aggregation style at all. The cumulative twenty are daily totals. stepCount, distanceWalkingRunning, activeEnergyBurned and flightsClimbed all state cumulative, so summing them over a window is right and averaging them describes the device's write cadence rather than the user. The discrete thirteen are readings taken at a moment: cyclingPower, runningSpeed, vo2Max and the rest of the per-sport telemetry. Sum a discrete type and the number grows with how long the watch was worn. Nothing throws either way, which is why the split gets its own page.

Eight unit families appear across the group: count, counts per minute, distance per time, energy, length, power, time, and volume/mass/time. That last one belongs to vo2Max alone, which also carries 323 words of discussion, more than any other identifier here, and is worth reading before you put a number on a screen. Not everything has a unit family. physicalEffort states discrete aggregation and no unit family, and neither category type has one, because a category type carries an enum rather than a measurement.

Four identifiers back the Activity rings. appleExerciseTime (iOS 9.3), appleStandTime (13.0) and appleMoveTime (14.5) are all cumulative amounts of time, and Apple scopes the appleMoveTime abstract to a specified day. appleStandHour is the outlier: a category type from iOS 9.0 whose abstract counts hours in which the user stood and moved for at least a minute, but whose value is HKCategoryValueAppleStandHour.

The group keeps growing, and recently. Nine of the 37 arrived in iOS 18.0, five in 17.0 and five in 16.0, against seven that date to iOS 8.0. Apple has been adding per-sport telemetry release by release. iOS 16.0 brought running form: runningGroundContactTime, runningPower, runningSpeed, runningStrideLength and runningVerticalOscillation, the last measuring pelvis vertical range of motion during a single stride. iOS 17.0 brought cycling: cyclingCadence, cyclingPower, cyclingSpeed and cyclingFunctionalThresholdPower, which Apple defines as the estimated maximum average power sustained over 60 minutes on a bike. iOS 18.0 brought distances for rowing, cross country skiing, skating and paddling, plus a speed for each of those except skating. Availability is per release, so a metric added in 18.0 does not exist on a device that has not been updated.

Wheelchair users have had their own pair since iOS 10.0. pushCount counts pushes performed while using a wheelchair and distanceWheelchair measures distance moved that way, both cumulative. If step count is the only movement metric your app reads, those users register as sedentary.

Four types in the group have Android counterparts we have verified: activeEnergyBurned and basalEnergyBurned both against ActiveCaloriesBurnedRecord and TotalCaloriesBurnedRecord, stepCount against StepsRecord and StepsCadenceRecord, and vo2Max against Vo2MaxRecord. Everything else here is Apple-only until we verify a counterpart, which is a statement about our checking rather than about Android. The cross-platform matrix shows how those four line up, and the reference pages on step counting and calorie tracking cover what each is made of on both platforms.

The 37 identifiers in activity

Every field is joined from Apple’s documentation. Aggregation style and unit family are the two Apple states only in prose — where its wording does not state one, this table says so rather than guessing. Android names appear only where the mapping is verified on both platforms.

IdentifierWhat it isAggregateUnitiOSAndroid
activeEnergyBurnedHKQuantityTypeIdentifierActiveEnergyBurnedA quantity sample type that measures the amount of active energy the user has burned..cumulativeSumenergy8.0ActiveCaloriesBurnedRecord, TotalCaloriesBurnedRecord
appleExerciseTimeHKQuantityTypeIdentifierAppleExerciseTimeA quantity sample type that measures the amount of time the user spent exercising..cumulativeSumtime9.3not verified
appleMoveTimeHKQuantityTypeIdentifierAppleMoveTimeA quantity sample type that measures the amount of time the user has spent performing activities that involve full-body movements during the specified day..cumulativeSumtime14.5not verified
appleStandTimeHKQuantityTypeIdentifierAppleStandTimeA quantity sample type that measures the amount of time the user has spent standing..cumulativeSumtime13.0not verified
basalEnergyBurnedHKQuantityTypeIdentifierBasalEnergyBurnedA quantity sample type that measures the resting energy burned by the user..cumulativeSumenergy8.0ActiveCaloriesBurnedRecord, TotalCaloriesBurnedRecord
crossCountrySkiingSpeedHKQuantityTypeIdentifierCrossCountrySkiingSpeedA quantity sample type that measures how fast you are traveling while cross country skiing..discreteAveragedistance per time18.0not verified
cyclingCadenceHKQuantityTypeIdentifierCyclingCadenceA quantity sample type that represents the rate at which the user is pedaling..discreteAveragecounts per minute17.0not verified
cyclingFunctionalThresholdPowerHKQuantityTypeIdentifierCyclingFunctionalThresholdPowerA quantity sample type that measures the estimated maximum average power sustained while riding a bike for 60 minutes..discreteAveragepower17.0not verified
cyclingPowerHKQuantityTypeIdentifierCyclingPowerA quantity sample type that measures the estimated power being used while riding a bike..discreteAveragepower17.0not verified
cyclingSpeedHKQuantityTypeIdentifierCyclingSpeedA quantity sample type that measures how fast you are traveling while riding a bike..discreteAveragedistance per time17.0not verified
distanceCrossCountrySkiingHKQuantityTypeIdentifierDistanceCrossCountrySkiingA quantity sample type that measures the distance the user has moved by cross country skiing..cumulativeSumlength18.0not verified
distanceCyclingHKQuantityTypeIdentifierDistanceCyclingA quantity sample type that measures the distance the user has moved by cycling..cumulativeSumlength8.0not verified
distanceDownhillSnowSportsHKQuantityTypeIdentifierDistanceDownhillSnowSportsA quantity sample type that measures the distance the user has traveled while skiing or snowboarding..cumulativeSumlength11.2not verified
distancePaddleSportsHKQuantityTypeIdentifierDistancePaddleSportsA quantity sample type that measures the distance the user has moved by paddling sports..cumulativeSumlength18.0not verified
distanceRowingHKQuantityTypeIdentifierDistanceRowingA quantity sample type that measures the distance the user has moved by rowing..cumulativeSumlength18.0not verified
distanceSkatingSportsHKQuantityTypeIdentifierDistanceSkatingSportsA quantity sample type that measures the distance the user has moved by skating..cumulativeSumlength18.0not verified
distanceSwimmingHKQuantityTypeIdentifierDistanceSwimmingA quantity sample type that measures the distance the user has moved while swimming..cumulativeSumlength10.0not verified
distanceWalkingRunningHKQuantityTypeIdentifierDistanceWalkingRunningA quantity sample type that measures the distance the user has moved by walking or running..cumulativeSumlength8.0not verified
distanceWheelchairHKQuantityTypeIdentifierDistanceWheelchairA quantity sample type that measures the distance the user has moved using a wheelchair..cumulativeSumlength10.0not verified
estimatedWorkoutEffortScoreHKQuantityTypeIdentifierEstimatedWorkoutEffortScoreNo abstract published.not stated18.0not verified
flightsClimbedHKQuantityTypeIdentifierFlightsClimbedA quantity sample type that measures the number flights of stairs that the user has climbed..cumulativeSumcount8.0not verified
nikeFuelHKQuantityTypeIdentifierNikeFuelA quantity sample type that measures the number of NikeFuel points the user has earned..cumulativeSumcount8.0not verified
paddleSportsSpeedHKQuantityTypeIdentifierPaddleSportsSpeedA quantity sample type that measures the distance the user has moved by paddling sports..cumulativeSumdistance per time18.0not verified
physicalEffortHKQuantityTypeIdentifierPhysicalEffortA quantity sample type that measures the estimated amount of energy being used to perform a task excluding other factors such as temperature, altitude, or heart rate..discreteAverage17.0not verified
pushCountHKQuantityTypeIdentifierPushCountA quantity sample type that measures the number of pushes that the user has performed while using a wheelchair..cumulativeSumcount10.0not verified
rowingSpeedHKQuantityTypeIdentifierRowingSpeedA quantity sample type that measures how fast the rower is moving..discreteAveragedistance per time18.0not verified
runningGroundContactTimeHKQuantityTypeIdentifierRunningGroundContactTimeA quantity sample type that measures the amount of time the runner’s foot is in contact with the ground while running..discreteAveragetime16.0not verified
runningPowerHKQuantityTypeIdentifierRunningPowerA quantity sample type that measures the rate of work required for the runner to maintain their speed..discreteAveragepower16.0not verified
runningSpeedHKQuantityTypeIdentifierRunningSpeedA quantity sample type that measures the runner’s speed..discreteAveragedistance per time16.0not verified
runningStrideLengthHKQuantityTypeIdentifierRunningStrideLengthA quantity sample type that measures the distance covered by a single step while running..discreteAveragelength16.0not verified
runningVerticalOscillationHKQuantityTypeIdentifierRunningVerticalOscillationA quantity sample type measuring pelvis vertical range of motion during a single running stride..discreteAveragelength16.0not verified
stepCountHKQuantityTypeIdentifierStepCountA quantity sample type that measures the number of steps the user has taken..cumulativeSumcount8.0StepsRecord, StepsCadenceRecord
swimmingStrokeCountHKQuantityTypeIdentifierSwimmingStrokeCountA quantity sample type that measures the number of strokes performed while swimming..cumulativeSumcount10.0not verified
vo2MaxHKQuantityTypeIdentifierVO2MaxA quantity sample that measures the maximal oxygen consumption during exercise..discreteAveragevolume/mass/time11.0Vo2MaxRecord
workoutEffortScoreHKQuantityTypeIdentifierWorkoutEffortScoreNo abstract published.not stated18.0not verified
appleStandHourHKCategoryTypeIdentifierAppleStandHourA category sample type that counts the number of hours in the day during which the user has stood and moved for at least one minute per hour.enum — HKCategoryValueAppleStandHour9.0not verified
lowCardioFitnessEventread-onlyHKCategoryTypeIdentifierLowCardioFitnessEventAn event that indicates the user’s VO2 max values consistently fall below a particular aerobic fitness threshold.enum — HKCategoryValueLowCardioFitnessEvent14.3not verified

What will bite you

Two identifiers here are documented in name only. estimatedWorkoutEffortScore and workoutEffortScore both arrived in iOS 18.0 with no abstract, no aggregation style, no unit family and no discussion. You cannot tell from Apple's page whether they sum, average, or what scale they use. Do not put either into a weekly rollup on the strength of a guess. Show the raw samples, or probe the behaviour yourself and write down what you found.

paddleSportsSpeed looks like a documentation bug. Its abstract is word for word the abstract of distancePaddleSports, "measures the distance the user has moved by paddling sports", and it is the only type in the group with a distance-per-time unit family that states cumulative aggregation. Every other speed here is discrete. Treat that stated aggregation as unverified and look at real samples before you sum anything.

appleStandHour reads like a number and is not one. The abstract counts hours, the family is category, and the value is HKCategoryValueAppleStandHour. Code expecting a quantity gets nothing back. lowCardioFitnessEvent has the same shape, carrying HKCategoryValueLowCardioFitnessEvent, and its abstract describes an event indicating that VO2 max values consistently fall below an aerobic fitness threshold. It is a flag, not a series you can chart.

physicalEffort states discrete aggregation and no unit family. So you know not to sum it, and you do not know what the number is in.

Questions

How many activity types does HealthKit have?
Apple's Activity group holds 37 type identifiers in the documentation this site parses. Thirty-five are quantity types carrying a number and a unit, and two are category types carrying an enum value. The group covers steps, distances, energy, the Activity ring timers, and the per-sport speed and power metrics Apple has added since iOS 16.0.
Which HealthKit activity types should I sum?
The 20 quantity types that state cumulative aggregation, which includes stepCount, distanceWalkingRunning, activeEnergyBurned, flightsClimbed and the sport distances. Thirteen state discrete instead, so speeds, powers, cadence and vo2Max want an average, a minimum, a maximum or the latest value. Two state nothing at all, so neither operation is safe on them.
Do HealthKit activity types map to Android Health Connect?
Four of them do in our verified matrix. activeEnergyBurned and basalEnergyBurned line up with ActiveCaloriesBurnedRecord and TotalCaloriesBurnedRecord, stepCount with StepsRecord and StepsCadenceRecord, and vo2Max with Vo2MaxRecord. The rest of the group has no counterpart we have confirmed, so settle the Android side of a cycling or running metric before you promise it.

All 37 identifiers above were read from Apple’s documentation on 2026-08-28. See the full 240-identifier table for every group at once, or the datasets for the same data as JSON and CSV. Apple’s abstracts are quoted for identification; the grouping, the aggregation split and the cross-platform mapping are AIFitnessAPI’s.

← All HealthKit groups