Apple Health export to spreadsheet: get your lab results and vitals out
Apple Health will export everything it holds, but what it gives you is a ZIP with an XML file that often runs to several gigabytes. Excel won’t open it, a text editor chokes on it, and the lab results you were after aren’t even in it: they sit in a folder of small files beside it, one per result, in a format meant for software.
This tool reads the export and gives you back a spreadsheet. Your lab results and the vital signs your clinic took come out in a few seconds, because it reads only the clinical records and never opens the big file. If you also want the readings from your Watch, scale or blood pressure cuff, it can scan the big file too, as a second step, and turn them into daily figures.
It runs entirely in your browser. The export is read on your own device and nothing is sent to us or anyone else.
Already unzipped it?
Getting the export
On your iPhone:
- Open the Health app and tap your picture or initials at the top right.
- Tap Export All Health Data, then Export. A few years of Watch data can take several minutes.
- Save export.zip to Files, or AirDrop it to your Mac.
You can choose the ZIP here straight from the Files app on your phone. If you’ve already unzipped it on a Mac, you’ll have a folder called apple_health_export instead: drop that folder on the tool, or use the folder button under it.
What’s in the export
| Part | What it holds | What the tool does with it |
|---|---|---|
clinical-records/ | One file per lab result, vital sign, condition and so on, downloaded from a health system you connected | Reads the lab results and vital signs, right away |
export.xml | Every sample your phone, Watch and apps wrote: heart rate every few minutes, every step, every night’s sleep | Scans it only if you ask, and turns it into daily figures |
export_cda.xml, workout-routes/, electrocardiograms/ | A summary document, GPS tracks, ECG recordings | Skipped |
No lab results?
The clinical records are only there if you connected a health system under Health Records in the Health app. Apple offers that in the US, Canada and the UK, for hospitals and clinics on systems like Epic and Oracle Health (Cerner). Results you typed in yourself, or that a lab sent you as a PDF, aren’t clinical records.
If yours came as PDFs, the lab PDF to spreadsheet tool converts them one report at a time, and these guides cover getting them out of each portal:
What you get
One row per result or figure, in the same columns as our lab results spreadsheet template:
| Column | What’s in it |
|---|---|
| Date | The day, as yyyy-mm-dd, so it sorts |
| Test | The test’s name, standardized where the record carries a LOINC code |
| Value | The number, or a word result such as “Negative” |
| Unit | mg/dL, mmol/L, bpm, lb and so on |
| Reference Range | The lab’s range, where the record has one |
| Flag | Normal, Abnormal or Borderline, where the health system flagged it |
| Category | Lipid, Thyroid, Metabolic for labs; Vitals for vital signs |
| Panel | The panel, where the record names one |
Lab results come first, then the clinic’s vital signs, each in date order. Tick or untick each kind of data above the table to choose what goes in the download.
How device vitals are counted
A Watch writes a heart rate every few minutes, so one row per sample would be millions of rows. The tool sums them up per day instead, the same way the HealthViewer app does:
- Heart rate: the day’s low, average and high, for days with at least 30 minutes of readings. Several sources in the same minute count once.
- Resting heart rate, HRV, respiratory rate, VO₂ max: the day’s average.
- Oxygen saturation: the day’s average and its low.
- Steps: the day’s total. Your iPhone and your Watch both count a walk, so for each hour the source that counted more is used, rather than adding the two.
- Sleep: total hours asleep for the night, plus deep and REM minutes when your Watch records sleep stages. A night counts toward the day it ends on, as the Health app shows it.
- Weight, blood pressure, temperature, glucose: one row per reading. Glucose from a continuous monitor (more than 24 readings in a day) is left out; Dexcom and Libre have exports of their own built for that.
The day you made the export is left out, because it was only partly recorded.
Why a converter and not an app
The spreadsheet is a copy of one export. Your next lab draw won’t be in it, and next month’s heart rate won’t either, until you export again and merge the two by hand.
The HealthViewer app keeps the history for you. It imports this same Apple Health export and charts the device vitals beside your lab results, pulls results straight from Epic and Cerner portals, and reads the lab PDFs that never make it into Apple Health at all. Everything stays in an encrypted file on your own disk. The first week is free.
Privacy
Your export never leaves your device. The page loads one script to read it, and from then on everything happens in the browser tab: the ZIP is opened where it is, only the parts the tool needs are unpacked, and nothing is stored. There is no upload, no account and no analytics on what you convert. If you want to check, open your browser’s network panel before you choose the file: nothing is sent.