TL;DR
- For a 425 kg "big-three" total lifter (squat 140 + bench 105 + deadlift 180), the engine returns training maxes of 125 / 95 / 162.5 kg, a top single of 120 / 90 / 155 kg in week 3, and a deload week at 40 to 60 percent of TM.
- The 90% TM is intentional headroom. Working percentages stay submaximal so progression compounds across cycles instead of stalling on a bad week.
- The AMRAP set is the signal. Week 3 top set at 95% of TM with as many reps as possible. Eight or more reps means raise the TM by the standard increment; fewer than five means hold or reset.
Wendler 5/3/1 is the most-followed intermediate-to-advanced powerlifting template in print[1]. The math is simple once the training max convention is understood. This walkthrough takes a representative intermediate lifter, runs the planner, and reads the four-week cycle output.
The scenario
An intermediate lifter with a recent honest one-rep max of squat 140 kg, bench press 105 kg, deadlift 180 kg, overhead press 60 kg. Trains four times per week, has run a basic linear-progression novice program and stalled. Total of the big three lifts: 425 kg. Total including OHP: 485 kg.
What the calculator returns
Running the inputs through the Wendler 5/3/1 Planner:
# wendler-531-planner (computed live from /engines/wendler-531-planner.js)
Engine input
squat_1rm = 140
bench_1rm = 105
deadlift_1rm = 180
ohp_1rm = 60
training_max_pct = 90
Engine output
trainingMaxPct = 90
primaryLift = deadlift
primaryTrainingMax = 162.5
lifts[0].lift = squat
lifts[0].oneRm = 140
lifts[0].trainingMax = 125
lifts[0].weeks[0].week= 1
lifts[0].weeks[0].label= Week 1 — 5s
lifts[0].weeks[0].sets[0].reps= 5
lifts[0].weeks[0].sets[0].percent= 65
lifts[0].weeks[0].sets[0].weightKg= 82.5
lifts[0].weeks[0].sets[1].reps= 5
lifts[0].weeks[0].sets[1].percent= 75
lifts[0].weeks[0].sets[1].weightKg= 95
lifts[0].weeks[0].sets[2].reps= 5+
lifts[0].weeks[0].sets[2].percent= 85
lifts[0].weeks[0].sets[2].weightKg= 107.5
lifts[0].weeks[1].week= 2
lifts[0].weeks[1].label= Week 2 — 3s
lifts[0].weeks[1].sets[0].reps= 3
lifts[0].weeks[1].sets[0].percent= 70
lifts[0].weeks[1].sets[0].weightKg= 87.5
lifts[0].weeks[1].sets[1].reps= 3
lifts[0].weeks[1].sets[1].percent= 80
lifts[0].weeks[1].sets[1].weightKg= 100
lifts[0].weeks[1].sets[2].reps= 3+
lifts[0].weeks[1].sets[2].percent= 90
lifts[0].weeks[1].sets[2].weightKg= 112.5
lifts[0].weeks[2].week= 3
lifts[0].weeks[2].label= Week 3 — 5/3/1
lifts[0].weeks[2].sets[0].reps= 5
lifts[0].weeks[2].sets[0].percent= 75
lifts[0].weeks[2].sets[0].weightKg= 95
lifts[0].weeks[2].sets[1].reps= 3
lifts[0].weeks[2].sets[1].percent= 85
lifts[0].weeks[2].sets[1].weightKg= 107.5
lifts[0].weeks[2].sets[2].reps= 1+
lifts[0].weeks[2].sets[2].percent= 95
lifts[0].weeks[2].sets[2].weightKg= 120
lifts[0].weeks[3].week= 4
lifts[0].weeks[3].label= Week 4 — Deload
lifts[0].weeks[3].sets[0].reps= 5
lifts[0].weeks[3].sets[0].percent= 40
lifts[0].weeks[3].sets[0].weightKg= 50
lifts[0].weeks[3].sets[1].reps= 5
lifts[0].weeks[3].sets[1].percent= 50
lifts[0].weeks[3].sets[1].weightKg= 62.5
lifts[0].weeks[3].sets[2].reps= 5
lifts[0].weeks[3].sets[2].percent= 60
lifts[0].weeks[3].sets[2].weightKg= 75
lifts[1].lift = bench
lifts[1].oneRm = 105
lifts[1].trainingMax = 95
lifts[1].weeks[0].week= 1
lifts[1].weeks[0].label= Week 1 — 5s
lifts[1].weeks[0].sets[0].reps= 5
lifts[1].weeks[0].sets[0].percent= 65
lifts[1].weeks[0].sets[0].weightKg= 62.5
lifts[1].weeks[0].sets[1].reps= 5
lifts[1].weeks[0].sets[1].percent= 75
lifts[1].weeks[0].sets[1].weightKg= 72.5
lifts[1].weeks[0].sets[2].reps= 5+
lifts[1].weeks[0].sets[2].percent= 85
lifts[1].weeks[0].sets[2].weightKg= 80
lifts[1].weeks[1].week= 2
lifts[1].weeks[1].label= Week 2 — 3s
lifts[1].weeks[1].sets[0].reps= 3
lifts[1].weeks[1].sets[0].percent= 70
lifts[1].weeks[1].sets[0].weightKg= 67.5
lifts[1].weeks[1].sets[1].reps= 3
lifts[1].weeks[1].sets[1].percent= 80
lifts[1].weeks[1].sets[1].weightKg= 75
lifts[1].weeks[1].sets[2].reps= 3+
lifts[1].weeks[1].sets[2].percent= 90
lifts[1].weeks[1].sets[2].weightKg= 85
lifts[1].weeks[2].week= 3
lifts[1].weeks[2].label= Week 3 — 5/3/1
lifts[1].weeks[2].sets[0].reps= 5
lifts[1].weeks[2].sets[0].percent= 75
lifts[1].weeks[2].sets[0].weightKg= 72.5
lifts[1].weeks[2].sets[1].reps= 3
lifts[1].weeks[2].sets[1].percent= 85
lifts[1].weeks[2].sets[1].weightKg= 80
lifts[1].weeks[2].sets[2].reps= 1+
lifts[1].weeks[2].sets[2].percent= 95
lifts[1].weeks[2].sets[2].weightKg= 90
lifts[1].weeks[3].week= 4
lifts[1].weeks[3].label= Week 4 — Deload
lifts[1].weeks[3].sets[0].reps= 5
lifts[1].weeks[3].sets[0].percent= 40
lifts[1].weeks[3].sets[0].weightKg= 37.5
lifts[1].weeks[3].sets[1].reps= 5
lifts[1].weeks[3].sets[1].percent= 50
lifts[1].weeks[3].sets[1].weightKg= 47.5
lifts[1].weeks[3].sets[2].reps= 5
lifts[1].weeks[3].sets[2].percent= 60
lifts[1].weeks[3].sets[2].weightKg= 57.5
lifts[2].lift = deadlift
lifts[2].oneRm = 180
lifts[2].trainingMax = 162.5
lifts[2].weeks[0].week= 1
lifts[2].weeks[0].label= Week 1 — 5s
lifts[2].weeks[0].sets[0].reps= 5
lifts[2].weeks[0].sets[0].percent= 65
lifts[2].weeks[0].sets[0].weightKg= 105
lifts[2].weeks[0].sets[1].reps= 5
lifts[2].weeks[0].sets[1].percent= 75
lifts[2].weeks[0].sets[1].weightKg= 122.5
lifts[2].weeks[0].sets[2].reps= 5+
lifts[2].weeks[0].sets[2].percent= 85
lifts[2].weeks[0].sets[2].weightKg= 137.5
lifts[2].weeks[1].week= 2
lifts[2].weeks[1].label= Week 2 — 3s
lifts[2].weeks[1].sets[0].reps= 3
lifts[2].weeks[1].sets[0].percent= 70
lifts[2].weeks[1].sets[0].weightKg= 115
lifts[2].weeks[1].sets[1].reps= 3
lifts[2].weeks[1].sets[1].percent= 80
lifts[2].weeks[1].sets[1].weightKg= 130
lifts[2].weeks[1].sets[2].reps= 3+
lifts[2].weeks[1].sets[2].percent= 90
lifts[2].weeks[1].sets[2].weightKg= 147.5
lifts[2].weeks[2].week= 3
lifts[2].weeks[2].label= Week 3 — 5/3/1
lifts[2].weeks[2].sets[0].reps= 5
lifts[2].weeks[2].sets[0].percent= 75
lifts[2].weeks[2].sets[0].weightKg= 122.5
lifts[2].weeks[2].sets[1].reps= 3
lifts[2].weeks[2].sets[1].percent= 85
lifts[2].weeks[2].sets[1].weightKg= 137.5
lifts[2].weeks[2].sets[2].reps= 1+
lifts[2].weeks[2].sets[2].percent= 95
lifts[2].weeks[2].sets[2].weightKg= 155
lifts[2].weeks[3].week= 4
lifts[2].weeks[3].label= Week 4 — Deload
lifts[2].weeks[3].sets[0].reps= 5
lifts[2].weeks[3].sets[0].percent= 40
lifts[2].weeks[3].sets[0].weightKg= 65
lifts[2].weeks[3].sets[1].reps= 5
lifts[2].weeks[3].sets[1].percent= 50
lifts[2].weeks[3].sets[1].weightKg= 82.5
lifts[2].weeks[3].sets[2].reps= 5
lifts[2].weeks[3].sets[2].percent= 60
lifts[2].weeks[3].sets[2].weightKg= 97.5
lifts[3].lift = ohp
lifts[3].oneRm = 60
lifts[3].trainingMax = 55
lifts[3].weeks[0].week= 1
lifts[3].weeks[0].label= Week 1 — 5s
lifts[3].weeks[0].sets[0].reps= 5
lifts[3].weeks[0].sets[0].percent= 65
lifts[3].weeks[0].sets[0].weightKg= 35
lifts[3].weeks[0].sets[1].reps= 5
lifts[3].weeks[0].sets[1].percent= 75
lifts[3].weeks[0].sets[1].weightKg= 42.5
lifts[3].weeks[0].sets[2].reps= 5+
lifts[3].weeks[0].sets[2].percent= 85
lifts[3].weeks[0].sets[2].weightKg= 47.5
lifts[3].weeks[1].week= 2
lifts[3].weeks[1].label= Week 2 — 3s
lifts[3].weeks[1].sets[0].reps= 3
lifts[3].weeks[1].sets[0].percent= 70
lifts[3].weeks[1].sets[0].weightKg= 37.5
lifts[3].weeks[1].sets[1].reps= 3
lifts[3].weeks[1].sets[1].percent= 80
lifts[3].weeks[1].sets[1].weightKg= 45
lifts[3].weeks[1].sets[2].reps= 3+
lifts[3].weeks[1].sets[2].percent= 90
lifts[3].weeks[1].sets[2].weightKg= 50
lifts[3].weeks[2].week= 3
lifts[3].weeks[2].label= Week 3 — 5/3/1
lifts[3].weeks[2].sets[0].reps= 5
lifts[3].weeks[2].sets[0].percent= 75
lifts[3].weeks[2].sets[0].weightKg= 42.5
lifts[3].weeks[2].sets[1].reps= 3
lifts[3].weeks[2].sets[1].percent= 85
lifts[3].weeks[2].sets[1].weightKg= 47.5
lifts[3].weeks[2].sets[2].reps= 1+
lifts[3].weeks[2].sets[2].percent= 95
lifts[3].weeks[2].sets[2].weightKg= 52.5
lifts[3].weeks[3].week= 4
lifts[3].weeks[3].label= Week 4 — Deload
lifts[3].weeks[3].sets[0].reps= 5
lifts[3].weeks[3].sets[0].percent= 40
lifts[3].weeks[3].sets[0].weightKg= 22.5
lifts[3].weeks[3].sets[1].reps= 5
lifts[3].weeks[3].sets[1].percent= 50
lifts[3].weeks[3].sets[1].weightKg= 27.5
lifts[3].weeks[3].sets[2].reps= 5
lifts[3].weeks[3].sets[2].percent= 60
lifts[3].weeks[3].sets[2].weightKg= 32.5 The cycle is four weeks long, four lifts per cycle, three working sets per session. Week 1 caps at 5 reps, week 2 at 3 reps, week 3 at 1 rep, week 4 is deload. Each top set on weeks 1 to 3 is prescribed "as many reps as possible" (AMRAP); the rest of the program reads off it.
Reading the cycle for one lift
Squat, week by week (numbers verbatim from the engine output):
Lift: Squat TM = 125 kg
Week 1 — 5s
5 reps @ 65% TM = 82.5 kg
5 reps @ 75% TM = 95.0 kg
5+ reps @ 85% TM = 107.5 kg ← AMRAP set
Week 2 — 3s
3 reps @ 70% TM = 87.5 kg
3 reps @ 80% TM = 100.0 kg
3+ reps @ 90% TM = 112.5 kg ← AMRAP set
Week 3 — 5/3/1
5 reps @ 75% TM = 95.0 kg
3 reps @ 85% TM = 107.5 kg
1+ rep @ 95% TM = 120.0 kg ← Top single
Week 4 — Deload
5 reps @ 40% TM = 50.0 kg
5 reps @ 50% TM = 62.5 kg
5 reps @ 60% TM = 75.0 kg The deadlift cycle scales the same way against a 162.5 kg training max: 105 / 122.5 / 137.5 kg in week 1, ending with the 155 kg top single in week 3. Bench scales against 95 kg TM; OHP against 55 kg TM. The full per-lift output from the engine prints all four lifts at this same template.
Across all four lifts the week-3 "top single" targets sum to 417.5 kg of bar weight on the heaviest single attempts (120 + 90 + 155 + 52.5). The total time under load per week is small — roughly 9 working sets per session, four sessions per week, with rest periods running 3 to 5 minutes on top sets. Assistance work (typically 50 to 100 reps of pulling, pushing, and core per session) layers on top to drive hypertrophy without compromising the main-lift progression[2].
Where the formula breaks
Three breakdowns are common.
1RM input is wrong. Garbage in, garbage out: a lifter who entered a 1RM they did once on a great day with a spotter and a wrap will see a TM that overshoots the AMRAP target. Use a recent, clean single with two judges' criteria (depth, lockout). The One Rep Max Calculator can estimate 1RM from a recent 3RM if no clean single is available.
The 90% TM is too aggressive after a layoff. Returning from 4 to 8 weeks off, drop the TM to 80 to 85 percent for the first cycle. Wendler's later guidance ("forever" template) actually recommends 85% TM as the default, with 90% reserved for lifters who consistently hit eight to ten reps on the week-1 AMRAP set.
Progression rule is misapplied. The standard +2.5 / +5 kg per cycle is contingent on hitting the AMRAP target. Eight-plus reps on the week-3 top set means progression earned. Five or six reps means hold the TM. Three or fewer means reset the TM 10 percent down. Skipping the AMRAP check defeats the program's auto-regulating logic.
Cross-checks against other percentage models
The week-3 top single at 95% TM should sit roughly at RPE 8 to 9 on the Reactive Strength Index scale. The RPE to Percentage Converter reads 95% TM as RPE 8 to 9 for a single at the trained-intermediate level.
Single at 95% TM = 95% × 0.90 × 1RM = 85.5% of 1RM
RPE table ≈ 1 rep at 85.5% of 1RM → roughly RPE 8.0 to 8.5
AMRAP guidance 3 to 5 reps as cap (engine returns "1+") For a lifter who repeatedly hits 3 to 5 reps on the week-3 "top single" set, the TM is calibrated correctly. Hitting only 1 rep means TM is too high; raising 2 to 3 reps means the program is dialed in.
Related tools and follow-ups
- Wendler 5/3/1 Planner — the engine that produced the full four-week cycle.
- One Rep Max Calculator — estimate true 1RM from a clean 3 to 5 rep set.
- RPE to Percentage Converter — cross-check programming intensity against RPE-based prescriptions.
For broader context: The 2026 evidence-based programming guide covers volume/intensity/frequency tradeoffs; How to use RPE for training compares RPE-based to percentage-based programming; RPE-based programming: the math vs the coach goes into the limits of auto-regulation.
FAQ
Why does Wendler use 90% of the 1RM as the training max? The 90% training max bakes in headroom so the prescribed working percentages remain submaximal even on bad days. A lifter with a true squat 1RM of 140 kg uses a TM of 125 kg, which keeps the top single at 120 kg (95% of TM) instead of 135 kg (95% of true 1RM). The AMRAP set provides upward signal without raising risk.
What weights does the engine return for the cycle? For squat 140 / bench 105 / deadlift 180 / OHP 60 at TM 90%, the engine returns squat TM 125 (top single 120), bench TM 95 (top single 90), deadlift TM 162.5 (top single 155), OHP TM 55 (top single 52.5). Deload week drops to 40 to 60 percent of TM across three working sets.
How do you progress between cycles? Standard progression is +2.5 kg on upper-body TMs and +5 kg on lower-body TMs per four-week cycle. If the AMRAP set on week 3 falls below five reps at 95% of TM, hold the TM or reset it 10 percent lower.
References
- 1 5/3/1: The Simplest and Most Effective Training System (Wendler) — Jim Wendler LLC (2011)
- 2 Strength and hypertrophy adaptations between low- vs. high-load resistance training: a systematic review and meta-analysis (Schoenfeld et al.) — Journal of Strength and Conditioning Research (2017)
- 3 Methodology — Wendler 5/3/1 Planner — AI Fit Hub