iPhone-Gesundheitsdaten als CSV: was HealthKit erfasst und wie du HealthKit Parser verwendest

iPhone und Apple Watch erfassen jeden Tag automatisch deine Herzfrequenz, Schritte, deinen Schlaf, den Blutsauerstoff und vieles mehr. Nach ein paar Jahren sind das Millionen von Einträgen – echte Langzeitdaten aus dem Alltag, die sonst kaum zu bekommen und für Forschung und Entwicklung sehr wertvoll sind.

Der Haken: Die App „Health“ exportiert sie als eine riesige XML-Datei, manchmal größer als 1 GB, die Excel und die meisten Werkzeuge nicht direkt öffnen können. Dieser Artikel zeigt, welche Daten HealthKit erfasst und wie du sie mit der Mac-App HealthKit Parser zur Analyse in CSV umwandelst.

Was ist HealthKit?

HealthKit ist Apples System, das Gesundheitsdaten auf dem iPhone speichert. Neben dem, was iPhone und Apple Watch automatisch messen, sammelt es auch Daten anderer Apps – von Waagen, Blutdruckmessgeräten, Schlaf- und Ernährungs-Apps usw. Die App „Health“ zeigt dir all diese Daten an.

Andere Apps brauchen für jeden Datentyp deine Erlaubnis, um HealthKit-Daten zu lesen. Du könntest eine eigene App schreiben, die sie direkt liest – wenn du aber einfach alle deine Einträge haben willst, ist der Export der App „Health“ der mit Abstand einfachste Weg.

Die Daten, die HealthKit erfasst

Jeder HealthKit-Datentyp hat eine Kennung wie HKQuantityTypeIdentifierHeartRate (Herzfrequenz). Diese Kennung steht unverändert im Export und in der Spalte type der CSV-Datei, die HealthKit Parser schreibt. Hier sind die wichtigsten, ungefähr so gruppiert wie in der App „Health“.

Die „Einheit“ ist die im Export verwendete; sie kann sich je nach den Einstellungen des iPhone ändern (zum Beispiel km oder mi). „Meist erfasst von“ ist nur ein grober Hinweis darauf, woher die Daten üblicherweise stammen.

Aktivität

DatenWert in der Spalte typeEinheit (Beispiel)Meist erfasst von
SchritteHKQuantityTypeIdentifierStepCountcountiPhone, Apple Watch
Gehen- und LaufdistanzHKQuantityTypeIdentifierDistanceWalkingRunningkmiPhone, Apple Watch
Erklommene EtagenHKQuantityTypeIdentifierFlightsClimbedcountiPhone, Apple Watch
AktivitätsenergieHKQuantityTypeIdentifierActiveEnergyBurnedkcalApple Watch
RuheenergieHKQuantityTypeIdentifierBasalEnergyBurnedkcalApple Watch
TrainingsminutenHKQuantityTypeIdentifierAppleExerciseTimeminApple Watch
StehminutenHKQuantityTypeIdentifierAppleStandTimeminApple Watch
StehstundenHKCategoryTypeIdentifierAppleStandHour—Apple Watch
Körperliche AnstrengungHKQuantityTypeIdentifierPhysicalEffortkcal/hr·kgApple Watch
Cardiofitness (VO2max)HKQuantityTypeIdentifierVO2MaxmL/min·kgApple Watch
Zeit bei TageslichtHKQuantityTypeIdentifierTimeInDaylightminApple Watch
RaddistanzHKQuantityTypeIdentifierDistanceCyclingkmApple Watch, Andere Apps und Geräte
Schwimmdistanz, SchwimmzügeHKQuantityTypeIdentifierDistanceSwimming
HKQuantityTypeIdentifierSwimmingStrokeCount
m, countApple Watch
Laufgeschwindigkeit, Laufleistung, Schrittlänge, vertikale Oszillation, BodenkontaktzeitHKQuantityTypeIdentifierRunningSpeed
HKQuantityTypeIdentifierRunningPower
HKQuantityTypeIdentifierRunningStrideLength
HKQuantityTypeIdentifierRunningVerticalOscillation
HKQuantityTypeIdentifierRunningGroundContactTime
W, m, cm, ms …Apple Watch
Trainingsbelastung (geschätzt)HKQuantityTypeIdentifierEstimatedWorkoutEffortScoreappleEffortScoreApple Watch

Herz

DatenWert in der Spalte typeEinheit (Beispiel)Meist erfasst von
HerzfrequenzHKQuantityTypeIdentifierHeartRatecount/minApple Watch
RuheherzfrequenzHKQuantityTypeIdentifierRestingHeartRatecount/minApple Watch
Durchschnittliche Herzfrequenz beim GehenHKQuantityTypeIdentifierWalkingHeartRateAveragecount/minApple Watch
HerzfrequenzvariabilitätHKQuantityTypeIdentifierHeartRateVariabilitySDNNmsApple Watch
Herzfrequenzerholung (1 Minute)HKQuantityTypeIdentifierHeartRateRecoveryOneMinutecount/minApple Watch
Vorhofflimmern-VerlaufHKQuantityTypeIdentifierAtrialFibrillationBurden%Apple Watch
Mitteilungen zu hoher, niedriger und unregelmäßiger HerzfrequenzHKCategoryTypeIdentifierHighHeartRateEvent
HKCategoryTypeIdentifierLowHeartRateEvent
HKCategoryTypeIdentifierIrregularHeartRhythmEvent
—Apple Watch

Atmung

DatenWert in der Spalte typeEinheit (Beispiel)Meist erfasst von
AtemfrequenzHKQuantityTypeIdentifierRespiratoryRatecount/minApple Watch
BlutsauerstoffHKQuantityTypeIdentifierOxygenSaturation%Apple Watch
AtemstörungenHKQuantityTypeIdentifierAppleSleepingBreathingDisturbancescountApple Watch
Mitteilungen zu SchlafapnoeHKCategoryTypeIdentifierSleepApneaEvent—Apple Watch

Schlaf

DatenWert in der Spalte typeEinheit (Beispiel)Meist erfasst von
Schlaf (im Bett, Kernschlaf, Tiefschlaf, REM, wach)HKCategoryTypeIdentifierSleepAnalysis—Apple Watch, iPhone, Andere Apps und Geräte
Handgelenktemperatur im SchlafHKQuantityTypeIdentifierAppleSleepingWristTemperaturedegCApple Watch
SchlafdauerzielHKDataTypeSleepDurationGoalhrApp „Health“

Mobilität

DatenWert in der Spalte typeEinheit (Beispiel)Meist erfasst von
GehgeschwindigkeitHKQuantityTypeIdentifierWalkingSpeedkm/hriPhone
SchrittlängeHKQuantityTypeIdentifierWalkingStepLengthcmiPhone
GangasymmetrieHKQuantityTypeIdentifierWalkingAsymmetryPercentage%iPhone
DoppelstandphaseHKQuantityTypeIdentifierWalkingDoubleSupportPercentage%iPhone
GangstabilitätHKQuantityTypeIdentifierAppleWalkingSteadiness%iPhone
Treppengeschwindigkeit (aufwärts, abwärts)HKQuantityTypeIdentifierStairAscentSpeed
HKQuantityTypeIdentifierStairDescentSpeed
m/siPhone, Apple Watch
Sechs-Minuten-Gehtest (geschätzt)HKQuantityTypeIdentifierSixMinuteWalkTestDistancemiPhone

Hören

DatenWert in der Spalte typeEinheit (Beispiel)Meist erfasst von
UmgebungsgeräuschpegelHKQuantityTypeIdentifierEnvironmentalAudioExposuredBASPLApple Watch
KopfhörerpegelHKQuantityTypeIdentifierHeadphoneAudioExposuredBASPLiPhone
Mitteilungen zu lauter UmgebungHKCategoryTypeIdentifierAudioExposureEvent—Apple Watch

Körpermaße

DatenWert in der Spalte typeEinheit (Beispiel)Meist erfasst von
GrößeHKQuantityTypeIdentifierHeightcmManuelle Eingabe, Andere Apps und Geräte
GewichtHKQuantityTypeIdentifierBodyMasskgAndere Apps und Geräte, Manuelle Eingabe
Body-Mass-Index (BMI)HKQuantityTypeIdentifierBodyMassIndexcountAndere Apps und Geräte, Manuelle Eingabe
KörperfettanteilHKQuantityTypeIdentifierBodyFatPercentage%Andere Apps und Geräte, Manuelle Eingabe
Fettfreie KörpermasseHKQuantityTypeIdentifierLeanBodyMasskgAndere Apps und Geräte, Manuelle Eingabe
TaillenumfangHKQuantityTypeIdentifierWaistCircumferencecmManuelle Eingabe

Vitalwerte

DatenWert in der Spalte typeEinheit (Beispiel)Meist erfasst von
Blutdruck (systolisch, diastolisch)HKQuantityTypeIdentifierBloodPressureSystolic
HKQuantityTypeIdentifierBloodPressureDiastolic
mmHgAndere Apps und Geräte, Manuelle Eingabe
KörpertemperaturHKQuantityTypeIdentifierBodyTemperaturedegCAndere Apps und Geräte, Manuelle Eingabe
BasaltemperaturHKQuantityTypeIdentifierBasalBodyTemperaturedegCAndere Apps und Geräte, Manuelle Eingabe
BlutzuckerHKQuantityTypeIdentifierBloodGlucosemg/dLAndere Apps und Geräte, Manuelle Eingabe

Ernährung

DatenWert in der Spalte typeEinheit (Beispiel)Meist erfasst von
Nahrungsenergie, Eiweiß, Fett, KohlenhydrateHKQuantityTypeIdentifierDietaryEnergyConsumed
HKQuantityTypeIdentifierDietaryProtein
HKQuantityTypeIdentifierDietaryFatTotal
HKQuantityTypeIdentifierDietaryCarbohydrates
kcal, gAndere Apps und Geräte, Manuelle Eingabe
Wasser, KoffeinHKQuantityTypeIdentifierDietaryWater
HKQuantityTypeIdentifierDietaryCaffeine
mL, mgAndere Apps und Geräte, Manuelle Eingabe
Ballaststoffe, Vitamine, Mineralstoffe usw. (über 30 Arten)HKQuantityTypeIdentifierDietaryFiber
HKQuantityTypeIdentifierDietaryVitaminC
…
g, mg, µg …Andere Apps und Geräte, Manuelle Eingabe

Sonstiges

DatenWert in der Spalte typeEinheit (Beispiel)Meist erfasst von
AchtsamkeitsminutenHKCategoryTypeIdentifierMindfulSession—Apple Watch, Andere Apps und Geräte
HändewaschenHKCategoryTypeIdentifierHandwashingEvent—Apple Watch
ZähneputzenHKCategoryTypeIdentifierToothbrushingEvent—Andere Apps und Geräte
Anzahl der StürzeHKQuantityTypeIdentifierNumberOfTimesFallencountApple Watch
Zyklusprotokoll (Menstruation usw.)HKCategoryTypeIdentifierMenstrualFlow
…
—Manuelle Eingabe, Andere Apps und Geräte
Symptome (Kopfschmerzen, Fieber, Husten usw.)HKCategoryTypeIdentifierHeadache
HKCategoryTypeIdentifierFever
HKCategoryTypeIdentifierCoughing
…
—Manuelle Eingabe
UV-IndexHKQuantityTypeIdentifierUVExposurecountAndere Apps und Geräte

Zeilen mit „—“ als Einheit sind Kategoriedaten: In der Spalte value steht eine Kategorie wie HKCategoryValueSleepAnalysisAsleepCore (Kernschlaf).

Insgesamt kennt HealthKit weit über 100 Datentypen, darunter Ergebnisse von Hörtests und Geschwindigkeiten beim Training. Welche du hast, hängt von deinen Geräten und Apps ab. Der Export des Autors, der etwa neun Jahre (2017–2026) umfasst, enthielt 42 Typen und rund 3,08 Millionen Einträge. Am häufigsten waren Aktivitätsenergie und Herzfrequenz der Apple Watch mit jeweils etwa 700.000 Einträgen.

Gesundheitsdaten auf dem iPhone exportieren

  1. Öffne auf dem iPhone die App „Health“ und tippe oben rechts auf dein Profilsymbol.
  2. Tippe ganz unten auf „Alle Gesundheitsdaten exportieren“ und zur Bestätigung auf „Exportieren“. Bei vielen Daten kann das ein paar Minuten dauern.
  3. Wenn das Teilen-Menü erscheint, sende die Datei per AirDrop an deinen Mac oder sichere sie in „Dateien“ und übertrage sie auf den Mac.
  4. Doppelklicke auf dem Mac auf die ZIP-Datei, um sie zu entpacken.

Dabei entsteht ein Ordner namens apple_health_export mit folgendem Inhalt:

  • export.xml: Alle deine Einträge. Diese Datei liest HealthKit Parser
  • export_cda.xml: Einträge im Format HL7 CDA, einem Standard für klinische Dokumente
  • electrocardiograms: Mit der Apple Watch aufgezeichnete EKGs (CSV)
  • workout-routes: Routen der Trainings (GPX)

Mit HealthKit Parser in CSV umwandeln

HealthKit Parser ist eine Mac-App, die export.xml liest und die Einträge in eine CSV-Datei schreibt. Alles geschieht auf deinem Mac; deine Daten werden nirgendwohin gesendet.

1. export.xml importieren

Beim Start von HealthKit Parser öffnet sich das Fenster eines neuen Dokuments. Klicke in der Symbolleiste auf „Import XML“ und wähle export.xml im entpackten Ordner.

export.xml im entpackten Ordner auswählen
export.xml im entpackten Ordner auswählen

Der Import dauert eine Weile. Die 1,4 GB große export.xml des Autors (rund 3,08 Millionen Einträge) brauchte auf einem MacBook Pro (M4) etwa 14 Minuten. Bis er fertig ist, steht unten rechts im Fenster „Parsing XML…“.

2. Datentypen und Anzahl prüfen

Nach dem Import zeigt das Fenster den erfassten Zeitraum (Beginn und Ende), die Anzahl der Einträge sowie alle Datentypen mit ihrer jeweiligen Anzahl. Titel und Notizen kannst du frei eintragen.

Zeitraum, Anzahl der Einträge und Anzahl je Datentyp
Zeitraum, Anzahl der Einträge und Anzahl je Datentyp

Wenn du das Dokument sicherst, öffnet es sich beim nächsten Mal sofort, ohne export.xml erneut zu importieren – praktisch, wenn du immer wieder andere Zeiträume exportieren möchtest.

3. Als CSV exportieren

Klicke in der Symbolleiste auf „Export CSV“, wähle den Zeitraum und die Datentypen und klicke auf „Export“. Du kannst „All Time“ (gesamter Zeitraum) eingeschaltet lassen oder den Zeitraum mit Beginn und Ende eingrenzen.

Zeitraum und Datentypen für den Export auswählen
Zeitraum und Datentypen für den Export auswählen

Du kannst alle Typen auf einmal exportieren, aber bei Millionen von Einträgen wird die CSV-Datei sehr groß. Wählst du nur die Typen, die du brauchst, lässt sie sich viel leichter verarbeiten.

Was in der CSV-Datei steht

Jede Zeile ist ein Eintrag, mit diesen Spalten:

SpalteInhalt
typeDer Datentyp (die Kennungen aus den Tabellen oben)
unitEinheit
valueDer Wert. Bei Schlaf und anderen Kategoriedaten ein Text
start, endBeginn und Ende des Eintrags, auf die Minute genau, im Format der Einstellungen „Sprache & Region“ des Mac
start_UT, end_UTBeginn und Ende des Eintrags als Unixzeit (Sekunden)
creation, creation_UTWann der Eintrag in HealthKit gespeichert wurde, auch als Unixzeit
deviceDas Gerät, das ihn erfasst hat (Modell, Softwareversion)
source name, source versionDie App oder das Gerät, das ihn erfasst hat, und deren Version

Hier ein Beispiel für exportierte Ruheherzfrequenz (nur einige Spalten):

typeunitvaluestart_UTend_UT
HKQuantityTypeIdentifierRestingHeartRatecount/min631791559483.01791640198.0
HKQuantityTypeIdentifierRestingHeartRatecount/min631791645830.01791714436.0
HKQuantityTypeIdentifierRestingHeartRatecount/min581791737624.01791765440.0

Die _UT-Spalten (Unixzeit)

Spalten, deren Name auf _UT endet, geben Datum und Uhrzeit als Unixzeit an: die Sekunden seit dem 1. Januar 1970, 00:00:00 UTC. Die Unixzeit hängt nicht von Zeitzonen ab.

  • Reihenfolge und Abstände der Einträge bleiben korrekt, auch wenn du auf Reisen die Zeitzone wechselst
  • Eine einfache Subtraktion ergibt die Länge eines Intervalls (in Sekunden), etwa einer Schlafphase
  • Sie ist sekundengenau (Spalten wie start enden bei der Minute)
  • Sie lässt sich leicht mit Daten von Laborgeräten und anderen Sensoren abgleichen
  • Du kannst sie zur Anzeige in jede beliebige Zeitzone umrechnen

In Python (pandas) kannst du die Datei so einlesen. In der Kopfzeile steht nach jedem Komma ein Leerzeichen, deshalb gibst du skipinitialspace=True an.

import pandas as pd

df = pd.read_csv("resting_heart_rate.csv", skipinitialspace=True)

# Unixzeit → Datum und Uhrzeit (UTC) → Ortszeit
df["start_local"] = (pd.to_datetime(df["start_UT"], unit="s", utc=True)
                     .dt.tz_convert("Europe/Berlin"))

# Länge jedes Intervalls (Sekunden)
df["seconds"] = df["end_UT"] - df["start_UT"]

In Excel ergibt =E2/86400+DATUM(1970;1;1) mit einem Datums- und Uhrzeitformat für die Zelle das Datum und die Uhrzeit in UTC (wenn Spalte E start_UT ist). Für die Ortszeit addierst du die Abweichung von UTC geteilt durch 24 – zum Beispiel 1/24 für Berlin im Winter.

Tipps für die Analyse

  • Manche Daten überschneiden sich: Wenn du iPhone und Apple Watch nutzt, erfassen beide Schritte und Distanz. Die App „Health“ entfernt die Überschneidungen bei der Anzeige, der Export enthält aber beide. Filtere vor dem Aufsummieren nach der Spalte source name oder device.
  • Prozentwerte liegen zwischen 0 und 1: Daten mit der Einheit % (Blutsauerstoff, Körperfettanteil, Gangasymmetrie usw.) werden als 0.97 für 97 % gespeichert.
  • Einheiten prüfen: Die Einheiten können sich je nach den Einstellungen des iPhone ändern. Prüfe vor dem Rechnen die Spalte unit.
  • Kategoriedaten: eine Zeile pro Intervall: Beim Schlaf steht in der Spalte value HKCategoryValueSleepAnalysisAsleepCore (Kernschlaf), …AsleepDeep (Tiefschlaf), …AsleepREM (REM), …Awake (wach) usw., und jede Zeile ist ein Intervall. Seine Länge ist end_UT − start_UT.
  • Wenn du mit Daten anderer arbeitest: Gesundheitsdaten sind äußerst sensible personenbezogene Daten. Wenn du in der Forschung Daten von Teilnehmenden verwendest, halte dich an die Verfahren deiner Einrichtung für Ethikprüfung und Einwilligung.

Was nicht in der CSV-Datei steht

HealthKit Parser wandelt die einzelnen Einträge in export.xml um. Zusammenfassungen der Trainings (Trainingsart, Dauer, Gesamtdistanz usw.), die täglichen Summen der Aktivitätsringe und Profilangaben wie Geburtsdatum oder Blutgruppe sind nicht enthalten. Herzfrequenz, Distanz und Energie, die während eines Trainings erfasst werden, sind als einzelne Einträge enthalten.

EKGs und Trainingsrouten liegen bereits als CSV- und GPX-Dateien im entpackten Ordner und lassen sich direkt verwenden.

Fazit

Einmal exportiert und in CSV umgewandelt, lassen sich die Einträge von iPhone und Apple Watch frei in Excel, R, Python und anderen Werkzeugen analysieren. Mit den _UT-Spalten kombinierst du sie mit anderen Daten, ohne dich um Zeitzonen kümmern zu müssen.

HealthKit Parser gibt es als Einmalkauf im Mac App Store (macOS 12 oder neuer). Ein Abo gibt es nicht.

→ Mehr über HealthKit Parser

→ Im Mac App Store ansehen

Mehr zu HealthKit Parser