HealthKit Mobility: 9 Gait Metrics
9 identifiers · read from Apple’s documentation on 2026-08-28
Nine HealthKit identifiers make up the Mobility group: gait figures the system derives from walking, rather than from anything a user starts. Eight are quantity types and one is a category type. Seven of the nine arrived in iOS 14.0 and the other two in iOS 15.0, so the whole group has been in the framework for longer than most of the integrations that ignore it.
What separates this group from the rest of HealthKit is where the numbers come from. These are not measurements a user starts. Four of the eight quantity types define themselves in their own abstracts against ordinary walking: walkingSpeed is the average speed when walking steadily over flat ground, walkingStepLength is the average length of a step under the same conditions, walkingDoubleSupportPercentage is the percentage of time both feet touch the ground while walking steadily over flat ground, and walkingAsymmetryPercentage is the percentage of steps in which one foot moves at a different speed than the other on flat ground. Nothing in those definitions describes a workout, a session, or a device the user has to put on. The subject is walking itself.
stairAscentSpeed and stairDescentSpeed cover the same idea on stairs, one for climbing and one for descending, and they are stored as two distinct identifiers rather than one signed value. sixMinuteWalkTestDistance is the outlier: it stores the distance a user can walk during a six-minute walk test, which is an assessment rather than a passive by-product, and it carries by far the longest discussion text in the group. appleWalkingSteadiness is a percentage measuring the steadiness of the user's gait.
The one category type is appleWalkingSteadinessEvent, which records an incident where the user showed a reduced score for their gait's steadiness. It carries its own dedicated value enum, HKCategoryValueAppleWalkingSteadinessEvent, rather than the generic one, and like every category type it has neither a unit nor an aggregation style.
All eight quantity types state discrete aggregation. Not one is cumulative. That matters more here than it looks, because several of these are percentages and speeds that a naive weekly rollup would happily add together. The correct operations are average, minimum, maximum, and latest, and a gap in the series is an absence rather than a zero. Their unit families are distance, distance per time, distance/time, length, and percentage, which is five labels for three physical dimensions. See the traps below for why that matters.
Nothing in this group has a verified Android counterpart in this site's cross-platform matrix. Every one of the nine is Apple-only until verified, and that is the single most important planning fact about the group: a feature built on walking asymmetry or stair speed has no shipping equivalent on the other platform, so it belongs in an iOS-specific surface rather than in a shared one. Integrating HealthKit covers the authorisation side, and why these types stay unused covers the rest of the reason.
One boundary is worth stating plainly. This page describes what each identifier records and how it is stored, and stops there. Apple's abstracts describe gait mechanics; they do not license an app to tell a user what those mechanics mean about them. The moment a product turns these values into a screening result, a risk score, or advice, the question stops being an API question and becomes a regulatory one. Start at FDA regulation for fitness apps before you design that screen, not after.
The identifier list, aggregation styles, unit families, and availability versions here were parsed from Apple's developer documentation on 2026-08-28 and are published in full on the identifier reference.
The 9 identifiers in mobility
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.
| Identifier | What it is | Aggregate | Unit | iOS | Android |
|---|---|---|---|---|---|
| appleWalkingSteadinessread-onlyHKQuantityTypeIdentifierAppleWalkingSteadiness | A quantity sample type that measures the steadiness of the user’s gait. | .discreteAverage | percentage | 15.0 | not verified |
| sixMinuteWalkTestDistanceHKQuantityTypeIdentifierSixMinuteWalkTestDistance | A quantity sample type that stores the distance a user can walk during a six-minute walk test. | .discreteAverage | length | 14.0 | not verified |
| stairAscentSpeedHKQuantityTypeIdentifierStairAscentSpeed | A quantity sample type measuring the user’s speed while climbing a flight of stairs. | .discreteAverage | distance/time | 14.0 | not verified |
| stairDescentSpeedHKQuantityTypeIdentifierStairDescentSpeed | A quantity sample type measuring the user’s speed while descending a flight of stairs. | .discreteAverage | distance/time | 14.0 | not verified |
| walkingAsymmetryPercentageHKQuantityTypeIdentifierWalkingAsymmetryPercentage | A quantity sample type that measures the percentage of steps in which one foot moves at a different speed than the other when walking on flat ground. | .discreteAverage | percentage | 14.0 | not verified |
| walkingDoubleSupportPercentageHKQuantityTypeIdentifierWalkingDoubleSupportPercentage | A quantity sample type that measures the percentage of time when both of the user’s feet touch the ground while walking steadily over flat ground. | .discreteAverage | percentage | 14.0 | not verified |
| walkingSpeedHKQuantityTypeIdentifierWalkingSpeed | A quantity sample type that measures the user’s average speed when walking steadily over flat ground. | .discreteAverage | distance per time | 14.0 | not verified |
| walkingStepLengthHKQuantityTypeIdentifierWalkingStepLength | A quantity sample type that measures the average length of the user’s step when walking steadily over flat ground. | .discreteAverage | distance | 14.0 | not verified |
| appleWalkingSteadinessEventread-onlyHKCategoryTypeIdentifierAppleWalkingSteadinessEvent | A category sample type that records an incident where the user showed a reduced score for their gait’s steadiness. | enum — HKCategoryValueAppleWalkingSteadinessEvent | — | 15.0 | not verified |
What will bite you
No verified Android side. This site's matrix has no confirmed Health Connect counterpart for any of the nine. If your roadmap has a single mobility screen serving both platforms, the iOS half will populate and the Android half will render an empty state you have to design for. Treat the group as an iOS-only capability until a mapping is verified, and decide up front whether a platform-exclusive surface is acceptable in your product.
Five unit-family labels, three dimensions. walkingSpeed is filed under distance per time, while stairAscentSpeed and stairDescentSpeed are filed under distance/time. walkingStepLength is filed under distance and sixMinuteWalkTestDistance under length. Same physics, different strings. Code that normalises or converts by matching on the unit-family label will silently miss half of them; branch on the identifier instead.
The steadiness pair is two different shapes. appleWalkingSteadiness is a quantity type with a percentage unit family. appleWalkingSteadinessEvent is a category type with its own enum, HKCategoryValueAppleWalkingSteadinessEvent, and no unit at all. The names differ by one word and the read path differs completely. Requesting authorisation for one does not give you the other.
Gaps are not zeros. All eight quantity types are discrete, so a day with no sample means no walking was measured, not that the user walked with zero asymmetry. Writing a zero into a chart on a missing day invents a data point that Apple never recorded.
Questions
- What are the HealthKit mobility types?
- Nine identifiers: walking speed, step length, asymmetry percentage, double support percentage, stair ascent speed, stair descent speed, six-minute walk test distance, and walking steadiness, plus one category type for a walking steadiness event. Eight are quantity types and one is a category type, and seven of the nine shipped in iOS 14.0.
- Do HealthKit mobility metrics have Health Connect equivalents?
- None of the nine has a counterpart confirmed in this site's cross-platform matrix, so all of them count as Apple-only until a mapping is verified. In practice that means a mobility feature has no shipping Android twin today and should live in an iOS-specific part of your product rather than a shared screen.
- Can I add up walking asymmetry over a week?
- No. All eight quantity types in the group state discrete aggregation, which means each sample is a reading rather than a portion of a total. Averaging across a window is meaningful, and so are the minimum, maximum, and most recent value. Summing produces a figure that scales with how many samples exist.
All 9 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.