Local-first strength log · iOS

Commit,
Lift,
Diff.

Simplified gym log.

diff — this week vs last

LiftDiff's weekly diff: exercises marked ++ with weight transitions like 187.4 → 198.4.
The LiftDiff home screen: this week, fatigue by muscle, suggested exercises.

Where your records live

Your log stays
on your phone.

Every set you log is written to a single file on your device. The developer never gets a copy, and nothing in the app reports back. Turn on iCloud sync and your records go to your own private iCloud — and the developer can't read that either.

One file, yours to keep

Your entire history is one SQLite file in the app's own folder — not an account you sign in to, and not a service that can take it away.

Nothing reports back

No analytics SDK and no third-party SDKs are embedded. No advertising identifier and no device identifier are read.

Friends see a summary

Sharing is off until you turn it on. Even then, friends see only a summary — how long, how many sets, which muscles. Your sets and notes never leave your phone.

The details are in the privacy policy.

Starting a session

Press. Slide. Logged.

The rest of the app is just as simple. Hold the start button, your routines fan out under your thumb, and you slide onto the one you came here to do.

  • One thumb, one motion, from anywhere in the app
  • Favorites sit closest to your thumb
  • Or start empty and add exercises as you go

Dynamic Island

Lift more. Tap less.

The set ends, the timer starts, and you put the phone down. Rest runs in the Dynamic Island and on the Lock Screen — never unlock to check it, and never open the app to start the next set.

  • Live Activity for the whole session, not just the timer
  • Complete a set from the Lock Screen
  • Expand for the next exercise, sets left, and time remaining
The LiftDiff home screen: this week, fatigue by muscle, suggested exercises.

Fatigue

See where the load landed.

Every set you log feeds a per-muscle recovery estimate, drawn on a body map. Not a single "readiness" number — seventeen muscles, each decaying at its own rate.

Recovery = e^( −Σ( RIR × Exercise × Muscle split × Time decay ) / Yardstick )
Which muscle is most fatigued is reasonably reliable. How fatigued it is — the absolute number, the percentage — is a rough guide only.

Progress

Week by week,
exercise by exercise.

See your progress, not just your logs. Every week is diffed against the one before it, and every exercise keeps its own estimated 1RM, top weight and volume over time.

  • What moved since last week, marked ++ and −
  • Estimated 1RM, top weight and volume per exercise
  • Every set you have ever done, under the chart
The feed: friends' finished workouts with duration, sets, muscles worked, PR badges and emoji reactions.

Friends

Your friends are
the reminder.

A feed of your friends' finished workouts — when, how long, what they hit. It's hard to skip a day when you can see your friends didn't.

  • A nudge the moment a friend finishes, and reactions are one emoji tap
  • Per-exercise rankings: estimated 1RM, top weight, weekly sets
  • Weights stay private unless you share them — opt-in, kept on your own iCloud, and you can block anyone

Your data

Import anything.
Export everything.

Bring your history in from anything — another app's export, a spreadsheet, your own notes. Take it back out as JSON or CSV, or copy it in one tap. The schemas are public, so anything can read it. Including you.

Out in one tap

JSON or CSV, as a file or straight to the clipboard. RIR, notes and warm-up sets all survive the round trip.

In from anything

Strong and Hevy CSVs import directly. For anything else, the app hands you a prompt that converts it — RPE becomes RIR on the way in.

The rest of it

The essentials.

Questions

Can I bring my history from Strong, Hevy, or my own workout notes? +

Yes. Strong and Hevy CSV exports import directly. For anything else — another app, a spreadsheet, a screenshot you typed up, notes in your phone — the app gives you a prompt to paste into an AI along with your data; it hands back JSON that LiftDiff reads. RPE is converted to RIR on the way in, and notes stay attached to the right day and the right exercise.

Can my friends see my weights? +

Only if you choose to. By default a friend sees that you finished a workout — when, how long, how many sets, which muscles. Weights and exercise names go out per workout, and only when you switch them on. Friends are mutual: both sides approve, and blocking cuts both directions at once.

How is fatigue calculated? +
Recovery = e^( −Σ( RIR × Exercise × Muscle split × Time decay ) / Yardstick )

Computed for every set, summed up, then decayed by elapsed time.

RIR
How many reps you had left. The closer to failure, the more fatigue it creates
Exercise
How demanding the movement is. Higher for free weights, stretched positions, and things you have not done in a while
Muscle split
How that load is shared out. A bench press goes mostly to the chest, with some to the triceps and front delts
Time decay
Falls off as time passes. How fast differs by muscle
Yardstick
What maps it onto 0–1: half your weekly set target

What this measure cannot tell you

  • It has not been checked against your actual recovery.
  • The muscle split is a hypothesis based on EMG research, not a measurement.
  • Only the order in which muscles recover is grounded; the timings themselves are assumed.
  • Sleep, nutrition, stress and age never enter this calculation — and all of them matter a great deal.
  • Anything you don't log — a long walk, a day of moving furniture — isn't counted.

Which muscle is most fatigued is reasonably reliable. How fatigued it is — the absolute number, the percentage — is a rough guide only.

Where is my data, and can I get it out? +

In one SQLite file in the app's Documents directory. Export the whole thing as JSON or CSV any time, or copy it to the clipboard in one tap. The schemas are published, so you don't need LiftDiff to read your own records.

Is there an Apple Watch app? Android? +

Neither, today. The Watch is the more likely of the two. Android isn't planned — but your data exports to open formats, so nothing traps you here.

Put a number
on the feeling.

Free.