An evidence-based training platform with per-set RIR targets, a daily-undulating-periodization engine that works off your real 1RMs, full nutrition tracking, and a coaching loop — all of it logging to your own device first, so it works in a basement gym with no signal.
No card. Nothing is charged today — payments aren't built yet, so there is nothing here that could take your money.
What's actually in here
Every prescription in the app carries a note saying where it came from — and which numbers were inferred rather than published. There are no testimonials or user counts on this page because there is nothing honest to put there yet.
You are running three tools that don't speak to each other. A logger that records what you did but has no opinion about what you should have done. A program in a PDF or a spreadsheet tab, which is where the RIR targets, the rest ranges and the substitution options went to die — you memorised the first week and have been approximating ever since. And a nutrition app that has never heard of either.
So the detail that actually drives the adaptation is the detail that gets lost. Not the exercise — you remember the exercise. It's whether set three is meant to be RIR 2 or RIR 0. Whether this is the lift you're not supposed to take to failure. What to do when the rack is taken.
A PDF can hold a per-set RIR array; your logger can't, so you carry it in your head and it drifts by week three.
Cloud-first apps stall on a set you're mid-way through, in the one room where that matters most.
Every fitness app says it. Almost none can show you the rule that enforces it.
Programming
Every working set carries its own RIR target — an array, one value per set, not a single number smeared across the exercise. Around it: a warm-up set range, a rest range, the intensity technique that applies to the final set only, and the substitution options for when the equipment is taken.
Some lifts are flagged so the app never asks you to take them to failure, regardless of what the rest of the program is doing. Lifts carry substitution options, and the shoulder-safe modifier applies to the generated templates.
Supersets, tri-sets and giant sets are first-class — grouped in the program, grouped in the logger, and counted correctly in your weekly set estimate per muscle.
Twelve programs ship with the app: seven built-in templates with stated lineages you'll recognise — Nippard-style full-body and upper/lower work, Mentzer/Yates HIT, a Dorian Yates body-part split, Renaissance Periodization volume landmarks — plus the original Min-Max split and four DUP waves. A generator and a modifier pipeline tune volume, intensity and shoulder-safety against them. Or build your own from scratch, and export it as a file someone else can import.
Where a number was inferred rather than published, the app says so — in the data, not in a footnote.
Lineage attribution is a citation, not an endorsement. None of the coaches or organisations named above are involved with this app in any way.
Barbell Bench Press
Effort target, per set
The program view. This is where the per-set effort row renders. Inside the live logger the target is carried as a pre-selected value on the set rather than as this row — an honest limitation we'd rather state than let you find.
Periodization
The DUP engine runs four main lifts — squat, bench, deadlift, overhead press — through three archetypes across the week. Power, Strength, Hypertrophy. Each training day, an assigned lift gets one top set at a fixed rep count and percentage of your 1RM, then a four-set back-off block at a lighter percentage.
Four waves are available — three, four, five and six days — so the same engine fits the week you actually have. The top set is always flagged as a lift the app won't push you to failure on.
We'll say the quiet part. Undulating periodization is not proven superior to a volume-matched linear program. Grgic et al. 2017 found no meaningful difference, and the app says so in every DUP program description, on the screen, before you pick it. What DUP buys you is frequency and autoregulation. If you want a claim bigger than that, another app will happily make it.
| Archetype | Top set | Back-off |
|---|---|---|
| Power | 1 × 92% | 2–3 × 82.5% |
| Strength | 3 × 88.5% | — |
| Hypertrophy | 5 × 86% | 6–10 × 70% |
Rest ranges and per-set RIR come attached to each of these. All percentages are computed against the 1RMs you enter, not against a template's guess at what someone your size lifts.
Local-first
Every workout and every meal you log is written to your device's own database with no network round trip. Not queued for the cloud — written. The sync is a background replica of something that is already safe.
Which means the basement rack with no bars of signal is a solved problem, not a caveat. Install it to your home screen and the app opens with the network switched off entirely. The one time you need connectivity is the first sign-in on a new device; after that the session is cached and every subsequent open skips straight past it.
An unfinished workout is covered by the same principle: every set is written to your device's storage the moment you log it — weights, reps, the per-set effort you actually hit, HIT and MISS, any exercise you swapped, any rest you overrode — rather than being held in the page, so a reload or a crash doesn't destroy what you've already logged.
On top of the logging: per-set HIT/MISS marking, estimated 1RM trends per lift, PR detection, a bodyweight log, a cardio log, and a nutrition side with a macro calculator, a meal logger, a pantry, and barcode scanning that reads from Open Food Facts — with manual code entry on browsers that can't decode a camera feed, and a clear label saying whether the numbers it found are per serving or per 100 g.
Local-first is a reliability property, not a secrecy claim. We will not tell you your data stays on your device, because it doesn't. It is written locally first and then replicated to our database — that is how your account works on a second device, and how a coach you have linked with sees your training. What privacy looks like here is written out rule by rule further down this page and in the privacy policy.
Two limits worth knowing before you sign up. Nutrition lookups need the network — an offline session can log the workout and type the macros, but the barcode database is online. And the app does not yet reopen an unfinished session for you: the logged data is kept, but you start the day again from the program screen. The in-progress draft is stored on that device and in that browser, so clearing site data or switching devices mid-workout starts fresh.
A five-step setup: your goal, your experience, how many days you actually train, your body stats, your units. It picks a program that fits the days you gave it. Two minutes, and you can change any of it later.
The Program tab opens on today. Every exercise arrives with its warm-up range, its per-set RIR targets, its rest range and its substitutions already attached. Swap a lift and the app remembers the swap.
Weight and reps go in, the rest timer starts, PRs are flagged against your own history. Your estimated 1RM trend per lift builds itself out of what you actually did.
These are good products. Most of them do one thing better than we do. The point of the table is that you are currently paying for three of them and still keeping your program in a PDF.
| This app | General loggers | Nutrition apps | Coaching platforms | PDF + spreadsheet | |
|---|---|---|---|---|---|
| Per-set RIR targets, one value per set | Yes | No | — | Varies by what the coach types in | Only if you retype it every session |
| Warm-up range, rest range, technique on the final set | Attached to every exercise | No | — | Coach-authored, per program | Yes, until you stop reading it |
| Substitutions and shoulder-safe swaps built in | Yes, per exercise | No | — | Coach-authored | No |
| DUP off the 1RMs you entered | Yes, four waves | No | — | Only if the coach builds it | Manual spreadsheet math |
| Nutrition in the same app | Macros, meals, pantry, history, barcode | No | Yes — and better at it | Add-on / varies | Separate tab |
| Two-sided consent for a coach link | Yes — neither side can attach alone | — | — | Typically coach-initiated | — |
| Where they beat us | — | Bigger exercise libraries, social feeds, a mature app-store presence, years of polish | Adaptive calorie targeting that adjusts to your real weight trend — genuinely better than our static calculator | Payments, scheduling, video libraries, branded apps — full business suites | Infinite flexibility, zero cost |
Competitor columns describe product categories, not tested builds, and features move. If a row is out of date, tell us and we'll correct it.
Trust
Privacy in fitness software is usually a paragraph in a policy document. Here it is a set of rules that live in the database, apply to every request, and would have to be deliberately deleted to stop working. Here is the actual list.
Access rules are enforced by the database on every read and write, not by the app deciding what to render. A screen that forgets to hide something still can't fetch it.
database policyA coach cannot attach themselves to you, and you cannot attach yourself to a coach either — you file a request and they approve it. Until they do, they see your name and your email and nothing else. If the coach starts it, they do so by minting an invite code, which is their consent; redeeming it is yours.
database policyOnce linked, a coach can see your profile, 1RMs, bodyweight log, cardio, programs and today's meals — that's the job. One file is excluded by name and always will be: your settings. It holds your interface preferences and your progress-photo consent decision, and that is a private choice about your own body. It is a read-only permission besides — a coach cannot write a single byte of your data.
allowlisted SELECT policyUploading requires that you are 18 or over and that you have explicitly accepted a consent notice. Consent is three-state, not a checkbox — if you decline, you are not asked again on every visit. If your age can't be determined, the gate stays shut. Age is derived from your date of birth every time it is read, never stored, so it can't be stale on the morning of your birthday. We'll describe this accurately: it is a consent mechanism over a self-reported date of birth. It is not an identity check and we won't call it one.
client-side consent gateA coach can report a photo. An admin can then see that one photo — the record and the image itself — and only while the report is open. Resolving it closes the window. The person who was reported cannot read the report queue, because a queue you can watch is a warning to delete evidence. Upholding a report removes the photo; it does not delete anyone's account.
status-scoped policyIf an account is suspended, the block is a database trigger attached to the tables that matter. Not a policy that a future refactor could quietly strip, and not a screen you could route around. Going offline doesn't lift it — but an account we've simply never heard of is let in, because failing shut on a server hiccup would lock out everyone at once.
database triggerSuspension and reinstatement notices are composed on the server. There is no way for a client to insert one, and no way to delete one. The only field anyone can change is whether it's been read.
no INSERT policyNo analytics, no attribution pixel, no session recording, no advertising SDK, no cookies, and no fonts or scripts loaded from anyone else's server. The page you are reading makes zero third-party requests, and neither does the app.
verified at build timeNone of this is a feature we plan to add. All of it is running. What it costs us is convenience: a coach's view of your program says “Unknown/Custom” for one field, because reading that field would mean reading the file we said we'd never read. We took the worse screen.
Payments aren't built yet. That is a true statement about the product, so it is the headline of the pricing section. Below is what we intend to charge when they are, published now so that nobody is surprised later — and so you can tell us it's wrong. There is no checkout on this site and no card field in the app.
| Plan | Planned price | What it gets |
|---|---|---|
| Free | $0 | All local logging. Workouts, sets, PRs, meals, macros. No cloud sync, no program generator or custom builder, no coach link. |
| Client | Usually $0 $4.99/mo direct |
Most clients are sponsored by their coach. Your coach's assigned program, plus sync across your devices. |
| Advanced | $7.99/mo or $59.99/yr |
The program generator, the custom builder, DUP, and sync. |
| Coach | $29/mo includes 5 clients |
Roster, triage view, program assignment, client visibility, invites. The rate above five clients is a bracket ladder and is not finalised. |
Every number above is planned, not live. Nothing is charged today and nothing on this page can charge you. Treat the table as a published intention you are invited to argue with.
The free tier is meant to stay free. That is a stated intention, not a contract — like every number above it predates the billing system that would have to honour it, and we are not going to dress an intention up as a guarantee on the one page where everything else is labelled “planned.” What is already true rather than promised: your logs are written to your own device as you make them, and any program exports as a portable file. Neither depends on a payment, so whatever the pricing turns into, it cannot lock you out of your own training history.
We haven't finalised the coach rate above five clients. Our own analysis says the number we first drafted undercharges past about nine, and we'd rather set it once, correctly, against real rosters than launch a price we have to raise.
On getting your data out: you can export any program as a portable file from inside the app. There is no self-service “download everything” button and no self-service account deletion yet — both are on the list, and until they ship, email us and we'll export or delete your account by hand. That is written down in the privacy policy too, so it's a commitment rather than a sentence on a marketing page.
Yes, and not in the “we cache a bit” sense. Every workout and meal you log is written to your device's own database before anything touches the network, and sync is a background copy of data that is already saved. Install it to your home screen and it opens with the network off. The one exception is your first sign-in on a new device, which needs connectivity once.
It's a progressive web app — you install it from the browser. No store gatekeeping, instant updates, a tiny footprint. The costs are real too: installing takes an extra tap on iOS, and there are platform integrations we simply don't have.
Mostly, don't switch for logging — Hevy logs well. Switch if you're currently keeping the programming somewhere else: the RIR targets, rest ranges, warm-up sets, substitution options and technique rules that a general-purpose logger has no field for. That's the gap we fill.
Seven templates with stated lineages — Jeff Nippard's fundamentals, upper/lower and PPL work, Mentzer/Yates-style HIT, Dorian Yates' body-part split, Renaissance Periodization volume landmarks — plus the original Min-Max split and four DUP waves derived from David Laid's approach. Each exercise carries a note explaining why it's placed where it is. To be explicit: these are citations of an approach, not endorsements, and nobody named is involved with this app.
There isn't good evidence that it is, once volume is matched. Grgic et al. 2017 is the usual citation and it found no meaningful difference; the app says this in every DUP program description before you choose one. Pick DUP for the frequency and the autoregulation, not because someone told you periodization is magic.
Your training: profile, 1RMs, bodyweight, cardio, programs, DUP progress, your schedule, your swaps and today's meals — read-only, they can't edit any of it. Plus whatever you send them directly: check-ins, habits, goals, messages and progress photos. What they cannot see, ever, is your settings file, which holds your interface preferences and your photo-consent decision.
Worth stating the other way round too: a coach can keep private notes about a client that the client cannot read. We think you should know that exists.
No. Neither of you can attach unilaterally. Either you request a coach and they approve it, or they mint an invite code — which is their consent — and you redeem it, which is yours. Before an approval, a coach you've requested sees your name and email and nothing more. If you end the relationship, their access closes on the next read, because it is checked against the current link rather than stored.
No. There is no advertising SDK and no analytics vendor in the app, and none on this page either. The full list of companies that touch your data — five of them, and why — is in the privacy policy.
The ones we'd want to know before signing up:
No, and the version you'd be signing up to is early. Payments don't exist yet, so nothing can charge you. If that's disqualifying, this isn't the right week to start — but if you want to see whether the prescription detail is worth anything to you, one session will tell you.
Make an account, pick a program that matches the days you actually train, and log one workout. That's enough to see whether the prescription detail is worth anything to you. If it isn't, you've lost ten minutes and we haven't charged you — we can't, we haven't built that yet.
No card. Nothing to cancel.