Holocene reads a CSV or JSON file and writes the readings into Apple Health — showing you exactly what it found first, and letting you take the whole import back out again whenever you want.
Email holocene@shaizi.fr. Please say which iPhone and iOS version you are on, and — if a file would not import — paste the first few rows of it. Do not send health readings you would rather keep private; the row structure is what matters, and you can replace the values with made-up ones.
One row is one reading. Columns may be in any order, and the common spellings other apps use are understood.
type,start,end,value,unit,source
heart_rate,2026-08-18T22:41:00Z,,58,bpm,Chest strap
sleep,2026-08-18T23:10:00Z,2026-08-19T01:40:00Z,deep,,Chest strap
steps,2026-08-18T08:00:00Z,2026-08-18T18:00:00Z,8000,count,Phone
JSON works too — an array of objects with the same fields.
| type | Written to Health as | Unit | Needs an end time |
|---|---|---|---|
heart_rate | Heart Rate | count/min, bpm | no |
resting_heart_rate | Resting Heart Rate | count/min, bpm | no |
hrv_sdnn | Heart Rate Variability (SDNN) | ms, s | no |
spo2 | Blood Oxygen | fraction, % | no |
respiratory_rate | Respiratory Rate | count/min | no |
body_temperature | Body Temperature | degC, degF | no |
steps | Step Count | count | yes |
active_energy | Active Energy | kcal, kJ | yes |
sleep | Sleep Analysis | a stage | yes |
Sleep stages: inBed, awake, core, deep,
rem, asleep.
ISO-8601 is the safe form: 2026-08-18T22:41:00Z, or with an offset,
2026-08-19T00:41:00+02:00. Unix timestamps work. A bare date such as
2026-08-18 is read as midnight in your time zone, and Holocene tells you it made that
assumption.
The unit column holds something Holocene cannot map with certainty. The message lists the units that type accepts. It refuses rather than guessing, because a wrong unit puts a wrong number in your health record.
A comma before exactly three digits could be a decimal comma or a thousands separator — twelve thousand, or twelve point three. Use a dot for the decimal point, or remove the separator.
Steps, active energy and sleep are measured over a period, not at an instant. Give both a start and an end.
The value is impossible for that measurement — a heart rate of 1200, or a temperature that is really a deviation from a baseline rather than an absolute reading.
Nothing is duplicated. Each reading carries a key made from its source, type and time, so a second import of the same file changes nothing, and a corrected file replaces what was there.
Open the History tab, tap the import, and choose Remove These Samples from Health. To take back everything at once, use Remove Everything Holocene Wrote at the bottom of that tab.
Holocene can only ever delete samples it wrote itself. Readings from other apps, from a watch, or entered by hand in the Health app cannot be touched by it.
Your health data never leaves your device. Holocene contains no networking code, has no account, and asks only for permission to write to Health — never to read it. The full policy is at holocene.shaizi.fr/privacy.