Skip to main content

Progressive Overload in Programs

How HyperIron calculates and applies progressive overload to your workouts. For the underlying science, see Progressive Overload (Concepts).

The four computed targets

Every week, HyperIron computes four values for each exercise:

TargetWhat it controlsHow it changes
WeightHow heavy the load isSteps up one increment when you top out the rep range (weight mode, double progression) or stays fixed (rep mode)
RepsHow many reps per setClimb the range, then reset on a weight step (weight mode) or increase linearly (rep mode)
RIRHow close to failureRamps down from 3 → 2 → 1 across the mesocycle
SetsHow many sets to performAdjusted by your fatigue ratings

These targets appear as placeholders in the workout screen. You can override any of them — just type a different number.

Where the weight comes from (autoregulation)

Load is derived from your logged sets — nothing to enter, nothing to maintain. The engine anchors each exercise on the best set of your most recent completed session (judged by estimated 1RM, so reps and RIR count) and projects the progression rule forward from there:

anchor = best set of your last completed session (weight, reps, RIR)
next target = one application of the progression rule to the anchor
week N = the rule applied once per intervening loading week
  • Exercises trained in a previous program are anchored from that history — week 1 of a new block starts at your real working weight.
  • A brand-new exercise shows only the rep range + RIR target; pick a weight in the gym, log it, and the engine anchors from that session on.
  • Lift more or less than planned and the plan follows you — the anchor is whatever you actually did.
  • The rule is effort-aware: when the week's RIR target is easier than your last set's actual RIR — week 1 of a new mesocycle after an all-out final week, for example — the suggestion backs off to what that set proves you can do at the easier effort (same estimated 1RM, more reps in reserve), instead of asking you to beat an end-of-block grinder with reps to spare. A block that ended 155×9 @ 1 RIR starts the next one around 155×7 @ 3 RIR and climbs from there.

For the full picture see Working Weights.

Weight progression (weight mode)

Weight mode uses double progression over your rep range. You add a rep each week at the same weight; once you reach the top of the range, the weight steps up one increment and the reps reset to what you can realistically do at the new weight (the same-effort equivalent). A weight step is therefore about one rep harder — not the same reps at a heavier load, which would be a much bigger jump.

W1: starting weight × bottom of the range
each loading week: +1 rep at the same weight, until you hit the top of the range
on reaching top: weight += one increment, reps reset to the equivalent

Worked example: Barbell Row

Anchor: last session 170 lbs at the bottom of the range (or a cold start seeded at 170), barbell (5 lb increment), rep range 8–12, 6 loading weeks + deload.

WeekWeightRepsRIRWhat changed
1170 lbs83bottom of the range
2170 lbs93+1 rep
3170 lbs102+1 rep
4170 lbs112+1 rep
5170 lbs122top of the range
6175 lbs111weight steps up, reps reset to the equivalent
7 (deload)170 lbs4reset to W1 weight, half reps

With a coarse increment relative to the load (e.g. 5 lb on a 20 lb dumbbell), the reset lands near the bottom of the range; with a fine increment it lands just below the top.

Single-value rep targets

If an exercise has a single rep target instead of a range (e.g. "5 reps"), there's no range to climb, so weight mode falls back to a small compounding weekly increase from the starting weight:

week_weight = round(starting_weight × 1.02^(loading_week - 1), increment)

For example, Bench Press at reference 200 lbs (Week 1 = the reference): 200, 205, 210, 210, 215, 220, then reset to 200 on the deload. You always train to the prescribed RIR, and the reps shown adjust to what's realistic at each week's weight.

Shorter and longer mesocycles

The same rules apply regardless of length. Shorter mesocycles climb fewer reps before (or without) a weight step; longer mesocycles cycle through the range more than once.

Rep progression (rep mode)

Weight stays fixed at the starting weight. Rep targets increase linearly from the bottom to the top of the rep range across the loading weeks:

reps = bottom + (top - bottom) × (week - 1) / (loading_weeks - 1)

Worked example: Lateral Raises

Anchor: working weight 30 lbs, dumbbell (5 lb increment), rep range 8–12, 6 loading weeks + deload

Weight: round(30, 5) = 30 lbs (fixed for all loading weeks)

WeekFormulaRepsWeightRIR
18 + 4 × 0/5830 lbs3
28 + 4 × 1/5~930 lbs3
38 + 4 × 2/5~1030 lbs2
48 + 4 × 3/5~1030 lbs2
58 + 4 × 4/5~1130 lbs2
68 + 4 × 5/51230 lbs1
7 (deload)round(8 / 2)430 lbs

Once you hit 12 reps at the prescribed RIR, increase weight in the next mesocycle and reset to 8 reps. This is how rep progression drives long-term strength gains for exercises where weight jumps are large relative to the load.

When to use rep mode

Rep progression is best for:

  • Isolation exercises (lateral raises, curls, tricep extensions)
  • Dumbbell movements where the next weight up is a big % jump (e.g., 30→35 lbs = 17%)
  • Bodyweight exercises where adding external load isn't practical

Weight progression is better for compound barbell lifts where small increments (2.5–5 lbs) are available.

:::tip Automatic fallback If you keep the program in weight mode, exercises where the weight can't actually change (bodyweight, small weights with large increments) will automatically use rep progression. You only need to explicitly choose rep mode if you prefer rep progression for exercises that could do weight progression. :::

The RIR schedule

RIR (Reps in Reserve) ramps down across the mesocycle in three phases, regardless of progression mode. The schedule scales to any mesocycle length:

First ~1/3 of loading weeks: RIR 3 (conservative)
Middle ~1/2 of loading weeks: RIR 2 (moderate)
Final ~1/6 of loading weeks: min RIR (aggressive — at least 1 week)
Deload week: no target (easy effort)

How the schedule is allocated

For mesocycles with 4+ loading weeks:

aggressive_weeks = max(1, round(loading_weeks / 6))
conservative_weeks = max(1, round(loading_weeks / 3))
moderate_weeks = loading_weeks - conservative_weeks - aggressive_weeks
Loading weeksConservative (RIR 3)Moderate (RIR 2)Aggressive (min RIR)
31 week1 week1 week
41 week2 weeks1 week
52 weeks2 weeks1 week
62 weeks3 weeks1 week
83 weeks4 weeks1 week
103 weeks5 weeks2 weeks

Minimum RIR

The min RIR setting (default: 1) controls how hard the final phase gets:

  • 1 (default) — near failure, one rep left in the tank. Safer for compound lifts.
  • 0 — train to failure. Appropriate for isolation exercises and experienced lifters.

You can set this per exercise when configuring your program.

Volume auto-regulation (sets)

Sets per exercise are not fixed — they adjust week-to-week based on your last session for that exercise and the fatigue rating you submitted afterward:

week_1_sets = base_sets (from program template)
next_week_sets = clamp(actual_sets_last_session + fatigue_rating, 1, 8)
deload_sets = 2 (fixed)
post_deload_sets = base_sets (recovery reset)

The algorithm anchors to what you actually did, not to what was prescribed:

  • Stop short at 2 of 3 sets and rate 0 → next week starts at 2 sets, not 3
  • Push past the prescription to 4 of 3 and rate 0 → next week starts at 4 sets
  • Skip the exercise entirely → next week falls back to the program's base sets

Constraints:

  • Minimum: 1 set per exercise (never drops to zero)
  • Maximum: 8 sets per exercise per session (prevents runaway volume)
  • Deload: always 2 sets regardless of where auto-regulation landed
  • Post-deload: resets to base sets for the first loading week after a deload

Worked example

Base sets: 3. You complete the prescribed sets each week and submit ratings +1, 0, 0, -1, 0.

WeekSets doneRatingNext week's target
13+1clamp(3 + 1, 1, 8) = 4
240clamp(4 + 0, 1, 8) = 4
340clamp(4 + 0, 1, 8) = 4
44-1clamp(4 - 1, 1, 8) = 3
530clamp(3 + 0, 1, 8) = 3
63

Volume found its level at 3–4 sets. If you'd stopped at 2 sets in Week 4 and rated -1, the next target would be clamp(2 - 1, 1, 8) = 1 — the algorithm tracks your actual capacity, not the prescription you didn't finish.

See Fatigue & Autoregulation for the science behind this.

Complete worked example

Putting it all together for one exercise across a full mesocycle.

Barbell Bench Press — weight progression, reference 200 lbs, 5 lb increment, 3 base sets, 8 reps, min RIR 1, 6 loading weeks + deload.

Week 1 weight: round(200, 5) = 200 lbs (Week 1 is the reference)

WeekWeightRepsRIRSetsFatigue
1200 lbs833+1
2205 lbs8340
3210 lbs8240
4210 lbs824-1
5215 lbs8230
6220 lbs813
7 (deload)200 lbs42

Week 1 is intentionally easy (200 lbs at RIR 3 with only 3 sets). By Week 6, the lifter is handling 220 lbs at RIR 1 — 10% heavier and pushing near failure. Volume peaked at 4 sets in weeks 2–4, then backed off when fatigue accumulated.

Deload week

When a deload week is enabled, the final week of the mesocycle uses:

TargetDeload value
WeightReset to Week 1 starting weight
RepsApproximately half of base reps: round(base_reps / 2)
RIRNo target (easy effort)
Sets2 (fixed, regardless of auto-regulation)

Default weight increments

If you haven't configured a custom increment, HyperIron uses these defaults:

EquipmentDefault increment
Barbell5 lbs
Dumbbell5 lbs
EZ bar5 lbs
Trap bar10 lbs
Smith machine5 lbs
Cable5 lbs
Machine5 lbs
Kettlebell0 (use rep progression)
Bodyweight0 (use rep progression)
Bands0 (not weight-based)

Exercises with a 0 increment (bodyweight, kettlebell, bands) skip weight calculations entirely.

Automatic rep progression fallback

When an exercise is set to weight mode but weight progression can't actually produce a change — either because:

  • The exercise has no usable load history (e.g., bodyweight movements)
  • The exercise uses equipment with a 0 increment (bodyweight, kettlebell, bands)
  • The increment is too large relative to the weight for the 2% weekly increase to produce a change (e.g., wrist curls at 25 lbs with a 5 lb increment — the math rounds to the same weight every week)

...HyperIron automatically falls back to rep progression for that exercise's rep targets. Weight stays as computed (flat or null), but reps ramp from the bottom to the top of the range so the exercise still progresses through the mesocycle.

This means you don't need to manually switch individual exercises to rep mode — the system detects when weight can't move and adjusts automatically.

When you can't hit the target

Log what you actually did. If the target is 210 lbs × 8 at RIR 2 but you only get 6 reps, log 6. That session becomes the new anchor, so next week's plan automatically eases off and meets you where you are — a bad day self-corrects in one session.

Common reasons targets feel too hard:

  • Bad sleep or high stress — log the honest numbers and let the anchor adjust
  • Accumulated fatigue from later mesocycle weeks — this is by design, especially in the aggressive phase

Overriding targets in a workout

You can enter a different weight or rep count during any workout — the targets are editable defaults, not rules. Whatever you log becomes the anchor for the next session: lift heavier and the plan climbs with you; lift lighter and it meets you there. There is no separate setting to correct — the log is the source of truth.

Progression preview

You can see the projected weight, reps, RIR, and sets for every future week before you train them. The projection assumes you hit each week's target as prescribed, starting from your actual recent sets — so it tracks reality and updates every time you train. See Progression Preview for details.

AI overrides

With AI coaching, Claude can analyze your performance and suggest modified progression targets — for example, a steeper ramp if you've been consistently beating targets. AI overrides appear in the progression preview as modified values, clearly marked so you can accept or dismiss them.

Across mesocycles

When you finish a mesocycle and start a new one, nothing needs seeding — the same autoregulation continues across the boundary:

  • Load: Week 1 of the new block anchors on your most recent logged sets of each exercise, from any program.
  • Rep mode: Hit the top of the range? The next block steps the weight up one increment and resets reps. Didn't reach the top? Weight holds, keep building reps.
  • Volume: Final auto-regulated set counts carry forward as starting volume. Over multiple blocks, volume converges on what your body can handle.