---
title: "Health data schema converter: three platforms in, one shape out"
canonical: "https://aifitnessapi.com/tools/schema-converter"
markdown: "https://aifitnessapi.com/tools/schema-converter.md"
type: "tool"
last_reviewed: "2026-11-05"
description: "Paste a Health Connect record, Google Health API data point or HealthKit export row and see it in one unified shape, field by field, in your browser."
publisher: "AIFitnessAPI — funded by KinesteX; first-party pages disclose it"
cite_as: "\"Health data schema converter: three platforms in, one shape out\", AIFitnessAPI, https://aifitnessapi.com/tools/schema-converter"
---

# Health data schema converter: three platforms in, one shape out

> Paste a payload in one of the shapes this site documents — HealthKit export.xml rows, Health Connect records in the synthetic data generator's JSON encoding, or Google Health API data points — and see it converted to the unified health-data schema v1.0.0 (9 record types), with every field traced to its source path, the conversion applied and the platform sentence it rests on. Each result is checked against the published JSON Schema. It runs in your browser; nothing you paste is uploaded. Types outside the schema, and values without a sourced conversion, are reported instead of guessed.

- Canonical: https://aifitnessapi.com/tools/schema-converter
- Last reviewed: 2026-11-05
- Publisher: AIFitnessAPI (https://aifitnessapi.com)
- Cite as: "Health data schema converter: three platforms in, one shape out", AIFitnessAPI, https://aifitnessapi.com/tools/schema-converter

---

*[Interactive: the converter, with synthetic samples and field-by-field explanations, in the browser at https://aifitnessapi.com/tools/schema-converter; not reproduced in this mirror.]*

## What it reads

- HealthKit export.xml rows. <Record> and <Workout> start tags from the file the iPhone Health app exports, read with the [Apple Health export explorer](https://aifitnessapi.com/tools/apple-health-explorer)’s scanner. Apple does not publish the file’s attribute names, so the converter reads the ones the file carries (type, unit, value, startDate, endDate). It maps 8 type identifiers; sleep rows are grouped into one session.
- HealthKit JSON in the [synthetic data generator](https://aifitnessapi.com/tools/sample-data)’s encoding. HealthKit has no JSON wire format, so this is that tool’s documented encoding; a zone name in HKMetadataKeyTimeZone becomes an offset through your browser’s own time-zone database.
- Health Connect records, keyed by class ({ "StepsRecord": [ … ] }), in the same generator’s encoding of the Kotlin classes: Instants as ISO 8601, ZoneOffsets as +HH:MM, Mass and Length as { value, unit }. 9 classes are mapped.
- Google Health API data points, one ({ "heartRate": { … } }) or a list response ({ "dataPoints": [ … ] }). int64 values arrive as strings and are parsed; offsets are google-duration seconds. 9 data types are mapped.
- A whole sample-data download, which the converter recognizes by its _synthetic block.

## What it refuses to guess

- A HealthKit percent above 1.0: Apple states percent is 0.0 to 1.0, so 97 is either already scaled or wrong, and the converter will not pick.
- A unit with no sourced factor (feet, stone): pounds and inches use the factors Google’s migration guide prints; anything else is refused.
- A Google standardDeviationMilliseconds as SDNN: Google describes it as the deviation of the measurement, so only the RMSSD field converts.
- A type the schema does not cover: it is listed as not converted, never dropped without a word.

The page fetches two static files once, the [mappings](https://aifitnessapi.com/schema/v1/mappings.json) and the [JSON Schema](https://aifitnessapi.com/schema/v1/unified-health-data.schema.json), and converts in this tab. There is no server code behind it and nothing is stored.

A free tool from AIFitnessAPI. The schema itself, with every mapping and gap, is at [the unified health-data schema](https://aifitnessapi.com/schema). More at [free tools for health-app builders](https://aifitnessapi.com/tools).

## The other 15 tools

- [Which error is this?](https://aifitnessapi.com/tools/error-diagnoser): Paste an error string and get the matching HKError.Code case in Apple's wording, plus the guide that covers it.
- [Sum it or average it?](https://aifitnessapi.com/tools/aggregation-checker): Whether Apple describes a quantity type as cumulative or discrete, with the sentence that says so.
- [Apple type, Android record](https://aifitnessapi.com/tools/identifier-translator): Two-way lookup between HealthKit identifiers and Health Connect records — verified pairs only.
- [HealthKit permission builder](https://aifitnessapi.com/tools/permission-builder): Pick the types your app touches: the Info.plist keys, the toShare/toRead Swift, and the Health Connect record names.
- [HealthKit query generator](https://aifitnessapi.com/tools/query-generator): Pick a quantity type and a window; get the HKStatisticsQuery with the aggregation option Apple's own prose states.
- [Fitness app stack generator](https://aifitnessapi.com/tools/stack-generator): Answer four questions and get the HealthKit types and APIs that survive them, with the exclusions shown.
- [Synthetic health data generator](https://aifitnessapi.com/tools/sample-data): Seeded synthetic HealthKit, Health Connect and Google Health API fixtures as JSON or CSV, with per-record UTC offsets.
- [Is this webhook real?](https://aifitnessapi.com/tools/webhook-verifier): Paste an Oura, WHOOP, Terra, Polar, Strava, Withings, Wahoo or Google Health API webhook: the vendor's documented check, run in your browser.
- [Wearable OAuth playground](https://aifitnessapi.com/tools/oauth-playground): Pick Oura, WHOOP, Strava, Polar, Withings, Wahoo, Dexcom, Suunto or Google Health: documented endpoints and scopes, an authorize URL, a PKCE pair and token curl. Sends nothing.
- [Starter scaffold generator](https://aifitnessapi.com/tools/starter-scaffold): Pick Express, Next.js or FastAPI and Oura, WHOOP, Polar, Strava or Wahoo: a tested project skeleton with OAuth routes, a token store and verified webhooks, as a .zip.
- [Pose keypoint playground](https://aifitnessapi.com/tools/keypoint-playground): Click a joint and see its index in BlazePose, COCO, OpenPose, ML Kit and Apple Vision, then copy an index map built from matching names only.
- [Exercise form rules](https://aifitnessapi.com/tools/exercise-form-rules): The joint-angle thresholds open-source exercise trackers use for squats, push-ups, lunges, planks, curls and presses, each quoted from its code; null where none says.
- [Exercise taxonomy crosswalk](https://aifitnessapi.com/tools/exercise-taxonomy-crosswalk): free-exercise-db, wger and ExerciseDB v1 categories, equipment and muscles against HealthKit and Health Connect workout types, matched by name only.
- [Fitbit to Google Health API map](https://aifitnessapi.com/tools/fitbit-to-google-health): Search every Fitbit Web API endpoint and see its Google Health API data type, method and scopes from Google's migration tables, or that none is listed.
- [Deprecation scanner](https://aifitnessapi.com/tools/deprecation-scanner): Paste code or a manifest and find Fitbit Web API, Google Fit and other retired fitness API calls, each with its replacement. Also a GitHub Action.

The planners and demos — the API picker, the cost planner, the side-by-side comparison, the day-boundary demo, the pose-model benchmark, the Bluetooth heart-rate lab and the step lab — are listed with these on [free tools for health-app builders](https://aifitnessapi.com/tools).

## Next step

Turning this into a choice of API:

- [The Best Wearable Health-Data Aggregator APIs (2026)](https://aifitnessapi.com/fitness-apis/health-data-aggregator-apis)
- [Apple HealthKit vs Google Health Connect (2026)](https://aifitnessapi.com/fitness-apis/apple-healthkit-vs-google-health-connect)
