Spookwerk
English ▾
← Blog

Why I built an Apple Health → CSV exporter

Your iPhone has been keeping a diary about you for years. Steps, heart rate, sleep, walking distance, every workout, the slow drift of your resting pulse across a decade. It's all in there, in the Health app, behind a wall of beautiful charts you can look at but can't really use.

Try to get it out. Go on. There's an Export button buried in your Health profile — it hands you a single giant XML file, one document containing your entire health history, in a format no spreadsheet opens and no AI tool politely reads. It's technically "your data." It's also technically useless the moment you want to do anything with it.

I built Vitadatum because I hit that wall myself, and I had a very specific reason to need what was on the other side of it.

The data is yours until you try to use it

A while back I was rehabilitating from a nerve condition. I was doing ergotherapy, and part of the work was keeping a diary: everything I did in a day, how much energy I had, how much pain was in my legs. The kind of slow, honest tracking that tells you whether you're actually getting better or just having a good week.

I wanted more in that diary than what I could feel and remember. Walking distance. Step count. The objective numbers, sitting right there on my wrist and in my phone, that would tell me something my own perception couldn't. The problem was getting them out. Every day I was copying figures by hand into a sheet — the most tedious possible version of caring about your own recovery.

I'm a developer. So of course I didn't want to copy numbers by hand; I wanted the phone to do it. I built a small prototype that pulled the data out of HealthKit automatically and dropped it where my diary could read it. That was the whole idea, at first: stop the manual typing.

But a prototype that you have to remember to open isn't really automation — it's just a faster chore. So it grew. It turned into a proper exporter that, after the first full export, keeps itself up to date in the background. New day, new numbers, written out on their own, no app to open, no button to press. The data is simply always there — current — ready for any system that wants to chart it, analyse it, or correlate it with how my legs actually felt that week. That background-export behaviour wasn't a feature I dreamed up for a spec sheet. It existed because a recovery diary you have to maintain by hand is a recovery diary you eventually stop maintaining.

That's the app. It started as a tool for one person's ergotherapy diary, and the origin is still right there in the codebase — early on, before it was even called Vitadatum, it was "HealthExporter," and one of the very first things I wrote into it was the diary integration. The rest of Vitadatum is what that prototype became once I cleaned it up enough to be useful to someone who isn't me.

Local by default, because it's a body, not a marketing funnel

Health data is the most personal data there is, and the current moment makes that uncomfortably clear. ChatGPT shipped a health feature. Perplexity shipped one. Everybody suddenly wants your medical history in their cloud so they can be helpful at it. Some of that genuinely is helpful — an AI that can read a year of your own measurements and spot the pattern you missed is a real thing now, and a good one.

But there's a difference between you handing your data to a tool you chose, for a question you asked, and an app quietly shipping your vitals off to a server because that's where the business model lives.

Vitadatum picks the first one. It writes your data to a folder on your own device. No account, no login, no analytics, no tracking, no server I run that ever sees a single heartbeat of yours. If you want to feed an export into ChatGPT or Claude, that's your call to make, file in hand — not a default I made for you. The app's entire job is to get your data out, in a clean form, under your control. What you do with it after that is the whole point, and it's none of my business.

JSON for the machines, CSV for the spreadsheets. 187 metrics across 14 categories — steps, heart rate, sleep, ECG, the lot. One file per day, deduplicated, always current. Open it in Numbers, pivot it in Excel, drop it into an AI tool, pipe it into your own script. It's just files. Files are the most durable, most portable, least lock-in format there is, and that's deliberate.

Why it's €4.99 once, and not €4.99 a month

The default move in 2026 is a subscription. Everything is a subscription. A flashlight app would charge you monthly if it thought it could get away with it.

I'm not doing that here, and the reason is simple: a subscription is a tax on something you only really do once. Getting your health history out of your phone is not an ongoing service I provide you — it's a thing you want to own, like a key to a door that should have been yours all along. Charging you rent forever to walk through your own door would be a little obscene.

So Vitadatum is freemium with a one-time unlock. The free tier exports the last seven days, so you can see exactly what you're getting before you pay anything. €4.99, once, unlocks the full history, CSV export, custom folders, and the background exports that keep everything current. No subscription, no upsell, no "premium tier two." You buy the key, the door is yours.

That price is deliberate, too. The serious competitors sit at $14.99 and $24.99. I put it low on purpose — low enough that if you've read this far and the thing sounds useful, the price isn't the part you have to think about.

The point

I didn't set out to build an App Store product. I set out to stop hand-copying step counts into a recovery diary, and the tool I built to do that turned out to be the thing I wished existed for everyone sitting on a decade of their own health data they can't get at.

Your data should be yours — not just in the sense that it lives on your device, but in the sense that you can actually take it somewhere and use it. That's the whole app. Everything else is detail.

(Getting years of health data off a phone without the thing running out of memory mid-export turned into its own engineering saga — but that's a story for another post.)

— O, Spookwerk