Apple Health export.zip — what is in it and how to read it

Apple gives you a zip and no way to look inside it. Drop it below — the archive is opened and read on your device, without unzipping and without uploading.

Open your file

Drop your file here

export.zip straight from the Health app — do not unzip it

No account. No upload. The file is read on this device and never leaves it.

Nothing has been sent anywhere. 0 requests to this site, for the page's own code.

What is in the archive

EntryWhat it is
export.xmlEverything. One XML element per measurement, per workout, per sleep interval. This is the file that matters and the one that is enormous.
export_cda.xmlA clinical-document rendering of a subset. Different standard, different audience; not where your step counts are.
workout-routes/One GPX per outdoor workout with GPS. Often the bulk of the archive's size by byte count.
electrocardiograms/One CSV per ECG, on models that record them.

Why it is so big, and what to do about it

export.xml is not a summary — it is the raw record. Every heart-rate reading your Watch has ever taken is an element with a type, a source, a unit, a start date and an end date. The markup costs more bytes than the number does.

The consequence is that most tools which ask you to unzip it and open it fail: text editors will not load multi-gigabyte files, and spreadsheets do not read XML. Streaming the entry out of the zip without extracting it — which is what this page does — makes size a non-issue. A 6.3 GB export goes through a browser tab in about 115 seconds using roughly 170 MB of memory, because nothing is ever held whole.

The export format has generations

The archive carries a line reading HealthKit Export Version: N, and N matters more than it looks. A version 3 export predates ECG hardware entirely, so no amount of searching will find ECG data in it. Sleep is the sharper case: exports from before iOS 16 contain only InBed and Asleep, with no staging at all, while later ones carry Core, Deep and REM.

So "my export has no sleep stages" is very often a statement about the phone that produced it rather than about the export being broken. See exports that look empty and how sleep staging differs across devices.

What the tool tells you

The identifiers actually present, with counts. That is the fastest way to answer "does this export contain what I need" — if HKQuantityTypeIdentifierHeartRateVariabilitySDNN is not in the list, no downstream tool is going to find HRV in it.