One Rep Max Calculator
Estimate your 1RM maximum lift using Epley, Brzycki, and other formulas.
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.