Analyse exported data from Apple Health app on iOS
Best experience on a non-mobile device; large ZIPs can fail on mobile browsers.
About this app
This app helps you explore and analyze data exported from the Apple Health app on iOS. Everything runs entirely in your browser — your health data is never sent anywhere.
You can zoom into the charts with the mouse wheel, drag to pan across time, and the date pickers will automatically stay in sync. The goal is to make it easier to observe trends, changes, and possible patterns in health metrics, especially for people living with ME/CFS and Long COVID.
This app is still under active development and has not been extensively tested. Feedback is very welcome by email:
kim dot syversen dot gmail dot com
⚠️ On mobile devices, large ZIPs can trigger memory limits or page reloads during parsing, so a laptop or desktop is recommended.
Metrics
Share your health and fitness data in XML format
You can export all of your health and fitness data from Health in XML format, which is a common format for sharing data between apps.
For more information, check Apple’s support website: support.apple.com.
Go to the Health app on your iPhone.
Tap Summary, then tap your picture or initials at the top right.
Tap Export All Health Data, then choose a method for sharing your data.
Low-memory mode disables raw sample exports and HR threshold filters. Turn off and re-parse to enable.
Quick readout of your selected range. Numbers summarize daily averages and totals.
No data yet.
Data controls
From date must be before To date.
Raw metrics are for CSV export only.
Last 7 days of metrics compared to your prior 30 days
Last 7 days compared to your prior 30 days. These are signals (direction + magnitude), not diagnoses.
Chart of metrics
i
Uses separate Y-axes so steps and heart metrics can be compared on the same timeline.
Zoom: wheel/trackpad over chart.
Pan: click + drag.
Pickers update on zoom/pan.
Coupled timeline
Aligned daily lanes make it easy to spot co-movement and lag (for example, sleep dips followed by next-day HRV drops).
Thin line/bars show daily values, the thicker line is a 7-day average, and the shaded band is your 30-day baseline ± 7-day variability.
Look for sustained shifts outside the band, not just one-day spikes.
Heart rate (daily avg)
Baseline trend; sustained rises above the band can signal stress or illness.
HRV SDNN (daily avg)
Higher is better; watch multi-day dips below the band after load.
Resting heart rate (daily avg)
Rises above the band can indicate fatigue or poor recovery.
Sleep (hours, asleep only)
Short sleep below the band often precedes HRV drops and higher RHR.
Steps (daily sum)
Activity load; sustained spikes above the band can precede next-day strain.
Relationships & change
Scatter plots use daily aggregates in the selected Explore range and Source.
Hover points to see date + values.
Heart rate (avg) ↔ HRV SDNN (avg)
Higher HR often pairs with lower HRV; look for consistent patterns.
Resting HR (avg) ↔ Steps (sum)
Activity load can raise resting HR; watch clusters after busy days.
Resting HR (avg) ↔ HRV SDNN (avg)
Lower resting HR with higher HRV suggests better recovery.
Sleep (hours) ↔ HRV SDNN (avg)
More sleep often tracks with higher HRV; look for upward slope.
Sleep (hours) ↔ Resting HR (avg)
More sleep can align with lower resting HR; look for downward slope.
PEM lag analyzer
Flags high‑load days (top 20% of the selected metric) and shows 1–5 day changes in the other metrics vs your prior 7‑day average.
Optional filter: only show load days where HR exceeds your threshold for at least N seconds.
Most relevant for people with ME/CFS and Long Covid who experience delayed symptom spikes (PEM).
Delta colors: green = better, red = worse. Baseline is the prior 7‑day average.
Daily energy envelope
Shows whether you stayed within your envelope over the last 7 days by comparing daily load to a 30‑day baseline.
Staying near the baseline suggests better pacing.
Most useful for people with ME/CFS and Long Covid who need to avoid over‑exertion.
Green = within envelope, amber = elevated, red = high load.