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:
| Target | What it controls | How it changes |
|---|---|---|
| Weight | How heavy the load is | Increases ~2%/week (weight mode) or stays fixed (rep mode) |
| Reps | How many reps per set | Fixed (weight mode) or increases linearly (rep mode) |
| RIR | How close to failure | Ramps down from 3 → 2 → 1 across the mesocycle |
| Sets | How many sets to perform | Adjusted by your fatigue ratings |
These targets appear as placeholders in the workout screen. You can override any of them — just type a different number.
Starting weight
Week 1 working weight is derived from your reference weight — typically your estimated 10RM for the exercise:
starting_weight = round(reference_weight × 0.85, increment)
- 0.85 is the starting factor — it leaves room to grow so Week 1 feels comfortable (~3 RIR)
- increment is the smallest weight jump for the exercise (e.g., 5 lbs for barbells, 2.5 lbs for dumbbells)
- round() rounds to the nearest increment
Example: Reference weight 235 lbs, barbell (5 lb increment)
starting_weight = round(235 × 0.85, 5) = round(199.75, 5) = 200 lbs
If no reference weight is set, HyperIron shows no weight placeholder — you enter whatever you want, and that logged weight can inform the reference for future mesocycles.
For a complete guide to how reference weights are suggested, set, and adjusted mid-cycle, see Reference Weights.
Weight progression (weight mode)
Each week's weight compounds at ~2% per week from the starting weight:
week_weight = round(starting_weight × 1.02^(week - 1), increment)
Worked example: Bench Press
Reference weight: 235 lbs, barbell (5 lb increment), 6 loading weeks + deload
| Week | Formula | Raw | Rounded | RIR |
|---|---|---|---|---|
| 1 | 200 × 1.02^0 | 200.0 | 200 lbs | 3 |
| 2 | 200 × 1.02^1 | 204.0 | 205 lbs | 3 |
| 3 | 200 × 1.02^2 | 208.1 | 210 lbs | 2 |
| 4 | 200 × 1.02^3 | 212.2 | 210 lbs | 2 |
| 5 | 200 × 1.02^4 | 216.5 | 215 lbs | 2 |
| 6 | 200 × 1.02^5 | 220.8 | 220 lbs | 1 |
| 7 (deload) | reset | — | 200 lbs | — |
The rep target stays fixed throughout — you always train to the prescribed RIR.
Shorter and longer mesocycles
The formula is the same regardless of length. A 4-week mesocycle has fewer compounding steps (~6% total increase). An 8-week mesocycle compounds further (~15% total). The principle is small, consistent increases the lifter can sustain.
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
Reference weight: 35 lbs, dumbbell (5 lb increment), rep range 8–12, 6 loading weeks + deload
Starting weight: round(35 × 0.85, 5) = 30 lbs (fixed for all loading weeks)
| Week | Formula | Reps | Weight | RIR |
|---|---|---|---|---|
| 1 | 8 + 4 × 0/5 | 8 | 30 lbs | 3 |
| 2 | 8 + 4 × 1/5 | ~9 | 30 lbs | 3 |
| 3 | 8 + 4 × 2/5 | ~10 | 30 lbs | 2 |
| 4 | 8 + 4 × 3/5 | ~10 | 30 lbs | 2 |
| 5 | 8 + 4 × 4/5 | ~11 | 30 lbs | 2 |
| 6 | 8 + 4 × 5/5 | 12 | 30 lbs | 1 |
| 7 (deload) | round(8 / 2) | 4 | 30 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.
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 weeks | Conservative (RIR 3) | Moderate (RIR 2) | Aggressive (min RIR) |
|---|---|---|---|
| 3 | 1 week | 1 week | 1 week |
| 4 | 1 week | 2 weeks | 1 week |
| 5 | 2 weeks | 2 weeks | 1 week |
| 6 | 2 weeks | 3 weeks | 1 week |
| 8 | 3 weeks | 4 weeks | 1 week |
| 10 | 3 weeks | 5 weeks | 2 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 fatigue ratings:
week_1_sets = base_sets (from program template)
week_N_sets = clamp(week_(N-1)_sets + fatigue_rating, 1, 8)
deload_sets = 2 (fixed)
- 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 accumulated adjustments
Worked example
Base sets: 3, fatigue ratings: +1, 0, 0, -1, 0
| Week | Sets | Rating | Next week's sets |
|---|---|---|---|
| 1 | 3 | +1 | clamp(3 + 1, 1, 8) = 4 |
| 2 | 4 | 0 | clamp(4 + 0, 1, 8) = 4 |
| 3 | 4 | 0 | clamp(4 + 0, 1, 8) = 4 |
| 4 | 4 | -1 | clamp(4 - 1, 1, 8) = 3 |
| 5 | 3 | 0 | clamp(3 + 0, 1, 8) = 3 |
| 6 | 3 | — | — |
Volume found its level at 3–4 sets. 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 235 lbs, 5 lb increment, 3 base sets, 8 reps, min RIR 1, 6 loading weeks + deload.
Starting weight: round(235 × 0.85, 5) = 200 lbs
| Week | Weight | Reps | RIR | Sets | Fatigue |
|---|---|---|---|---|---|
| 1 | 200 lbs | 8 | 3 | 3 | +1 |
| 2 | 205 lbs | 8 | 3 | 4 | 0 |
| 3 | 210 lbs | 8 | 2 | 4 | 0 |
| 4 | 210 lbs | 8 | 2 | 4 | -1 |
| 5 | 215 lbs | 8 | 2 | 3 | 0 |
| 6 | 220 lbs | 8 | 1 | 3 | — |
| 7 (deload) | 200 lbs | 4 | — | 2 | — |
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:
| Target | Deload value |
|---|---|
| Weight | Reset to Week 1 starting weight |
| Reps | Approximately half of base reps: round(base_reps / 2) |
| RIR | No target (easy effort) |
| Sets | 2 (fixed, regardless of auto-regulation) |
Default weight increments
If you haven't configured a custom increment, HyperIron uses these defaults:
| Equipment | Default increment |
|---|---|
| Barbell | 5 lbs |
| Dumbbell | 5 lbs |
| EZ bar | 5 lbs |
| Trap bar | 10 lbs |
| Smith machine | 5 lbs |
| Cable | 5 lbs |
| Machine | 5 lbs |
| Kettlebell | 0 (use rep progression) |
| Bodyweight | 0 (use rep progression) |
| Bands | 0 (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 reference weight (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. Your actual performance is always preserved in the workout log and informs future mesocycle seeding.
Common reasons targets feel too hard:
- Bad sleep or high stress — one bad session doesn't mean the reference is wrong
- Reference weight was set too high — if it's a pattern across multiple sessions, adjust the reference weight
- 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. Your logged values do not automatically change the reference weight or future calculated targets. The progression formulas continue using the original reference weight.
If the targets are consistently wrong, the right fix is to adjust the reference weight directly — this recalculates all future weeks properly rather than creating a one-off deviation.
Adjusting reference weights mid-cycle
If the reference weight is too high or too low, you can change it at any time. See Reference Weights — Adjusting mid-cycle for the full guide, including worked examples and when to adjust vs. when to wait it out.
Progression preview
You can see the projected weight, reps, RIR, and sets for every future week before you train them. This makes it easy to spot problems early — if the final week's weight looks impossible, lower the reference now rather than grinding through. 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 from the same template, HyperIron seeds the new mesocycle from your actual performance. See Reference Weights — Across mesocycles for the full rules.
- Weight mode: Best weight from the final loading week becomes the new reference. Week 1 starts at ~85% of that.
- Rep mode: Hit the top of the range? Weight goes up one increment, reps reset. Didn't reach the top? Weight stays, 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.