Created by Jim Wendler, the 5/3/1 program is a strength training philosophy focused on slow, steady, and consistent progress. Unlike programs that have you maxing out every week, 5/3/1 uses a "Training Max" (TM) which is typically 85% to 90% of your actual 1-Rep Max (1RM). This ensures you aren't training to failure constantly, allowing for better recovery and long-term gains.
How to Use This Calculator
To get your personalized 4-week cycle, follow these steps:
Weight and Reps: Enter a recent heavy set. For example, if you squatted 300 lbs for 5 reps, enter those numbers.
Training Max: Select 90% for most lifters. If you are an advanced lifter or prefer a slower progression, choose 85%.
Rounding: Most gyms use 5lb or 2.5kg plates as the smallest increment. Set the rounding factor to match your equipment.
Understanding the 4-Week Cycle
The program is broken down into four distinct weeks, each with a different focus:
Week 1 (3×5): You perform 3 sets of 5 reps. The final set is an "AMRAP" (As Many Reps As Possible), denoted by the '+'.
Week 2 (3×3): The intensity increases as you perform 3 sets of 3 reps, again with a '+' on the final set.
Week 3 (5/3/1): This is the heaviest week. You perform a set of 5, then 3, then a final set of 1 or more reps.
Week 4 (Deload): A recovery week with much lower intensity (40-60%) to allow your central nervous system to recover.
Example Calculation
If your estimated 1RM for the Bench Press is 200 lbs:
Your Training Max (90%) would be 180 lbs. All percentages for the cycle are calculated based on 180 lbs, not 200 lbs. In Week 1, your top set would be 85% of 180, which is 153 lbs (rounded to 155 lbs).
function calculateWendler() {
var weight = parseFloat(document.getElementById('liftWeight').value);
var reps = parseFloat(document.getElementById('liftReps').value);
var tmPercent = parseFloat(document.getElementById('trainingMaxPercent').value);
var round = parseFloat(document.getElementById('roundingFactor').value);
if (isNaN(weight) || isNaN(reps) || weight <= 0 || reps <= 0) {
alert("Please enter valid positive numbers for weight and reps.");
return;
}
// Epley Formula for 1RM
var estimated1RM = weight * (1 + (reps / 30));
var trainingMax = estimated1RM * tmPercent;
// Display Summary
var summaryDiv = document.getElementById('statsSummary');
summaryDiv.innerHTML = "Estimated 1RM: " + estimated1RM.toFixed(1) + " | Training Max (" + (tmPercent * 100) + "%): " + trainingMax.toFixed(1);
var cycleData = [
{
week: "Week 1 (3×5)",
sets: [
{ pct: 0.65, reps: "5" },
{ pct: 0.75, reps: "5" },
{ pct: 0.85, reps: "5+" }
]
},
{
week: "Week 2 (3×3)",
sets: [
{ pct: 0.70, reps: "3" },
{ pct: 0.80, reps: "3" },
{ pct: 0.90, reps: "3+" }
]
},
{
week: "Week 3 (5/3/1)",
sets: [
{ pct: 0.75, reps: "5" },
{ pct: 0.85, reps: "3" },
{ pct: 0.95, reps: "1+" }
]
},
{
week: "Week 4 (Deload)",
sets: [
{ pct: 0.40, reps: "5" },
{ pct: 0.50, reps: "5" },
{ pct: 0.60, reps: "5" }
]
}
];
var html = "";
for (var i = 0; i < cycleData.length; i++) {
html += "
" + cycleData[i].week + "
";
html += "
Set
Percentage
Weight
Reps
";
for (var j = 0; j < cycleData[i].sets.length; j++) {
var set = cycleData[i].sets[j];
var rawWeight = trainingMax * set.pct;
var roundedWeight = Math.round(rawWeight / round) * round;
html += "