Export

Everything you have logged, or just a window of it, as one JSON document. It is built on the phone and handed to the iOS share sheet; it goes only where you send it. Field names read as English and dates are ISO 8601, so the file works as direct input to a spreadsheet, a script or a language model without a decoder ring.

Settings: the data server field, the installed bundle version with Check for Updates, and the Your data section with a timeframe picker, Include Apple Health workouts and Build a JSON export.

Making one

Settings › Your data. Pick a timeframe, tap Build a JSON export, then Save or share the export. The summary under the button leads with the span the file covers and counts the diary entries, workouts, Apple Health workouts and habit ticks inside it, so "I thought I exported just yesterday" is caught before sharing. Changing the timeframe discards a built file; the share button never hands out a file from a different span.

TimeframeCovers
TodayToday only.
YesterdayYesterday only.
Last 7 daysToday and the six before it.
Last 30 daysToday and the 29 before it.
Last 90 daysToday and the 89 before it.
Custom rangeTwo dates you pick, inclusive, neither in the future.
EverythingFull history.

Windows are whole calendar days in your own time zone, the same grouping the diary uses. The file is named for what it holds: setpoint-export-2026-10-11-to-2026-10-17.json for a window, setpoint-export-2026-10-17.json for full history, dated the day it was built.

How to read the file

What is in it

KeyWhat it holds
schema, exportedAt, timezone, appVersionThe file's own facts.
coversfirstDay and lastDay of the window. Absent for full history.
profileDate of birth, sex, height, weight, activity level, weight goal, pace in kg per week, target weight and date if set, protein mode and figures, unit preference, and the goal metric (weight, bodyFatPercent or fatMass) with its target and the date it last changed. The goal metric is never an input to the targets.
currentTargetsToday's typical budget: kcal, protein, carbs, fat and fiber in grams, computed from the profile and the baseline movement figure.
dailyTargetsOne row per logged day: the day, Apple Health's measured movement for it when there was any, the basis the budget used (measured, projected, estimated, coldStart) and the targets the app displayed that day. Without these a tool comparing entries against currentTargets concludes the diary is missing food that was never missing. Judged by the current profile, like everything else.
foodDiaryEach entry, oldest first: loggedAt, meal, name, brand, quantity, portion, grams, kcal, proteinG, carbG, fatG, fiberG when known, source (the database it came from), weightIsNominal when the grams are a stand-in for a counted serving rather than a weight, and uuid, the same id the entry's Apple Health samples carry when the food log is shared.
weighInsdate, weightKg, fromHealthKit, and source: manual for a typed weigh-in, otherwise the Health source's name, so a reader can tell your number from the scale's.
bodyCompositionOne row per day a scale reported: date, bodyFatPercent (a percent, 28.4, not a fraction), weightKg (the weight the masses were derived from: the scan's own, else the day's weigh-in), fatMassKg and leanBodyMassKg (weight × percent, and the rest, so fat + lean = weight), reportedLeanBodyMassKg (what the scale said, kept for the record), coherenceFlag (present, and true, only when the reported lean mass disagrees with the derived one by more than 50 g), source. Masses are absent when no weight existed to derive them. Whatever covers says, every reading in the median's 14-day window is included, so the headline can be checked against the rows it came from.
currentBodyCompositionWhere composition stands as of the export, from the whole history, whatever the window: the latest reading; median, the median reading of the last 14 days as one full row (date, bodyFatPercent, fatMassKg, leanBodyMassKg, weightKg, source), the readings sorted by body fat percent and the lower middle one taken, so it is a real measurement whose figures balance; readingsInWindow and medianWindowDays (14); the change in body fat, fat mass and lean mass against the reading nearest 30 days back; and stale, true when the newest reading is over 14 days old. median is absent, not zero, under three readings in the window or when stale, and the trend then stops at latest.
healthWriteEnabled, healthWriteSinceWhether the food log is being pushed to Apple Health and from which day, so a reader knows another store may hold a copy of the diary. healthWriteSince is always a real day: when the whole log is shared it is the first diary entry's day. Present only while sharing is on.
measurementsMeasured days: date, note, sites (each with site, centimeters, inches, fromHealthKit) and photos (each with filename, pose, date). Photo bytes are not in the file.
workoutsEverything trained, in one list, oldest first, the way Session history shows it. source is logged for a session with sets entered here or apple-health for one only the Watch knows about. A logged session carries its plan (the prescribed sets with their progression decision record), its sets, its notes, an optional watchRecording (the Health record of the same workout: activity, duration, kcal, average heart rate, and which app recorded it), and lightSession when it was planned light. One workout, two records of it, never two workouts.
unattachedSetsSets whose session is not in the file.
workoutTemplatesEach template's name and exercises in order.
exerciseSettingsThe progression rules per exercise, as suggestions applied them: increment, equipment, floor and bar weight, band levels, rep range, set structure, working and warm-up set counts, gate, maximum jump, technique and retired flags, calibrating state.
exercisesMarkedDoneExercise and day for each "done" mark.
customExercisesName, primary muscle, equipment, notes.
habitChecksEach tick: habit, day, and origin, which is auto for a tick the app credited and otherwise a manual one.
activeHabitsThe habits currently chosen, by slug.
customHabitsName and cue.
recipesName, servings, source link, instructions, the original ingredient text, and each ingredient with its matched name, quantity, portion, grams, weightIsNominal when the grams are a stand-in, kcal, protein and fiber.
customFoodsName, brand, values per 100 g, or perServing naming the serving the values are for.

Weights in the training log

Every set and planned set carries weightKg and weightLb. A lifter reading plan against actual thinks in plates, and 34.02 kg hides that it was 75 lb. Sets also carry setNumber, reps, completedAt, and when present rating, failReason, deviation, pain, side and warmup. Planned sets carry the decision record: rule, baseLb, deltaIncrements, previousLb, previousReps, previousRating, gateRemaining, ladderRepaired, governingSet and explanation. The rules are described on the Train page.

Deliberately absent

Caches, day locks, and the per-food correction plumbing (custom portions and nutrition overrides). Diary entries snapshot their nutrition at logging time, so the record is complete without the machinery behind it. Photo bytes, which live in the app's folder. Anything from Apple Health that you did not connect.

An abridged example

A one-day file, cut down to show the shape. Values are illustrative.

{
  "appVersion" : "1.0",
  "covers" : {
    "firstDay" : "2026-10-17",
    "lastDay" : "2026-10-17"
  },
  "currentBodyComposition" : {
    "bodyFatPercentChange30Days" : -0.8,
    "latest" : {
      "bodyFatPercent" : 24.1,
      "coherenceFlag" : true,
      "date" : "2026-10-17T06:42:00-04:00",
      "fatMassKg" : 19.52,
      "leanBodyMassKg" : 61.48,
      "reportedLeanBodyMassKg" : 61.4,
      "source" : "Withings",
      "weightKg" : 81
    },
    "median" : {
      "bodyFatPercent" : 24.4,
      "date" : "2026-10-12T06:40:00-04:00",
      "fatMassKg" : 19.86,
      "leanBodyMassKg" : 61.54,
      "source" : "Withings",
      "weightKg" : 81.4
    },
    "medianWindowDays" : 14,
    "readingsInWindow" : 6,
    "stale" : false
  },
  "dailyTargets" : [
    {
      "basis" : "projected",
      "day" : "2026-10-17",
      "movementKcal" : 412,
      "targets" : { "carbG" : 225, "fatG" : 47, "fiberG" : 20, "kcal" : 1703, "proteinG" : 96 }
    }
  ],
  "exportedAt" : "2026-10-17T21:05:12-04:00",
  "foodDiary" : [
    {
      "carbG" : 1.1,
      "fatG" : 9.5,
      "grams" : 100,
      "kcal" : 143,
      "loggedAt" : "2026-10-17T08:05:00-04:00",
      "meal" : "breakfast",
      "name" : "Egg, whole, raw, fresh",
      "portion" : "2 large",
      "proteinG" : 12.6,
      "quantity" : 1,
      "source" : "usda_foundation",
      "uuid" : "6B1C2F0E-3D7A-4C7B-9E1F-2A0B5C8D9E10"
    }
  ],
  "healthWriteEnabled" : false,
  "schema" : 8,
  "timezone" : "America/New_York",
  "weighIns" : [
    {
      "date" : "2026-10-17T06:41:00-04:00",
      "fromHealthKit" : true,
      "source" : "Withings",
      "weightKg" : 81
    }
  ]
}

See also: Apple Health, Privacy.