Skip to content
AF

Health Connect Records We Verified

10 metrics verified on both platforms · 10 carry a cross-platform caveat · HealthKit side read 2026-08-28

10 metrics verified on both Health Connect and HealthKit, with record names and the structural mismatches. A verified subset, not Google's full catalog.

Start with what this page is not. It is not a catalogue of Health Connect. Google documents the full set of record types, and that set is larger than what appears here. This page lists the 10 metrics this site has verified on both platforms — checked against Apple's documentation and Google's, and listed only once both sides were read. Everything else is absent because it has not been checked yet, not because it does not exist.

With that said, the 10 are the ones a fitness app reaches for first, and the interesting part is not that both platforms have them. It is the shape of the mismatch when you try to write one schema over both.

Heart rate is HeartRateRecord and RestingHeartRateRecord against Apple's heartRate and restingHeartRate. Both platforms give you samples plus a separate resting value, which is a favour — do not derive resting yourself.

HRV is the one that looks aligned and is not. HeartRateVariabilityRmssdRecord against heartRateVariabilitySDNN. Apple stores SDNN, Health Connect stores RMSSD, and they are different measures that are not interconvertible. SDNN vs RMSSD is the long version.

VO2 max is Vo2MaxRecord against vo2Max — an estimate on both platforms rather than a lab measurement, with Health Connect additionally tagging a measurement method.

Blood oxygen is OxygenSaturationRecord against oxygenSaturation. The type existing does not mean data exists: SpO2 is device-gated, and Apple Watch availability in the US has been subject to litigation, so verify current status rather than assuming.

Sleep is the structural mismatch. Apple gives you HKCategoryTypeIdentifier.sleepAnalysis, a category type whose values are inBed, awake, asleepCore, asleepDeep, asleepREM and asleepUnspecified. Health Connect gives you SleepSessionRecord, a session that carries stages. Stage vocabularies differ between them and stages are estimated rather than measured, so a shared "sleep quality" score computed across both platforms is comparing two different estimators.

Steps is StepsRecord and StepsCadenceRecord against stepCount, with CMPedometer for live counts on iOS. Both sides need de-duplication, since a phone and a watch can write the same walk. On Android there is one extra rule: from the June 2026 update on-device steps are attributed to a per-device Synthetic Package Name, which you read via getCurrentDeviceDataSource() and never hardcode.

Workouts is ExerciseSessionRecord and PlannedExerciseSessionRecord against HKWorkout and HKWorkoutBuilder. The activity-type taxonomies differ, so map them explicitly rather than by matching names.

GPS routes is ExerciseRoute with ExerciseRoute.Location against HKWorkoutRoute and HKWorkoutRouteQuery. Health Connect gates routes behind its own permission, READ_EXERCISE_ROUTES, and restricts background reads of other apps' routes.

Calories is the asymmetry to watch: ActiveCaloriesBurnedRecord and TotalCaloriesBurnedRecord against activeEnergyBurned and basalEnergyBurned. Apple splits active and basal; Android offers active and total. Both are modelled estimates.

Body composition is one Apple concept against a shelf of records: WeightRecord, BodyFatRecord, LeanBodyMassRecord, BoneMassRecord, BodyWaterMassRecord and BasalMetabolicRateRecord against bodyMass, bodyFatPercentage, leanBodyMass and bodyMassIndex. The store holds it, but something has to write it — usually a smart scale or a manual entry.

The full side-by-side with the watch-outs is the cross-platform matrix. For the platform-level comparison see HealthKit vs Health Connect, for setup integrate Health Connect, and for the Apple side the HealthKit identifier dataset.

HealthKit type → Health Connect record

10metrics, each confirmed against Apple’s and Google’s own documentation. A pairing here means the two platforms expose the same metric — not that the values are interchangeable, which is what the caveat column is for.

MetricApple HealthKitAndroid Health ConnectWatch out
Heart rateHKQuantityTypeIdentifier.heartRate, .restingHeartRateHeartRateRecord, RestingHeartRateRecordBoth expose samples plus a separate resting value — don't derive resting yourself.
HRVHKQuantityTypeIdentifier.heartRateVariabilitySDNNHeartRateVariabilityRmssdRecordThe big one: Apple stores SDNN, Health Connect stores RMSSD. They are different measures and are not interconvertible — do not normalize one into the other.
VO2 maxHKQuantityTypeIdentifier.vo2MaxVo2MaxRecordAn estimate on both platforms, not a lab measurement. Health Connect tags a measurement method.
Blood oxygenHKQuantityTypeIdentifier.oxygenSaturationOxygenSaturationRecordThe type existing doesn't mean data exists — SpO2 is device-gated, and Apple Watch availability in the US has been subject to litigation. Verify current status.
SleepHKCategoryTypeIdentifier.sleepAnalysis (values: inBed, awake, asleepCore, asleepDeep, asleepREM, asleepUnspecified)SleepSessionRecord (carries stages)Stage vocabularies differ and stages are estimated, not measured. Apple's .asleep is deprecated in favour of the specific stages.
StepsHKQuantityTypeIdentifier.stepCount (CMPedometer for live counts)StepsRecord, StepsCadenceRecordDe-duplicate: phone and watch both write steps. On Android, from the June 2026 update on-device steps are attributed to a per-device Synthetic Package Name — read it via getCurrentDeviceDataSource(), never hardcode it.
WorkoutsHKWorkout (HKWorkoutBuilder)ExerciseSessionRecord, PlannedExerciseSessionRecordActivity-type taxonomies differ between platforms — map them explicitly rather than by name.
GPS routeHKWorkoutRoute (array of CLLocation), HKWorkoutRouteQueryExerciseRoute with ExerciseRoute.LocationHealth Connect gates routes behind their own permission (READ_EXERCISE_ROUTES) and restricts background reads of other apps' routes.
CaloriesHKQuantityTypeIdentifier.activeEnergyBurned, .basalEnergyBurnedActiveCaloriesBurnedRecord, TotalCaloriesBurnedRecordModelled estimates, not measurements. Note the asymmetry: Apple splits active/basal, Android offers active and total — don't add active to total.
Body compositionHKQuantityTypeIdentifier.bodyMass, .bodyFatPercentage, .leanBodyMass, .bodyMassIndexWeightRecord, BodyFatRecord, LeanBodyMassRecord, BoneMassRecord, BodyWaterMassRecord, BasalMetabolicRateRecordThe store holds it, but something has to write it — usually a smart scale or manual entry. Body fat is a bioimpedance estimate.

What will bite you

Do not read this list as coverage. These are the 10 metrics verified against both vendors' documentation, not the boundary of what Health Connect supports. If a record type you need is missing here, the answer is that we have not checked it, and Google's own documentation is where to look.

Do not normalize SDNN into RMSSD. Apple stores heart rate variability as SDNN and Health Connect stores it as RMSSD. They are different measures and are not interconvertible, so a single "HRV" column populated from both platforms holds two incompatible quantities that will trend against each other for reasons that have nothing to do with the user.

Do not add active calories to total calories. Apple splits active and basal; Health Connect offers active and total. Those are not the same split, and the rule for the Android pair is simply that you must not add active to total — the result is a plausible number that nothing will flag. Both figures are modelled estimates on both platforms, not measurements.

Do not hardcode the steps data source on Android. From the June 2026 update, on-device steps are attributed to a per-device Synthetic Package Name. Read it with getCurrentDeviceDataSource(). A literal package name in your de-duplication logic will work on the device you tested on and quietly stop filtering on everyone else's — and de-duplication matters here, because a phone and a watch both write steps for the same walk.

Questions

Does this page list every Health Connect record type?

No. It lists the 10 metrics this site has verified against both Apple's and Google's documentation. Google documents the full catalog, which is larger. A record type missing from this page means we have not checked it against both vendors yet, not that Health Connect lacks it.

Can I map Apple HRV onto Health Connect HRV?

Not by conversion. Apple's heartRateVariabilitySDNN stores SDNN and Health Connect's HeartRateVariabilityRmssdRecord stores RMSSD. These are different measures of the same underlying signal and are not interconvertible, so keep them in separate fields and label which one any chart is showing.

Which Health Connect records match Apple's calorie types?

ActiveCaloriesBurnedRecord and TotalCaloriesBurnedRecord sit opposite Apple's activeEnergyBurned and basalEnergyBurned. The split is not the same on both sides, so map them explicitly and never add the active figure to the total figure. Both platforms are giving you modelled estimates rather than measurements.

Compiled by AIFitnessAPI; the HealthKit side was read from Apple’s published documentation on 2026-08-28. Every HealthKit identifier with units, aggregation and value enums is at every HealthKit type identifier, and the machine-readable export is on datasets.