HealthSave Get on App Store

Apple Health to Obsidian: Sync Your Health Data Into a Personal Knowledge Base, HealthSave

To get Apple Health data into your Obsidian vault, export it as JSON from HealthSave, move it into your vault, and convert it into Dataview-ready markdown tables with a ten-line script. Everything stays on your devices, your notes stay yours, and you get the same charts and queries you would in a dedicated health app, but inside the knowledge base you already use.

Why people want this

If you keep a daily note in Obsidian, you have probably wanted a date-stamped entry for last night's HRV, your resting heart rate this morning, how your sleep stages compared to last week, or whether that workout actually moved your weekly distance. Apple Health has the numbers; Obsidian has the notes; the gap is moving the data from one to the other without breaking your flow.

The good news is that the gap is small. HealthSave exports the same JSON Apple Health already aggregates, and Obsidian reads plain markdown. A short script between them is the entire pipeline.

Pick a path: iCloud, Shortcuts, or a Mac script

PathBest forEffortFrequency
iCloud Drive dropAnyone with a vault on iCloudLowestManual or on a Shortcut schedule
iOS ShortcutiPhone-only users who want it automaticLowDaily, weekly, on-demand
Mac script over a shared folderPeople who already script on their MacMediumWhatever cron / launchd says

All three use the same HealthSave export. The difference is who runs the conversion step and how often.

Step 1, Export from HealthSave

  1. Install HealthSave free and grant read-only Health access.
  2. Open the Export tab. Pick the metrics you want (heart rate, HRV, sleep, steps, weight, workouts) and the date range. Free covers the last 7 days; Pro ($24.99 one-time, Family Sharing) unlocks your full multi-year history — and that is the real reason to import into Obsidian.
  3. Choose JSON. It is the cleanest format to parse, and every metric arrives as its own row, so sleep stages, workout numbers, and blood pressure components are all in there (the JSON guide has the exact schema).
  4. Tap Export. The file lands in a temp file; the iOS share sheet hands it off wherever you decide.

Step 2, Get it into your vault

The two practical iOS-to-vault handoffs:

On a Mac, you can skip iCloud entirely: have HealthSave AirDrop the JSON to your Mac, or point iCloud Drive at a folder the Mac script also watches.

Step 3, Convert JSON to Dataview-ready markdown

This is the smallest script that is genuinely useful. One file per metric per year, with a YAML frontmatter so Dataview can index it, and a Markdown table so it renders without any plugin.

// convert.js, drop into your vault root, run after each export.
// usage: node convert.js /path/to/healthsave_export.json
const fs = require('fs');
const path = require('path');

const VAULT = process.env.HOME + '/Documents/Obsidian/Vault';
const METRICS = ['heart_rate', 'step_count', 'heart_rate_variability', 'sleep_total'];

const data = JSON.parse(fs.readFileSync(process.argv[2], 'utf8'));
const grouped = {};
for (const row of data) {
  if (!METRICS.includes(row.metric)) continue;
  const year = row.date.slice(0, 4);
  grouped[year] ??= {};
  grouped[year][row.metric] ??= [];
  grouped[year][row.metric].push(row);
}

for (const [year, byMetric] of Object.entries(grouped)) {
  const out = path.join(VAULT, 'Health', year);
  fs.mkdirSync(out, { recursive: true });
  for (const [metric, rows] of Object.entries(byMetric)) {
    const lines = [
      '---',
      `metric: ${metric}`,
      `year: ${year}`,
      `samples: ${rows.length}`,
      'tags: [health, dataview]',
      '---',
      '',
      `# ${metric.replaceAll('_', ' ')} — ${year}`,
      '',
      '| Date | Value | Unit | Source |',
      '| --- | --- | --- | --- |',
    ];
    for (const r of rows) {
      lines.push(`| ${r.date} | ${r.value} | ${r.unit} | ${r.source} |`);
    }
    fs.writeFileSync(path.join(out, `${metric}.md`), lines.join('\n'));
  }
}
console.log('wrote', Object.keys(grouped).length, 'year files');

Re-run it whenever you want fresh numbers. It is idempotent: it overwrites the same files, so nothing duplicates.

Step 4, A dashboard note you can open every morning

Drop this into Health/Dashboard.md in your vault. With the Dataview plugin, the tables populate from the year files the script wrote.

---
title: Health dashboard
tags: [health, dashboard, dataview]
---

# Today

\`\`\`dataview
TABLE rows[0].sleep, rows[0].hrv, rows[0].steps, rows[0].rhr
FROM #dataview AND "Health"
WHERE year = date(today).year
SORT metric ASC
\`\`\`

# Last 30 days, resting heart rate

\`\`\`dataview
TABLE date, value
FROM "Health/2026"
WHERE metric = "heart_rate" AND date >= date(today) - dur(30 days)
SORT date ASC
\`\`\`

Charts inside Obsidian

Three honest ways to render charts from the same data, in increasing complexity:

None of them require leaving your vault or giving a third party access to your data.

Honest limits

Alternatives, briefly

If Obsidian is overkill and you only want a glance, two shorter paths exist:

FAQ

Can I get Apple Health into Obsidian automatically?

Yes. The cleanest path on iOS is HealthSave exports JSON to iCloud Drive via the share sheet, then an iOS Shortcut picks it up and converts it to markdown tables in your vault. On a Mac, a small Python script that runs on a schedule does the same thing over any shared folder.

What format is easiest to import into Obsidian, JSON or CSV?

JSON. HealthSave's JSON export is a clean array of sample objects with predictable fields; one short script turns it into year-file tables that Obsidian, Dataview, and Bases all index without complaints. CSV works if you'd rather eyeball the raw data first.

Do I need HealthSave Pro?

For the last 7 days, no, JSON export is free. For your full multi-year history (the real reason to import into Obsidian), you need Pro: a one-time $24.99 with Family Sharing, no subscription.

Does the data leave my iPhone or Mac?

No. Everything stays on your devices: HealthSave reads Apple Health on-device, writes JSON to your Files app, iCloud, or a local folder; a Shortcut or a local script moves it into your vault. No cloud service in the middle.

Is there an Obsidian plugin that reads Apple Health directly?

There are community plugins in that direction, but they require giving the plugin HealthKit access, which is fragile because iOS controls HealthKit authorization at the app level, not the plugin level. The export-and-import path through HealthSave is reliable because HealthSave is a real HealthKit-aware app.

What does the resulting markdown look like?

Either a year file per metric (e.g. Heart Rate 2026.md) with a Markdown table and YAML frontmatter for Dataview, or a daily note with metrics appended as frontmatter. The first is better for trend queries; the second is better for journaling alongside the data.

Can I chart inside Obsidian?

Yes. Dataview produces live tables; the Charts plugin renders them as line/bar/area; Obsidian Bases (built-in, 2026+) gives you a spreadsheet-like view with filters and formulas. All read directly off the markdown tables your script writes.

HealthSave is not a medical device. It is for informational purposes only and does not diagnose, treat, cure, or prevent any disease or condition. The accuracy of any health data depends on your wearable device and its sensors.

Related guides

Get HealthSave

Free to download, no account. Export to JSON in a couple of taps, run the script, open your vault.

Download HealthSave on the App Store


HealthSave: Export Health Data, on iPhoneGet on the App Store