Votre iPhone et votre Apple Watch enregistrent automatiquement, chaque jour, votre fréquence cardiaque, vos pas, votre sommeil, votre oxygène sanguin et bien plus. Au bout de quelques années, cela représente des millions d’enregistrements : des données réelles, sur le long terme, difficiles à obtenir autrement et précieuses pour la recherche et le développement.
Seul problème : l’app Santé les exporte dans un unique fichier XML énorme, parfois de plus de 1 Go, qu’Excel et la plupart des outils ne peuvent pas ouvrir tel quel. Cet article présente les données qu’enregistre HealthKit et explique comment les convertir en CSV pour les analyser avec l’app Mac HealthKit Parser.
Qu’est-ce que HealthKit ?
HealthKit est le système d’Apple qui stocke les données de santé sur l’iPhone. En plus de ce que mesurent automatiquement l’iPhone et l’Apple Watch, il rassemble les données écrites par d’autres apps : balances, tensiomètres, apps de suivi du sommeil ou de l’alimentation, etc. L’app Santé permet de consulter tout cela.
Pour lire les données de HealthKit, les autres apps doivent obtenir votre autorisation pour chaque type de donnée. Vous pourriez créer votre propre app pour les lire directement, mais si vous voulez simplement récupérer tous vos enregistrements, l’exportation de l’app Santé est de loin la solution la plus simple.
Les données qu’enregistre HealthKit
Chaque type de donnée HealthKit possède un identifiant, comme HKQuantityTypeIdentifierHeartRate (fréquence cardiaque). Cet identifiant apparaît tel quel dans l’export et dans la colonne type du CSV créé par HealthKit Parser. Voici les principaux, regroupés à peu près comme dans l’app Santé.
L’« unité » est celle qui figure dans l’export ; elle peut changer selon les réglages de l’iPhone (km ou mi, par exemple). « Généralement enregistré par » indique à titre indicatif d’où viennent le plus souvent les données.
Activité
| Donnée | Valeur de la colonne type | Unité (exemple) | Généralement enregistré par |
|---|---|---|---|
| Pas | HKQuantityTypeIdentifier | count | iPhone, Apple Watch |
| Distance de marche et de course | HKQuantityTypeIdentifier | km | iPhone, Apple Watch |
| Étages montés | HKQuantityTypeIdentifier | count | iPhone, Apple Watch |
| Énergie active | HKQuantityTypeIdentifier | kcal | Apple Watch |
| Énergie au repos | HKQuantityTypeIdentifier | kcal | Apple Watch |
| Minutes d’exercice | HKQuantityTypeIdentifier | min | Apple Watch |
| Minutes debout | HKQuantityTypeIdentifier | min | Apple Watch |
| Heures debout | HKCategoryTypeIdentifier | — | Apple Watch |
| Effort physique | HKQuantityTypeIdentifier | kcal/hr·kg | Apple Watch |
| Forme cardio (VO2 max) | HKQuantityTypeIdentifier | mL/min·kg | Apple Watch |
| Temps passé à la lumière du jour | HKQuantityTypeIdentifier | min | Apple Watch |
| Distance à vélo | HKQuantityTypeIdentifier | km | Apple Watch, Autres apps et appareils |
| Distance de nage, mouvements de bras | HKQuantityTypeIdentifierHKQuantityTypeIdentifier | m, count | Apple Watch |
| Vitesse, puissance, longueur de foulée, oscillation verticale et temps de contact au sol en course | HKQuantityTypeIdentifierHKQuantityTypeIdentifierHKQuantityTypeIdentifierHKQuantityTypeIdentifierHKQuantityTypeIdentifier | W, m, cm, ms … | Apple Watch |
| Effort de l’entraînement (estimé) | HKQuantityTypeIdentifier | appleEffortScore | Apple Watch |
Cœur
| Donnée | Valeur de la colonne type | Unité (exemple) | Généralement enregistré par |
|---|---|---|---|
| Fréquence cardiaque | HKQuantityTypeIdentifier | count/min | Apple Watch |
| Fréquence cardiaque au repos | HKQuantityTypeIdentifier | count/min | Apple Watch |
| Fréquence cardiaque moyenne en marche | HKQuantityTypeIdentifier | count/min | Apple Watch |
| Variabilité de la fréquence cardiaque | HKQuantityTypeIdentifier | ms | Apple Watch |
| Récupération cardiaque (1 minute) | HKQuantityTypeIdentifier | count/min | Apple Watch |
| Historique de fibrillation auriculaire | HKQuantityTypeIdentifier | % | Apple Watch |
| Notifications de fréquence cardiaque élevée, basse et de rythme irrégulier | HKCategoryTypeIdentifierHKCategoryTypeIdentifierHKCategoryTypeIdentifier | — | Apple Watch |
Respiration
| Donnée | Valeur de la colonne type | Unité (exemple) | Généralement enregistré par |
|---|---|---|---|
| Fréquence respiratoire | HKQuantityTypeIdentifier | count/min | Apple Watch |
| Oxygène sanguin | HKQuantityTypeIdentifier | % | Apple Watch |
| Troubles respiratoires | HKQuantityTypeIdentifier | count | Apple Watch |
| Notifications d’apnée du sommeil | HKCategoryTypeIdentifier | — | Apple Watch |
Sommeil
| Donnée | Valeur de la colonne type | Unité (exemple) | Généralement enregistré par |
|---|---|---|---|
| Sommeil (au lit, essentiel, profond, paradoxal, éveillé) | HKCategoryTypeIdentifier | — | Apple Watch, iPhone, Autres apps et appareils |
| Température du poignet pendant le sommeil | HKQuantityTypeIdentifier | degC | Apple Watch |
| Objectif de durée de sommeil | HKData | hr | App Santé |
Mobilité
| Donnée | Valeur de la colonne type | Unité (exemple) | Généralement enregistré par |
|---|---|---|---|
| Vitesse de marche | HKQuantityTypeIdentifier | km/hr | iPhone |
| Longueur du pas | HKQuantityTypeIdentifier | cm | iPhone |
| Asymétrie de la marche | HKQuantityTypeIdentifier | % | iPhone |
| Temps de double appui | HKQuantityTypeIdentifier | % | iPhone |
| Stabilité de la marche | HKQuantityTypeIdentifier | % | iPhone |
| Vitesse dans les escaliers (montée, descente) | HKQuantityTypeIdentifierHKQuantityTypeIdentifier | m/s | iPhone, Apple Watch |
| Test de marche de six minutes (estimé) | HKQuantityTypeIdentifier | m | iPhone |
Audition
| Donnée | Valeur de la colonne type | Unité (exemple) | Généralement enregistré par |
|---|---|---|---|
| Niveaux sonores ambiants | HKQuantityTypeIdentifier | dBASPL | Apple Watch |
| Niveaux sonores du casque | HKQuantityTypeIdentifier | dBASPL | iPhone |
| Notifications d’environnement bruyant | HKCategoryTypeIdentifier | — | Apple Watch |
Mensurations
| Donnée | Valeur de la colonne type | Unité (exemple) | Généralement enregistré par |
|---|---|---|---|
| Taille | HKQuantityTypeIdentifier | cm | Saisie manuelle, Autres apps et appareils |
| Poids | HKQuantityTypeIdentifier | kg | Autres apps et appareils, Saisie manuelle |
| Indice de masse corporelle (IMC) | HKQuantityTypeIdentifier | count | Autres apps et appareils, Saisie manuelle |
| Pourcentage de graisse corporelle | HKQuantityTypeIdentifier | % | Autres apps et appareils, Saisie manuelle |
| Masse maigre | HKQuantityTypeIdentifier | kg | Autres apps et appareils, Saisie manuelle |
| Tour de taille | HKQuantityTypeIdentifier | cm | Saisie manuelle |
Signes vitaux
| Donnée | Valeur de la colonne type | Unité (exemple) | Généralement enregistré par |
|---|---|---|---|
| Tension artérielle (systolique, diastolique) | HKQuantityTypeIdentifierHKQuantityTypeIdentifier | mmHg | Autres apps et appareils, Saisie manuelle |
| Température corporelle | HKQuantityTypeIdentifier | degC | Autres apps et appareils, Saisie manuelle |
| Température basale | HKQuantityTypeIdentifier | degC | Autres apps et appareils, Saisie manuelle |
| Glycémie | HKQuantityTypeIdentifier | mg/dL | Autres apps et appareils, Saisie manuelle |
Nutrition
| Donnée | Valeur de la colonne type | Unité (exemple) | Généralement enregistré par |
|---|---|---|---|
| Énergie alimentaire, protéines, lipides, glucides | HKQuantityTypeIdentifierHKQuantityTypeIdentifierHKQuantityTypeIdentifierHKQuantityTypeIdentifier | kcal, g | Autres apps et appareils, Saisie manuelle |
| Eau, caféine | HKQuantityTypeIdentifierHKQuantityTypeIdentifier | mL, mg | Autres apps et appareils, Saisie manuelle |
| Fibres, vitamines, minéraux, etc. (plus de 30 types) | HKQuantityTypeIdentifierHKQuantityTypeIdentifier… | g, mg, µg … | Autres apps et appareils, Saisie manuelle |
Autres
| Donnée | Valeur de la colonne type | Unité (exemple) | Généralement enregistré par |
|---|---|---|---|
| Minutes de pleine conscience | HKCategoryTypeIdentifier | — | Apple Watch, Autres apps et appareils |
| Lavage des mains | HKCategoryTypeIdentifier | — | Apple Watch |
| Brossage des dents | HKCategoryTypeIdentifier | — | Autres apps et appareils |
| Nombre de chutes | HKQuantityTypeIdentifier | count | Apple Watch |
| Suivi du cycle (règles, etc.) | HKCategoryTypeIdentifier… | — | Saisie manuelle, Autres apps et appareils |
| Symptômes (maux de tête, fièvre, toux, etc.) | HKCategoryTypeIdentifierHKCategoryTypeIdentifierHKCategoryTypeIdentifier… | — | Saisie manuelle |
| Indice UV | HKQuantityTypeIdentifier | count | Autres apps et appareils |
Les lignes dont l’unité est « — » sont des données de catégorie : la colonne value contient une catégorie comme HKCategoryValueSleepAnalysisAsleepCore (sommeil essentiel).
Au total, HealthKit compte bien plus de 100 types de données, dont les résultats de tests auditifs et les vitesses pendant les entraînements. Ceux que vous avez dépendent de vos appareils et de vos apps. L’export de l’auteur, qui couvre environ neuf ans (2017–2026), contenait 42 types et environ 3,08 millions d’enregistrements. Les plus nombreux étaient l’énergie active et la fréquence cardiaque de l’Apple Watch, avec environ 700 000 enregistrements chacun.
Exporter vos données Santé sur l’iPhone
- Ouvrez l’app Santé sur votre iPhone et touchez l’icône de votre profil en haut à droite.
- Tout en bas, touchez « Exporter toutes les données de santé », puis touchez « Exporter » pour confirmer. S’il y a beaucoup de données, cela peut prendre quelques minutes.
- Lorsque la feuille de partage s’affiche, envoyez le fichier sur votre Mac avec AirDrop, ou enregistrez-le dans Fichiers puis transférez-le sur votre Mac.
- Sur votre Mac, double-cliquez sur le fichier zip pour le décompresser.
Vous obtenez un dossier nommé apple_health_export, qui contient :
export.xml: Tous vos enregistrements. C’est le fichier que lit HealthKit Parserexport_cda.xml: Des enregistrements au format HL7 CDA, une norme pour les documents cliniqueselectrocardiograms: Les ECG enregistrés avec l’Apple Watch (CSV)workout-routes: Les itinéraires des entraînements (GPX)
Le convertir en CSV avec HealthKit Parser
HealthKit Parser est une app Mac qui lit export.xml et écrit les enregistrements dans un fichier CSV. Tout se fait sur votre Mac ; vos données ne sont envoyées nulle part.
1. Importer export.xml
Au lancement de HealthKit Parser, la fenêtre d’un nouveau document s’ouvre. Cliquez sur « Import XML » dans la barre d’outils et choisissez export.xml dans le dossier décompressé.

L’importation prend un moment. L’export.xml de 1,4 Go de l’auteur (environ 3,08 millions d’enregistrements) a pris environ 14 minutes sur un MacBook Pro (M4). Tant qu’elle n’est pas terminée, « Parsing XML… » s’affiche en bas à droite de la fenêtre.
2. Vérifier les types de données et leur nombre
Une fois l’importation terminée, la fenêtre affiche la période couverte (début et fin), le nombre d’enregistrements et tous les types de données avec leur nombre. Vous pouvez ajouter un titre et des notes.

Si vous enregistrez le document, il s’ouvrira instantanément la prochaine fois, sans réimporter export.xml. C’est pratique pour exporter différentes périodes à plusieurs reprises.
3. Exporter en CSV
Cliquez sur « Export CSV » dans la barre d’outils, choisissez la période et les types de données, puis cliquez sur « Export ». Laissez « All Time » (toute la période) ou limitez-la avec une date de début et une date de fin.

Vous pouvez exporter tous les types d’un coup, mais avec des millions d’enregistrements le CSV devient volumineux. En ne choisissant que les types utiles, il sera bien plus facile à manipuler.
Le contenu du CSV
Chaque ligne correspond à un enregistrement, avec les colonnes suivantes :
| Colonne | Contenu |
|---|---|
type | Le type de donnée (les identifiants des tableaux ci-dessus) |
unit | Unité |
value | La valeur. Pour le sommeil et les autres données de catégorie, un texte |
start, end | Début et fin de l’enregistrement, à la minute près, au format des réglages « Langue et région » du Mac |
start_UT, end_UT | Début et fin de l’enregistrement en temps Unix (secondes) |
creation, creation_UT | Le moment où l’enregistrement a été ajouté à HealthKit, et le même en temps Unix |
device | L’appareil qui l’a enregistré (modèle, version du logiciel) |
source name, source version | L’app ou l’appareil qui l’a enregistré, et sa version |
Voici un exemple de fréquence cardiaque au repos exportée (quelques colonnes seulement) :
| type | unit | value | start_UT | end_UT |
|---|---|---|---|---|
HKQuantityTypeIdentifier | count/min | 63 | 1791559483.0 | 1791640198.0 |
HKQuantityTypeIdentifier | count/min | 63 | 1791645830.0 | 1791714436.0 |
HKQuantityTypeIdentifier | count/min | 58 | 1791737624.0 | 1791765440.0 |
Les colonnes _UT (temps Unix)
Les colonnes qui se terminent par _UT donnent la date et l’heure en temps Unix : le nombre de secondes écoulées depuis le 1er janvier 1970 à 00:00:00 UTC. Le temps Unix ne dépend pas des fuseaux horaires.
- L’ordre et l’espacement des enregistrements restent justes, même si vous voyagez d’un fuseau horaire à l’autre
- Une simple soustraction donne la durée d’un intervalle (en secondes), par exemple une phase de sommeil
- Il est précis à la seconde (les colonnes comme
starts’arrêtent à la minute) - Il se croise facilement avec les données d’équipements de laboratoire et d’autres capteurs
- Vous pouvez le convertir dans n’importe quel fuseau horaire pour l’afficher
En Python (pandas), vous pouvez le lire ainsi. La ligne d’en-tête comporte une espace après chaque virgule : ajoutez donc skipinitialspace=True.
import pandas as pd
df = pd.read_csv("resting_heart_rate.csv", skipinitialspace=True)
# Temps Unix → date et heure (UTC) → heure locale
df["start_local"] = (pd.to_datetime(df["start_UT"], unit="s", utc=True)
.dt.tz_convert("Europe/Paris"))
# Durée de chaque intervalle (secondes)
df["seconds"] = df["end_UT"] - df["start_UT"]
Dans Excel, =E2/86400+DATE(1970;1;1) avec un format de cellule date et heure donne la date et l’heure UTC (si la colonne E est start_UT). Pour l’heure locale, ajoutez le décalage par rapport à UTC divisé par 24 — par exemple 1/24 pour Paris en hiver.
Conseils pour l’analyse
- Certaines données se recoupent : Si vous utilisez l’iPhone et l’Apple Watch, les pas et la distance sont enregistrés par les deux. L’app Santé supprime les doublons à l’affichage, mais l’export contient les deux. Avant d’additionner, filtrez sur la colonne
source nameoudevice. - Les pourcentages vont de 0 à 1 : Les données dont l’unité est % (oxygène sanguin, pourcentage de graisse corporelle, asymétrie de la marche, etc.) sont stockées sous la forme 0.97 pour 97 %.
- Vérifiez les unités : Les unités peuvent changer selon les réglages de l’iPhone. Vérifiez la colonne
unitavant de calculer. - Données de catégorie : une ligne par intervalle : Pour le sommeil, la colonne
valuecontientHKCategoryValueSleepAnalysisAsleepCore(essentiel),…AsleepDeep(profond),…AsleepREM(paradoxal),…Awake(éveillé), etc., et chaque ligne est un intervalle. Sa durée estend_UT − start_UT. - Si vous traitez les données d’autres personnes : Les données de santé sont des informations personnelles très sensibles. Si vous utilisez les données de participants dans une recherche, suivez les procédures d’examen éthique et de consentement de votre établissement.
Ce que le CSV ne contient pas
HealthKit Parser convertit les enregistrements individuels de export.xml. Les résumés des entraînements (type d’activité, durée, distance totale, etc.), les totaux quotidiens des anneaux Activité et les informations de profil comme la date de naissance ou le groupe sanguin ne sont pas inclus. La fréquence cardiaque, la distance et l’énergie enregistrées pendant les entraînements sont, elles, incluses en tant qu’enregistrements individuels.
Les ECG et les itinéraires des entraînements se trouvent déjà dans le dossier décompressé, sous forme de fichiers CSV et GPX prêts à l’emploi.
En résumé
Une fois exportés et convertis en CSV, les enregistrements de l’iPhone et de l’Apple Watch peuvent être analysés librement dans Excel, R, Python, etc. Les colonnes _UT vous permettent de les combiner avec d’autres données sans vous soucier des fuseaux horaires.
HealthKit Parser est vendu en achat unique sur le Mac App Store (macOS 12 ou version ultérieure). Il n’y a pas d’abonnement.
