Skip to content
AF
HealthKit reference

HealthKit's 21 Exercise Constants

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

21 HealthKit workout activity constants for gym training. No units, no aggregation, no values, and ten are documented in a single sentence each.

Apple's Exercise and fitness group is 21 identifiers, and not one of them measures anything. All 21 belong to the workoutActivity family, which makes them constants you attach to a workout rather than sample types that produce values. The aggregation, unit family and value columns are empty for the whole group, and empty is the correct answer there rather than a hole in the data. The group comes from this site's HealthKit identifier dataset, parsed from Apple's developer documentation on 2026-08-28.

The constant-versus-measurement distinction catches people on first contact with the framework. A quantity type produces samples, each with a number, a unit, a start time and an end time. A workout activity constant produces nothing. It is one label, chosen when a session starts, saying what kind of session this was. Picking highIntensityIntervalTraining does not make HealthKit record intervals, and picking traditionalStrengthTraining does not make it record sets or reps. Everything numeric about the session arrives from elsewhere, which is why products that need per-rep detail run their own workout detection beside the store.

Nine of the 21 date to iOS 8.0: cycling, elliptical, running, walking, stairClimbing, crossTraining, functionalStrengthTraining, traditionalStrengthTraining and preparationAndRecovery. Eight more arrived in 10.0, among them coreTraining, highIntensityIntervalTraining, flexibility, jumpRope, stepTraining and stairs. iOS 11.0 added handCycling and mixedCardio, 13.0 added fitnessGaming for fitness-based video games, and 14.0 added cooldown. So the group grew in two bursts and has barely moved since.

The pair that causes the most grief is traditionalStrengthTraining and functionalStrengthTraining, both from iOS 8.0. Apple separates them by equipment. Traditional is strength training exercises primarily using machines or free weights; functional is strength training primarily with free weights and body weight. Free weights sit in both definitions. Let users choose freely and the same barbell session lands under both labels across your user base, which quietly breaks every filter and chart you build on top.

Two more pairs are worth settling before you build a picker. stairClimbing is for a stair climbing machine, while stairs is for running, walking or drills on real stairs, and Apple's abstract names a stadium or a multilevel building as examples. preparationAndRecovery from iOS 8.0 covers warm-up and therapeutic work such as foam rolling and stretching, while cooldown from 14.0 covers low intensity stretching and mobility exercises following a more vigorous workout. Both are stretching. What separates them is which side of the session they sit on.

Wheelchair users have wheelchairWalkPace and wheelchairRunPace from iOS 10.0, labelling a wheelchair workout at each pace, plus handCycling from 11.0. If your workout type picker omits all three, those users have no way to record what they actually did.

No identifier in this group has a verified Android counterpart in our cross-platform matrix, so treat the whole group as Apple-only until verified and expect the Android mapping to be hand-written. For the plumbing around the constant, the HealthKit integration guide covers permissions and reads, and watchOS workout app anatomy covers where in a session the constant is actually chosen. If the gym is your product, the strength training app guide covers what has to sit beside HealthKit to make a set and rep log work at all.

The 21 identifiers in exercise and fitness activities

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
cooldownHKWorkoutActivityTypeCooldownThe constant for low intensity stretching and mobility exercises following a more vigorous workout.14.0not verified
coreTrainingHKWorkoutActivityTypeCoreTrainingThe constant for core training.10.0not verified
crossTrainingHKWorkoutActivityTypeCrossTrainingThe constant for exercise that includes any mixture of cardio, strength, and/or flexibility training.8.0not verified
cyclingHKWorkoutActivityTypeCyclingThe constant for cycling.8.0not verified
ellipticalHKWorkoutActivityTypeEllipticalThe constant for workouts on an elliptical machine.8.0not verified
fitnessGamingHKWorkoutActivityTypeFitnessGamingThe constant for playing fitness-based video games.13.0not verified
flexibilityHKWorkoutActivityTypeFlexibilityThe constant for a flexibility workout.10.0not verified
functionalStrengthTrainingHKWorkoutActivityTypeFunctionalStrengthTrainingThe constant for strength training, primarily with free weights and body weight.8.0not verified
handCyclingHKWorkoutActivityTypeHandCyclingThe constant for hand cycling.11.0not verified
highIntensityIntervalTrainingHKWorkoutActivityTypeHighIntensityIntervalTrainingThe constant for high intensity interval training.10.0not verified
jumpRopeHKWorkoutActivityTypeJumpRopeThe constant for jumping rope.10.0not verified
mixedCardioHKWorkoutActivityTypeMixedCardioThe constant for workouts that mix a variety of cardio exercise machines or modalities.11.0not verified
preparationAndRecoveryHKWorkoutActivityTypePreparationAndRecoveryThe constant for warm-up and therapeutic activities like foam rolling and stretching.8.0not verified
runningHKWorkoutActivityTypeRunningThe constant for running and jogging.8.0not verified
stairClimbingHKWorkoutActivityTypeStairClimbingThe constant for workouts using a stair climbing machine.8.0not verified
stairsHKWorkoutActivityTypeStairsThe constant for running, walking, or other drills using stairs (for example, in a stadium or inside a multilevel building).10.0not verified
stepTrainingHKWorkoutActivityTypeStepTrainingThe constant for training using a step bench.10.0not verified
traditionalStrengthTrainingHKWorkoutActivityTypeTraditionalStrengthTrainingThe constant for strength training exercises primarily using machines or free weights.8.0not verified
walkingHKWorkoutActivityTypeWalkingThe constant for walking.8.0not verified
wheelchairRunPaceHKWorkoutActivityTypeWheelchairRunPaceThe constant for wheelchair workout at running pace.10.0not verified
wheelchairWalkPaceHKWorkoutActivityTypeWheelchairWalkPaceThe constant for a wheelchair workout at walking pace.10.0not verified

What will bite you

Ten of the 21 ship with a one-line abstract and no discussion whatsoever: crossTraining, fitnessGaming, flexibility, handCycling, jumpRope, mixedCardio, preparationAndRecovery, stairs, stepTraining and traditionalStrengthTraining. That last one is the label most gym products reach for first, and Apple gives it a single sentence. Anything else you believe about it comes from you.

Empty columns are not gaps waiting to be filled. If your ingestion pipeline treats this group the way it treats quantity types, every row lands with a null aggregation and a null unit, and eventually somebody files a bug against the dataset. There is nothing here to sum or average. A workout has a duration, a type, and measurements that live in other groups.

crossTraining and mixedCardio overlap by definition. Cross training is any mixture of cardio, strength or flexibility work; mixed cardio is a mix of cardio machines or modalities. A circuit class fits both. crossTraining shipped in iOS 8.0 and mixedCardio in 11.0, so older sessions in your database carry the older label for workouts you would tag the newer way today.

The mapping is permanent in practice. A constant is chosen once when the session starts, and it is what every later filter, export and chart keys on. Change your mapping in version 4 and version 3's history stays under the old label forever. Decide the mapping before launch and write down why.

Questions

What is a HealthKit workout activity constant?
A label rather than a measurement. All 21 identifiers in the Exercise and fitness group are workoutActivity constants, which means they carry no unit, no aggregation style and no value. You choose one when a workout session starts to say what kind of session it was, and the numbers inside the session come from quantity types instead.
Should I use traditionalStrengthTraining or functionalStrengthTraining?
Apple splits them by equipment. Traditional is strength training primarily using machines or free weights, functional is primarily free weights and body weight, so free weights appear in both definitions. Both shipped in iOS 8.0. Pick one rule for your product, apply it in code rather than leaving it to the user, and keep it stable across releases.
How many exercise and fitness constants does HealthKit have?
21, and every one of them is a workoutActivity constant. Nine date back to iOS 8.0, eight more arrived in iOS 10.0, two in 11.0, one in 13.0 and one in 14.0. The newest is cooldown, for low intensity stretching and mobility exercises following a more vigorous workout.

All 21 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