GymBuddy Local-first gym log · Android, iOS & a browser

For people who already know what they are doing

It keeps the record. You keep the opinions.

GymBuddy does not write your programme, mark your session out of ten, or tell you that you are falling behind. You decide what the week looks like. It remembers what actually happened — and hands your week to a friend when they ask what you are running.

  • No account
  • No server
  • No subscription
  • Works offline
The Today screen: Upper Body day, six exercises, twenty sets, about forty minutes, with the first three movements and their targets listed.

What it does not do

There is no coach in here.

Plenty of good apps will build you a programme, score your effort and tell you when to push. This is not one of them. It assumes you have decided how you want to train, or that you are working it out — which is also yours to do, not an app's.

No programme

The week is yours

Start from a common split, write your own, or take a friend's. Nothing is generated for you and nothing is recommended — the days are the ones you put there.

No scoring

A session is not marked

No rating out of ten, no readiness figure, no badge. The number beside a movement is what you lifted last time, which is a fact rather than an instruction.

No guilt

Missing a day is allowed

Say "not today" and it writes down that you did not go. A reason is optional and asked for afterwards, never on the way out the door. Nothing is broken by it.

It cannot compare you to anybody either, and not out of politeness — with nothing on a server, there is no one else's training in here to compare you against.


What leaves your phone

Nothing.

There is no back end to send anything to. Your training history lives in the app's own storage on your phone, and that is the whole architecture.

Most training apps wantGymBuddy
An account and a passwordNone
Your email addressNever asked
A monthly subscriptionNothing to pay
Analytics and crash telemetryNot collected
A connection to work at allFully offline
Your workout history, on their serversOn your device

The trade is honest and the app says so out loud: with no server, the only copy that survives a lost phone is one you export yourself. Settings tells you when you last did, and turns the reminder red when it has been too long.


Today

What is overdue, before what is next.

The day opens on the session that is due. Under it, a figure lit by what has gone untrained: recovering if you trained it today or yesterday, ready after two days, overdue at a week — or never, which is louder than any of them. Tap a muscle and it says when it was last worked and which session did the work.

It counts every group your split asks for and every group you have actually trained, so a squat session outside the plan is not invisible — and a group you have never trained and never planned stays out of it, rather than nagging you about a day you do not run.


The session

A table, not a wizard.

Set number, weight, reps, done. The load sits above the list because it is one decision for the exercise rather than one per set — move it and every set still ahead of you moves with it.

Each movement shows what you loaded it to last time, and nothing at all where you have never trained it. Mark a set as a warm-up and it still gets logged — it happened — but stays out of your volume, your records, and the weight suggested next time.

Last week's set sits under the set you are doing now, a warm-up ramp is one tap where a ramp makes sense, and two movements marked as a superset alternate set by set with the rest saved for the end of the round. Afterwards, how hard it felt is five words rather than a mark out of ten — Easy through All out — and you can skip it.

A logged session: sets listed with weight and reps, each with a done tick, and a rest timer.

The week

The calendar fills itself in.

A day counts as trained because sets were logged on it, not because you remembered to check in. Each cell carries the day's name and a fill scaled against the busiest day that month, so three Pulls and no Legs is visible at a glance.

Tap a trained day to read it back. Tap an empty one in the past to fill it in — and say which day of your split it should count as, since a Tuesday you filled in later is described rather than re-planned. Say "not today" and the skip is recorded as a skip — a reason is optional, asked for afterwards, and never on the way out the door.

Under the month: this week's sets per muscle group, counted over the seven days up to today rather than since Monday, so the answer is about the week you have actually had.

A month grid with trained days filled in the accent colour, skipped days in grey, and totals for sessions, sets and volume underneath.

Progress

One lift at a time.

Pick a movement: an estimated one-rep max over time, the recent sessions behind it, and — for the lifts that have a published standard — where it stands against your own body weight, Beginner through Elite. That last one appears only once your weight is on file, because a bodyweight multiple with no bodyweight in it is a made-up number.

Body weight over time sits beside it, and progress photos if you want them: front, side and back, or poses you name yourself, compared against the same pose months apart rather than against a mirror.

Any of it can leave as a card — a session, a streak, a month, a year, or what one lift has done since you started — drawn here and sent by you, carrying nothing you did not log.

The Progress screen: an estimated one-rep max chart for a movement, with session history underneath.

Splits

Keep as many weeks as you like.

Start from Push/Pull/Legs, Upper/Lower or Full Body — or from nothing — then name it, add days, and set what each weekday trains. A built-in is copied rather than adopted, so from the moment you take it, you are editing yours and nobody else's idea of it.

Switch

Keep both weeks

Moving to another saved split loses nothing — the one you leave is kept exactly as it stands, which is what makes trying a different week worth doing.

Share

"Send me what you're running"

The answer is a link in a message, not an invitation to sign up for something. It opens on a preview of what the week trains and which movements are new to them — and lands beside the split they are on, never on top of it.

Library

112 movements, plus yours

Eight muscle groups, including the conditioning people log beside their lifting. Type a name nothing matches and the picker offers to create it.


Writing one

Type it out, or ask an assistant.

A week is plain text — a line per day, Push: Bench Press 4x6, Dips 3x10 — so you can write one in a message to yourself. Paste it into the app and it reads it as you type, telling you what it found before anything is saved.

If you would rather not start from a blank page, the import screen hands you a prompt with your training days already filled in. Give it to ChatGPT, Claude or anything similar, say what you are after, and paste the answer back. That is still not the app telling you how to train — it is you asking somebody else, which has always been allowed.


Details that took the longest

The unglamorous half.

Reminders

6:30 means 6:30

A nudge at the time you set, not somewhere in the hour after it. One tap on the notification says "not today" and the skip is recorded without opening the app.

Home screen

A widget that admits it

Today's session at a glance — and if the phone has sat untouched overnight, it says it is out of date rather than confidently showing you yesterday.

Export

A spreadsheet you own

Every set as a CSV, one row each, that opens anywhere and still means something on the day this app stops being installed.


Not on a store yet

It works. Today, it opens in a browser.

GymBuddy runs on Android and iOS, and gets used every training day on the phone of the person who wrote it. There is no App Store or Play listing to link to yet, and this page is not going to pretend otherwise while it waits for one.

Until there is, the same app runs in a browser tab. Nothing to install and nothing to sign up for: what you log is kept by that browser, on that device, and goes nowhere else. A tab cannot do everything a phone can — no reminders, no step count, no widget — and Support says exactly what is missing.