One Rep Max Calculator
Estimate your 1RM maximum lift using Epley, Brzycki, and other formulas.
About this tool
The One Rep Max Calculator estimates your maximum strength on a single lift—the heaviest weight you can move for one repetition—based on lighter weights you can actually lift for multiple reps. This calculation is essential for strength athletes, bodybuilders, and fitness enthusiasts who want to understand their true lifting capacity without the risk of attempting a true one-rep max in the gym. Instead of maxing out, you perform a set with a sub-maximal weight, enter it here, and the calculator uses proven formulas to predict your maximum.
To use the calculator, enter the weight you lifted and the number of repetitions you completed—for example, 185 pounds for 5 repetitions. The tool then applies multiple estimation methods (Epley, Brzycki, Lander, and others) to predict your one-rep max and displays results across different formulas so you can see a range of estimates. This approach gives you flexibility: choose the formula that best matches your experience level, or average them for a conservative estimate.
Different formulas work better for different rep ranges and lifting styles—Epley tends to overestimate at higher reps, while Brzycki is more accurate for lower rep counts. Always prioritize training safety: use the one-rep max estimate as a guideline only, not an absolute truth. Start conservatively when attempting heavier lifts, and remember that form, recovery, and consistency matter far more than raw numbers.
Frequently Asked Questions
Code Implementation
def epley(weight, reps):
"""Epley formula: 1RM = w * (1 + r/30)"""
if reps == 1:
return weight
return weight * (1 + reps / 30)
def brzycki(weight, reps):
"""Brzycki formula: 1RM = w * 36 / (37 - r)"""
if reps == 1:
return weight
if reps >= 37:
raise ValueError("Brzycki formula undefined for reps >= 37")
return weight * 36 / (37 - reps)
def lander(weight, reps):
"""Lander formula: 1RM = (100 * w) / (101.3 - 2.67123 * r)"""
if reps == 1:
return weight
return (100 * weight) / (101.3 - 2.67123 * reps)
def one_rep_max(weight, reps):
"""Average of the three major 1RM estimation formulas."""
e = epley(weight, reps)
b = brzycki(weight, reps)
l = lander(weight, reps)
return (e + b + l) / 3
# Example usage
weight_kg = 100
reps = 5
estimated_1rm = one_rep_max(weight_kg, reps)
print(f"Estimated 1RM: {estimated_1rm:.1f} kg")
print(f" Epley: {epley(weight_kg, reps):.1f} kg")
print(f" Brzycki: {brzycki(weight_kg, reps):.1f} kg")
print(f" Lander: {lander(weight_kg, reps):.1f} kg")
# Training percentages
percentages = {
"Warm-up (50-60%)": (0.50, 0.60),
"Endurance (60-70%)": (0.60, 0.70),
"Hypertrophy (70-85%)": (0.70, 0.85),
"Strength (85-95%)": (0.85, 0.95),
"Peaking (95-100%)": (0.95, 1.00),
}
print("\nTraining zones:")
for zone, (lo, hi) in percentages.items():
print(f" {zone}: {estimated_1rm * lo:.1f} – {estimated_1rm * hi:.1f} kg")Comments & Feedback
Comments are powered by Giscus. Sign in with GitHub to leave a comment.