Skip to content
How it works

The rule that picks your next weight, written out in full

The rule that suggests your next weight, written out in full — it is a rule, not a model.

By Kiptly ·

On this page

It is a rule, not a model

Everything below is a handful of comparisons. The same inputs always produce the same answer, nothing is fitted to you, and there is no model anywhere in it — which is why we can print it here in full rather than describe it in adjectives.

The method has a name that is not ours: double progression. You stay at one weight and add reps inside a range; when you reach the top of the range you add weight and drop back down the range. Reps first, then load. That is the entire idea, and the rest of this page is the edge cases.

Which session it reads, and which sets in it

One session — your last one on that exercise — and for the back-off rule the one before it. Not an average of your history, not a trend line.

Within that session it looks only at the sets you did at the heaviest working weight. If you did 62.5 kg for 10 and then two back-off sets of 55 kg for 12, one set qualifies, and it is the 62.5. This matters in both directions: without it the back-offs would read as failures, and — worse — their easy reps would read as evidence you had earned more weight.

Warm-ups never qualify. For work with no weight at all — bodyweight sets, timed holds — every set is in the pool, because there is no heaviest one to pick.

The range it is measured against

Your own setting first, if you have set one — separately for compound and isolation work. Failing that, the range your goal implies: 8–12 for building muscle, 3–6 for getting stronger, 12–15 for staying active. Failing both, 8–12.

Two of those are worth stating plainly rather than leaving in the code. Losing fat takes the same 8–12 as building muscle, deliberately: there is no evidence behind "higher reps burn fat", and a lighter, higher-rep prescription works against holding on to muscle in a deficit, which is the thing a person losing fat most wants to keep. And the 12–15 for staying active is a product decision about how intimidating a first session should be — not a finding. The source says so in a comment; it would be easy to cite it later as if it were research, and this page exists partly to make that harder.

Each past session is judged against the range it was actually run under, not against today’s. Someone whose template prescribes 5–8 while their profile default is 8–12 was once being offered a back-off for hitting their programme exactly.

Four answers, in this order

If there is no last session, or it carries no weight, the answer is that it does not know — and it says so rather than guessing a starting weight.

If the exercise is assisted, it holds. The rule adds load, and on a gravitron the number you type is assistance, so adding to it would prescribe an easier set while appearing to prescribe a harder one.

Then the back-off test, which is described below. Then, if your qualifying sets hit the top of the range, one step up. Otherwise, hold — stay here and get more reps.

"Hit the top of the range" means every qualifying set by default, and you can loosen it: most of them, or any one of them. A three-set exercise at 12/12/9 moves up under "most" and holds under the default. The back-off test deliberately ignores that setting — loosening when you should add weight is not the same as asking to be caught later when you are missing reps.

The numbers, and where they live

The numbers this page leans on, read out of the API when the site was built. Three of them exist twice over — once on the server and once in the app, which builds your warm-up sets on its own copy of the same grid — and the build fails if the copies stop agreeing.

What it isValueRead from
What a back-off multiplies the working weight by, before snapping.0.9apps/api/src/smart/workout-plan.rules.ts
The empty barbell a metric prescription is measured up from.20apps/api/src/smart/workout-plan.rules.tsapps/flutter/lib/features/workout/presentation/workout_provider.dart
The smallest metric jump — a pair of 1.25 kg plates.2.5apps/api/src/smart/workout-plan.rules.tsapps/flutter/lib/features/workout/presentation/workout_provider.dart
Kilograms in a pound, at full precision — both sides of the wire agree on it.0.45359237apps/api/src/smart/workout-plan.rules.tsapps/flutter/lib/core/utils/weight_utils.dart
How far back the deload check looks at your training weeks.56apps/api/src/smart/smart.service.ts
Hard weeks in a row before a deload week is suggested.4apps/api/src/smart/smart.service.ts

Weights you can actually load

Every derived weight is snapped down to the grid, never to the nearest value. Down is not a rounding preference: prescribing a weight you have not earned is the failure that makes an app untrustworthy in a way under-prescribing is not.

The grid is a 20 kg bar and 2.5 kg steps — the smallest pair of 1.25 kg plates — and the snapping happens in the unit you read. An imperial account gets a 45 lb bar and 5 lb steps, and the kilogram value on the wire is whatever that converts to. Snapping in metric and converting afterwards would hand an imperial reader 137.8 lb, which no plate set loads.

Machines, cables and dumbbells have no bar to subtract, so their grid starts at zero — and a target under one step snaps to nothing rather than to zero, because "0 kg" prescribed for a set is worse than no number at all. You get "pick a weight on the first set" instead.

The other deload — a week, not a weight

Everything above is about one exercise. There is a second, entirely separate check about your whole training week, and the two can disagree without either being wrong.

It looks back eight weeks and counts the weeks in which you finished at least three sessions. Four such weeks in a row, and it suggests a lighter week — or three in a row if you have been averaging five or more sessions a week. The suggestion is a date: next Monday. It does not change any weight, and nothing enforces it.

The count skips the current, unfinished week. On a Monday that week holds at most one session, and an earlier version let it end the streak — reporting nothing at all to someone halfway through their fifth hard week.

Where you can actually see this

The per-exercise card that shows the suggestion and names the reason, and the weekly deload check, are both part of the paid tier. We would rather write that here than describe a screen most readers cannot open.

The rule itself is not. The same function prescribes the weights when the builder generates a workout and when you start a plan you already saved — both free — so the numbers you see there are the ones this page describes. What the paid card adds is the explanation beside them.

Sources

Each source says how far we actually got into it. A citation list shows that a paper exists, not that anybody opened it — so this one is labelled.

  1. The code that decides it

    apps/api/src/smart/workout-plan.rules.ts and apps/api/src/smart/smart.service.ts. Every number above is read out of these files when this site is built, and the seven ranges the prose explains are hashed, so the page goes red when the code under it moves.

    Read in full

  2. Double progression, as a gym convention

    Not attributable to a paper, and we are not going to dress it in one. It is a common way of running a rep range, and the reason it suits this app is structural rather than scientific: weights and reps are what a log actually contains.

    Not read

General fitness information, not medical advice.