Guides

Inside the Gravl algorithm: how your workouts are built

A plain-language tour of the algorithm. How Gravl picks your exercises, why it suggests the weights it does, how one extra rep becomes long-term progress, and how every setting you touch changes the math.

Julián

Co-Founder

An athlete resting over a weight bench in a "progressive overload club" shirt

Open Gravl, tap today's workout, and there it is: six exercises, each with sets, reps and a weight. It takes about a second. This post is about what happens inside that second, and in the days between your workouts.

We're going to walk the whole pipeline: how exercises get picked, how the starting weights are calculated, how the app decides that today you get one more rep on your second set, and why skipping bench press for three weeks doesn't send you back to square one. No formulas required, but we'll explain the two or three training concepts the system is built on as we go.

First, one number to rule them all: your 1RM

Almost everything below leans on a single idea, so let's get it out of the way.

Your one-rep max (1RM) for an exercise is the heaviest weight you could lift for exactly one rep. You'll probably never test it, and you don't have to, because there's a well-studied relationship between reps and weight: a set of 8 reps at 100 kg points to roughly the same strength as 1 rep at about 124 kg. Sports science has mapped this curve, and Gravl uses it constantly, in both directions:

  • Reading: every set you log gets converted into an estimated 1RM. Do 8 x 100 on bench and Gravl notes "this person's bench strength is about 124 today."
  • Writing: when Gravl needs to prescribe a weight, it starts from your 1RM and works backwards: the more reps a set asks for, the smaller the slice of your max it puts on the bar.

This is why Gravl can suggest sensible weights for a rep range you've never trained in. It doesn't need to have seen you do sets of 5; it knows your strength as one number and translates.

Where does that number come from on day one? From the experience level you picked during onboarding, mapped through strength standards for each exercise. It's a starting guess, and the whole system below exists to correct it fast. You can also see and edit it yourself any time under the exercise's Advanced settings.

Want to see the curve in action? Punch in any set you've done recently:

Try it: estimate a 1RM

Estimated 1RM124.2 kg

The same formula Gravl uses on every set you log. Past 15 reps the estimate stops climbing, so a set of 18 counts like a set of 15.

Step 1: picking the exercises

Before any weights are calculated, Gravl decides what you're doing today. That decision runs through a few filters, in order:

Your split decides the muscles. Whether you're on Push/Pull/Legs, Upper/Lower, Full Body, a custom split you built, or the "Recovered muscles" mode that just trains whatever is fresh, the split answers one question: which muscle groups does today target?

Your gym decides the candidates. Only exercises you can actually perform make the list. This is why the gym profile matters so much: the equipment you've added (including machines you imported from a photo) is a hard filter, not a suggestion.

Your settings shape the shortlist. Focused muscles get extra work. Excluded muscles disappear entirely. Your workout duration caps how many exercises and sets fit. Your goal (strength, muscle, general fitness) changes which exercises rank higher and which rep ranges they'll use.

Variety, but not chaos. From the remaining candidates, Gravl ranks exercises by importance and your history, then picks with a controlled amount of randomness so workouts don't feel copy-pasted. One thing it deliberately avoids: putting two nearly identical movements in the same session. Gravl knows that barbell bench press and dumbbell bench press are variations of the same movement, so you won't get both on the same day. Remember this "variant" relationship, because it comes back later in a more interesting role.

Order matters. Big compound lifts land early, when you're fresh. Isolation work lands later. This ordering isn't cosmetic; the weight calculation in the next step depends on it.

Step 2: turning your 1RM into actual sets

Now Gravl knows you're doing, say, incline dumbbell press as your second chest exercise, 3 sets in the 5 to 8 rep range. Here's how that becomes numbers.

Start from your 1RM. Say your incline press max is estimated at 50 kg per dumbbell.

Apply the fatigue discount. Here's a thing most apps ignore: you are not the same lifter on your second chest exercise as on your first. Gravl discounts the working max based on position: full strength when an exercise comes first for that muscle, about 7% less in the second slot, a little more after that. It's the same adjustment the app shows you in its Insights panel. That's why the same exercise gets slightly different weights depending on where it lands in the workout, and why that's a feature, not a bug.

Shape the sets around an anchor. For standard straight sets, the hardest set comes first: it carries the full target (say 8 reps) while later sets shed a rep or two as fatigue builds, 8-7-6. Done fresh and at full effort, that first set is the cleanest possible measurement of your strength, so Gravl treats it as the anchor: the set your 1RM estimate is updated from. Pyramid schemes flip the shape, ramping weight up across sets toward one heavy top set at the end, and there the top set is the anchor instead.

Snap to your equipment. A computed weight of 36.4 kg is useless if your dumbbells go 35, 37.5, 40. Every weight gets snapped to something your gym can actually load: dumbbell steps, the plates you own, or the exact increments of a machine's stack (which is why scanning your machines pays off). If the snap moves the weight meaningfully, Gravl compensates with reps: a bit lighter than intended becomes one more rep, a bit heavier becomes one fewer, keeping the difficulty where it was supposed to be.

The result is a prescription where every number has a reason: the weight comes from your strength, the shape comes from fatigue, and the final values exist on your actual equipment.

Gravl workout preview showing target muscles and six exercises with sets, reps and weights
Six exercises, one second. Every number traces back to your 1RM.

Step 3: progressive overload, the engine between workouts

Generating one good workout is table stakes. The real job of a training app is making next week's workout slightly harder than this week's, at the exact rate you can handle. That's progressive overload: the principle that muscles adapt to gradually increasing demands. Small, relentless increases beat big, occasional jumps.

The catch is that "gradually" is hard to do with weights alone. If your dumbbells jump in 2.5 kg steps, the smallest weight increase on a 15 kg lateral raise is 17%. Nobody progresses 17% in a week. So Gravl applies progressive overload on two dials, not one: reps first, weight second.

The rep ladder

After each exercise, Gravl asks you to rate the effort: Easy, Ideal, or Hard. This rating is the steering wheel for everything that follows.

Say you finish 8-7-6 at 40 kg and rate it Hard, meaning that was a true effort. Increasing the weight would be a wall. Instead, next time Gravl gives you 8-8-6: the same weight, with exactly one extra rep on the second set. Complete that, and the next session is 8-8-7. Then 8-8-8.

Each of those workouts is a genuine, measurable step forward, roughly a 1 to 2% increase in total work. That is progressive overload at its smallest usable resolution: one rep, on one set, every session, which is the kind of increase a human body actually keeps up with week after week.

The weight step

When the ladder is full (every set at the target), you've proven the weight. Gravl moves you up exactly one step your equipment allows (one dumbbell size, one plate, one pin on the machine stack) and resets the ladder:

SessionPrescriptionWhat happened
18-7-6 @ 40 kgCompleted, rated Hard
28-8-6 @ 40One rep added to set 2
38-8-7 @ 40One more
48-8-8 @ 40Ladder full
58-7-6 @ 42.5Weight up one step, restart

Lifters call this double progression, and it's how experienced people have run progressive overload for decades: earn the reps, then earn the weight. Gravl just does the bookkeeping for you, across every exercise, forever.

The fast lanes and the brake

The rep ladder is progressive overload's careful lane, the one you get when a session was rated Hard. The other ratings move faster:

  • Ideal ("challenging but right") nudges your 1RM up a little, so the next session's weight rises a notch.
  • Easy tells Gravl its estimate was plainly too low, and it recalibrates in one decisive jump instead of a crawl, so you're not stuck doing warm-up weights for weeks.
  • Falling short works automatically, no rating needed. If you were prescribed 8-7-6 and managed 6-5-5, Gravl reads the actual sets, lowers its estimate, and next session meets you where you are. Bad days are data, not failures.

And one quiet safety rule ties it together: no matter what happens, your estimated 1RM never rises more than about 10% in a single session, and meaningless fluctuations (the kind caused by rounding) are ignored entirely. Progressive overload only works when the load stays honest, so the estimate moves exactly as fast as your performance says it should, and never from noise.

Step 4: the clever part, what happens when you don't do an exercise

Here's the scenario every gym-goer knows. The bench is always taken, so you haven't done barbell bench in three weeks. But you trained chest the whole time: dumbbell press, machine press, dips. You're stronger than three weeks ago. Should the app suggest your three-week-old bench weight?

Most apps do. Gravl doesn't, and this is where the algorithm earns its keep.

Every workout updates a picture of each muscle, not just each exercise. Because all sets get converted to that common strength estimate, Gravl can measure how your chest moved even when a specific chest exercise didn't. When you return to bench press, it checks: how did your other chest exercises trend since your last bench day?

Then it carries part of that progress over, with two levels of trust:

  • Variant exercises transfer at about 90%. Remember how Gravl knows dumbbell bench is a variation of barbell bench? Strength gained on a near-identical movement translates almost one-to-one, so if your dumbbell press got stronger while barbell bench sat out, barbell bench comes back heavier too.
  • General muscle work transfers at about half. Getting stronger at cable flys says something about your bench, but not everything. Unrelated same-muscle progress is carried at half strength.

Both paths are capped at a modest change either way: inference alone never moves a returning exercise dramatically, and the moment you actually perform the session, real data replaces the estimate. If the carried-over weight was slightly generous, your reps and your rating pull it back within one session.

And if you took real time off? If a muscle goes untrained for more than two weeks, Gravl eases the suggestions down by roughly 1% per week, and never by more than a few percent in total. Not because you forgot how to lift, but because the first session back should feel encouraging, not punishing. The moment you're training again, the normal engine takes over.

Exercise screen with the Insights pill above the suggested warmup and working sets
Seven weeks since this press, and the suggestions are ready anyway. The Insights pill explains them.

Your settings are inputs to the math, not preferences on a shelf

Everything above reads your configuration on every single run. A quick map of which setting moves which lever:

  • Goal picks the rep ranges. A strength goal biases toward heavy sets of 3 to 8 at higher percentages of your max; muscle-building lives around 8 to 15; general fitness sits higher and lighter. Same 1RM, very different workouts.
  • Experience level sets the starting 1RM estimates for exercises you haven't done yet. It only matters until real data exists, which takes exactly one session per exercise.
  • Workout duration bounds how many exercises and sets are generated. Shorter workouts don't get watered down; they get fewer, more important exercises.
  • Split controls which muscles appear on which day, and therefore how often each muscle gets a progression opportunity.
  • Focused and excluded muscles bias or remove muscle groups from selection before anything else runs.
  • Gym profile and equipment define both the exercise pool and the weight steps. This is the setting with the most hidden leverage: the progression engine moves you up "one step your equipment allows," so if Gravl thinks your machine jumps by 10 when it jumps by 5, your progress runs at half resolution. Scan your stacks.
  • Exertion ratings steer the speed of progression, as covered above. If you skip rating, Gravl assumes Hard and takes the careful path: the rep ladder.
  • Warm-up and rest settings shape the supporting structure: how many warm-up sets precede your first exercise and how long you rest between sets, tuned by rep range and movement type unless you override them.
  • Deload weeks are respected everywhere: deload workouts are intentionally light, so the engine excludes them from every calculation. An easy week never reads as "you got weaker."

See the reasoning, any time

If you ever look at a suggestion and think "why this number?", you don't have to trust us. Every weighted exercise in your workout has a small sparkles button that opens Insights: when you last did the exercise, every set from that session, the estimated 1RM it's targeting today, how many times you've trained the muscle since, whether progress was carried over from other exercises, whether time off eased the weight down, and whether the exercise sits later in today's workout.

It's the same data the algorithm used, in plain language. If a number ever looks wrong, that sheet will usually tell you why in ten seconds, and the fix is always the same: do the session, rate it honestly, and the next one adapts.

The Insights sheet showing a press coming back heavier after 51 days, with the estimated 1RM rising from 69.3 to 70.7 kg
One tap and the algorithm shows its work: 51 days away, 13 shoulder sessions in between, and it comes back heavier.

The whole loop, in one example

Let's put it together. Meet a lifter, three weeks of chest training, dumbbells in 2.5 kg steps:

  1. Week 1, Monday. Dumbbell bench, first chest exercise of the day: 8-7-6 at 40 kg. Completes it, rates it Hard. Next session: 8-8-6 at 40.
  2. Week 1, Thursday. Same workout generates bench second because the split rotated. The weight shows up around 37.5 kg (the fatigue discount). This is expected, and it doesn't touch the underlying estimate: next Monday, first slot again, 40 kg is back.
  3. Week 2. Ladder continues: 8-8-7, then 8-8-8. Ladder full.
  4. Week 3, Monday. 8-7-6 at 42.5 kg. One dumbbell step, earned.
  5. Weeks 3 to 5. The bench is always occupied, so the app swaps in machine press. Its estimate climbs steadily over four sessions.
  6. Week 6. Dumbbell bench returns. Machine press is a variant, so nearly all of that progress carries over: bench comes back at 45 kg instead of a stale 42.5. First set of 8 confirms it, and the loop continues as if nothing was ever skipped.

Nobody planned any of this. The lifter just showed up, moved the weights, and answered one question per exercise.

Why we built it this way

The alternative is what most apps do: suggest whatever you did last time, maybe plus 2.5 kg, and leave the thinking to you. That only works when nothing ever changes, which is why those apps hand you a fixed routine: the same exercises, in the same order, day in and day out.

Gravl's bet is the opposite: progression should survive real life. Because the estimates transfer between exercises, your training can rotate movements, order and machines without losing the thread, the weights always exist on your equipment, the steps stay small enough to sustain, and there's a paper trail to read whenever you're curious.

Every workout planned, every weight explained, every session slightly harder than the last. See what a training system feels like.

Try Gravl free