Running Metrics API: Speed, Power, Stride Length and Running Form Data
Last verified October 18, 2026 · 5 min read
Covered here:Health ConnectHealthKit
Running dynamics arrived on the platforms at different times and in different units, and only some of them made it into a shared store. A form feature that works on an Apple Watch can find nothing to read on Android, and a feature built on a Bluetooth foot pod reads values the phone stores never hold. The shape of the problem is in the table.
What each platform has#
| Metric | Apple HealthKit | Wear OS Health Services | Android Health Connect | Bluetooth RSC |
|---|---|---|---|---|
| Speed | runningSpeed: distance per time | SPEED: meters per second | SpeedRecord: a Series of speed samples, aggregated as Velocity | Instantaneous Speed in 1/256 m/s |
| Pace | none | PACE: milliseconds per kilometer | none | none |
| Power | runningPower: power units | none | PowerRecord, described for cycling and rowing | none |
| Stride length | runningStrideLength: length units | STRIDE_LENGTH: meters, no page here | none | Instantaneous Stride Length in centimeters, optional |
| Vertical oscillation | runningVerticalOscillation: length units | VERTICAL_OSCILLATION: centimeters, no page here | none | none |
| Vertical ratio | none | VERTICAL_RATIO and VERTICAL_RATIO_STATS | none | none |
| Ground contact time | runningGroundContactTime: time units | GROUND_CONTACT_TIME: milliseconds, no page here | none | none |
| Cadence | none for running | STEPS_PER_MINUTE, covered by the step counting API | StepsCadenceRecord, same guide | Instantaneous Cadence per minute |
Read from Apple's documentation on 2026-10-02, Google's Health Services reference on 2026-10-04, its Health Connect reference on 2026-10-03 and the Bluetooth SIG's files on 2026-10-17. Wear OS's stride length, vertical oscillation and ground contact time are rows on the data-type table without pages of their own, because this site's thin-page rule holds them back.
The Google Health API has no running speed, power or form data type. Its exercise type carries a per-exercise summary with an average speed, an average pace and a mobilityMetrics field that Google says is "Only present in the advanced running exercises"; the discovery documents this site reads do not define that object's fields, and exercise data is outside this page's scope.
Apple's five types#
All five are discrete quantities available from iOS 16.0 and watchOS 9.0. Apple's descriptions:
runningSpeedmeasures "the runner’s speed."runningPowermeasures "the rate of work required for the runner to maintain their speed."runningStrideLengthmeasures "the distance covered by a single step while running."runningVerticalOscillationmeasures "pelvis vertical range of motion during a single running stride."runningGroundContactTimemeasures "the amount of time the runner’s foot is in contact with the ground while running."
Being discrete, each is averaged, or its minimum or maximum taken, in a statistics query; summing them gives a meaningless number.
Units: the same quantity in four scales#
- Speed: distance-per-time units you choose on iOS, meters per second on Wear OS,
Velocityin Health Connect's aggregates, 1/256 meter per second on Bluetooth. - Pace: only Wear OS has it, in milliseconds per kilometer, and Google notes it "Will be 0 if the user stops moving." A zero pace is a stop, not infinite speed.
- Stride length: meters on Wear OS, centimeters on Bluetooth, length units you choose on iOS. Google's Wear OS description, "Distance covered by a single step," matches Apple's single-step definition.
- Vertical oscillation: centimeters on Wear OS, which describes it as the distance "the center of mass moves up-and-down with each step"; Apple's is pelvis range of motion during a stride, in length units. The words differ as well as the units.
- Ground contact time: milliseconds as a
Longon Wear OS, time units on iOS.
Wear OS's VERTICAL_RATIO is "Vertical oscillation / stride length." Google's example in the same reference reads: "a vertical oscillation of 5.0cm and stride length .8m (80 cm) would have a vertical ratio of 0.625." Five divided by eighty is 0.0625, so the example's figure is ten times the ratio its own definition gives. Check the scale of real values on a device before you display them.
Speed is one type on Android and many on Apple#
Health Connect's SpeedRecord "Captures the user's speed, e.g. during running or cycling," and Wear OS has one SPEED. HealthKit makes the activity part of the type: runningSpeed, cyclingSpeed, walkingSpeed, rowingSpeed, crossCountrySkiingSpeed, paddleSportsSpeed, stairAscentSpeed and stairDescentSpeed. One of them needs care: Apple's abstract for paddleSportsSpeed is the same sentence as for distancePaddleSports, and its stored sentence says the samples measure cumulative values, where every other speed type says discrete. The cycling power API guide covers the cycling side.
Bluetooth RSC#
The RSC Measurement 0x2A53 characteristic always carries Instantaneous Speed, a uint16 in 1/256 m/s, and Instantaneous Cadence, a uint8 per minute. Flags bit 0 adds Instantaneous Stride Length, a uint16 in centimeters, and bit 1 adds Total Distance, a uint32 in tenths of a meter. Bit 2 is a walking-or-running status: 0 for walking, 1 for running. Our guide to reading cycling power, cadence and speed sensors lists it under the Running Speed and Cadence service 0x1814 and covers the subscription, the same pattern as the two cycling services.
Traps#
- An Apple-only feature by default. Stride, oscillation and ground contact have no Health Connect record, so an Android build reads them from Wear OS Health Services, or stride length alone from an RSC sensor, not from the store.
- Oscillation is defined two ways. Pelvis range of motion during a stride on Apple, center of mass with each step on Wear OS; do not compare across platforms.
- Zero pace. Filter it before averaging pace.
- Units at the boundary. Convert 1/256 m/s, milliseconds per kilometer and centimeters once, at ingestion.
- Permissions. Wear OS
SPEEDandPACEsit underACTIVITY_RECOGNITIONin Google's permissions table; the stride, oscillation, ground-contact and vertical-ratio types do not appear in that table at all.
Before you ship#
Re-read each type page before release; they regenerate from Apple's, Google's and the SIG's sources. Label every form metric with its platform's definition, test VERTICAL_RATIO's scale on a device, and plan the Android path through Wear OS or Bluetooth rather than Health Connect.
Running speed, power and form, by platform
Each type links its reference page on this site. The quote is the platform's own description of the type, copied from the generated reference data, and it is the reason the type is listed: nothing here is paired by name. A platform with nothing listed has no type with a page here whose description names this metric.
Google Health API · read 2026-10-17
Nothing listed.
Apple HealthKit · read 2026-10-02
- runningSpeed — discrete values · distance per time units · iOS 16.0+
“A quantity sample type that measures the runner’s speed.” — Apple
- runningPower — discrete values · power units · iOS 16.0+
“A quantity sample type that measures the rate of work required for the runner to maintain their speed.” — Apple
- runningStrideLength — discrete values · length units · iOS 16.0+
“A quantity sample type that measures the distance covered by a single step while running.” — Apple
- runningVerticalOscillation — discrete values · length units · iOS 16.0+
“A quantity sample type measuring pelvis vertical range of motion during a single running stride.” — Apple
- runningGroundContactTime — discrete values · time units · iOS 16.0+
“A quantity sample type that measures the amount of time the runner’s foot is in contact with the ground while running.” — Apple
Android Health Connect · read 2026-10-03
- SpeedRecord — Series record · Activity category · aggregates: SPEED_AVG, SPEED_MAX, SPEED_MIN
“Captures the user's speed, e.g. during running or cycling.” — Google
Wear OS Health Services · read 2026-10-04
- DataType.SPEED — DeltaDataType · SampleDataPoint<Double> · permission ACTIVITY_RECOGNITION
“Speed at a specific point in time, expressed as meters/second.” — Google
- DataType.PACE — DeltaDataType · SampleDataPoint<Double> · permission ACTIVITY_RECOGNITION
“Pace at a specific point in time.” — Google
- DataType.VERTICAL_RATIO — DeltaDataType · SampleDataPoint<Double> · no permission in Google's table
“Vertical oscillation / stride length.” — Google
- DataType.VERTICAL_RATIO_STATS — AggregateDataType · StatisticalDataPoint<Double> · no permission in Google's table
“Statistics on vertical oscillation / stride length.” — Google
Bluetooth GATT · read 2026-10-17
- RSC Measurement — 0x2A53 · 5 fields · flags-dependent layout
“The RSC Measurement characteristic is used to represent data related to a running speed and cadence (RSC) measurement.” — Bluetooth SIG
Frequently asked questions
- Does Health Connect have records for running stride length or ground contact time?
- No. Google's Health Connect reference, read on 2026-10-03, has no stride length, vertical oscillation or ground contact time record. It has SpeedRecord, a Series of speed samples described as covering running or cycling, and PowerRecord, which Google describes with cycling and rowing as examples. On Wear OS, Health Services declares STRIDE_LENGTH, VERTICAL_OSCILLATION and GROUND_CONTACT_TIME as data types, each with a statistics counterpart.
- What unit is Wear OS pace in?
- Milliseconds per kilometer. Google's Health Services reference describes PACE as pace at a specific point in time that will be 0 if the user stops moving and is otherwise in milliseconds per kilometer, delivered as a SampleDataPoint of Double, with PACE_STATS for the exercise. Filter zero values before averaging, because they mark stops, not a pace.
- Is vertical oscillation measured the same way on Apple Watch and Wear OS?
- Not by the platforms' own definitions. Apple describes runningVerticalOscillation as pelvis vertical range of motion during a single running stride, stored in length units. Google describes Wear OS VERTICAL_OSCILLATION as the distance the center of mass moves up and down with each step, in centimeters. One is per stride and the other per step, so label each value with its source rather than comparing them.
- Which iOS version added HealthKit running power and stride length?
- iOS 16.0, with watchOS 9.0. Apple's availability data gives the same versions for all five running types: runningSpeed, runningPower, runningStrideLength, runningVerticalOscillation and runningGroundContactTime. Each is a discrete quantity, so an HKStatisticsQuery averages it or takes its minimum or maximum rather than summing it.
Keep reading
Elsewhere on the site
Pages that share this one’s concepts and sources, from other sections.
Next steps
Was this page useful?
Independent comparison, last reviewed October 18, 2026. Pricing, rate limits, and feature availability change often — confirm current details in each provider’s official documentation before you commit. Product and company names are trademarks of their respective owners; AIFitnessAPI is not affiliated with, endorsed by, or sponsored by any product listed here.
← All health data · by AIFitnessAPI