1RM Calculator and Rep Max Chart: Estimate Your Max Lifts
Last updated May 2025
Your one-rep max (1RM) is the maximum weight you can lift for a single repetition with proper form. You do not need to test it directly — which carries injury risk — to know it. This calculator estimates your 1RM, 5RM, and 10RM from any weight and rep combination you have actually performed, using three validated formulas.
How to Use This Calculator
- Enter a weight you have lifted recently.
- Enter the maximum number of clean reps you performed with that weight.
- Select which formula to use (or view all three for comparison).
- The calculator outputs your estimated 1RM, 5RM, 10RM, and a full percentage table for programming.
Important: These are estimates. The formulas assume you performed the reps to near-failure (could not complete 1–2 more reps with good form). Submaximal sets (5 easy reps with a weight you could do 10 times) will overestimate your 1RM.
The Calculator
Input Your Lift
| Input | Value |
|---|---|
| Weight Lifted | |
| Reps Performed | |
| Formula |
Results
The Formulas Explained
Brzycki Formula (Most Conservative)
1RM = weight / (1.0278 - 0.0278 × reps)
Published by Matt Brzycki in 1998. Tends to produce the most conservative (lowest) 1RM estimates, especially at higher rep ranges (10+). Our analysis indicates this formula is most accurate for trained lifters performing sets above 5 reps.
Epley Formula (Most Common)
1RM = weight × (1 + reps / 30)
The simplest and most widely used formula. Popularized by Boyd Epley, founder of the National Strength and Conditioning Association (NSCA). Produces moderate estimates that align well with actual 1RM testing for most lifters in the 3–10 rep range.
Lombardi Formula (Most Aggressive)
1RM = weight × reps^0.10
Published by Bob Lombardi. Tends to produce the highest 1RM estimates, particularly at higher rep counts. May overestimate for some lifters but can be accurate for those with superior muscular endurance relative to absolute strength.
Formula Comparison at 135 lb × 8 reps
| Formula | Estimated 1RM | Character |
|---|---|---|
| Brzycki | 167 lb | Conservative; best for higher-rep sets |
| Epley | 171 lb | Balanced; most widely used |
| Lombardi | 174 lb | Aggressive; best for low-rep sets |
The variation between formulas at 8 reps is approximately ±4 lb — well within the practical margin for programming purposes.
Accuracy by Rep Range
| Reps Performed | Formula Accuracy | Recommendation |
|---|---|---|
| 1–3 reps | High (±2–3%) | Use any formula; all are close |
| 4–8 reps | Moderate-High (±3–5%) | Epley or Brzycki preferred |
| 9–15 reps | Moderate (±5–10%) | Brzycki may be more accurate |
| 16+ reps | Lower (±10–15%) | All formulas less accurate; use as rough guide only |
Key insight: The higher the rep count used for estimation, the less accurate all formulas become. A 1RM estimated from a 20-rep set is a rough approximation, not a precise number.
Training Percentage Table
Use this table to program your workouts based on your estimated 1RM:
| % of 1RM | Rep Range | Training Goal |
|---|---|---|
| 95–100% | 1 rep | Maximal strength / peaking |
| 90–94% | 2 reps | Strength (near-maximal) |
| 85–89% | 3 reps | Strength |
| 80–84% | 4–5 reps | Strength-Hypertrophy |
| 75–79% | 6–8 reps | Hypertrophy (general) |
| 70–74% | 9–11 reps | Hypertrophy (muscular endurance) |
| 65–69% | 12–15 reps | Muscular endurance |
| 60–64% | 16–20 reps | Endurance / metabolic stress |
| 50–59% | 20–30 reps | Light recovery / technique work |
Common Prescription Reference
| Goal | Typical Loading | Sets x Reps |
|---|---|---|
| Pure strength | 85–95% of 1RM | 3–5 sets × 1–3 reps |
| Strength + size | 75–85% of 1RM | 3–4 sets × 4–8 reps |
| Muscle growth | 65–80% of 1RM | 3–5 sets × 6–12 reps |
| Endurance | 50–70% of 1RM | 2–4 sets × 12–20 reps |
JavaScript Calculator Logic
// === REP MAX CALCULATOR ===
function calculateRepMax() {
const weight = parseFloat(document.getElementById('rm-weight').value) || 0;
const reps = parseInt(document.getElementById('rm-reps').value) || 0;
const unit = document.getElementById('rm-unit').value;
const formula = document.getElementById('rm-formula').value;
if (weight <= 0 || reps <= 0 || reps > 30) {
alert('Please enter valid weight (1–2000) and reps (1–30).');
return;
}
// Calculate 1RM using selected formula(s)
let results = {};
if (formula === 'all' || formula === 'brzycki') {
results.brzycki = weight / (1.0278 - 0.0278 * reps);
}
if (formula === 'all' || formula === 'epley') {
results.epley = weight * (1 + reps / 30);
}
if (formula === 'all' || formula === 'lombardi') {
results.lombardi = weight * Math.pow(reps, 0.10);
}
// Calculate derived RMs from each 1RM
const rmTable = {};
for (const [name, rm1] of Object.entries(results)) {
rmTable[name] = {
rm1: rm1,
rm2: rm1 * (1.0278 - 0.0278 * 2), // reverse Brzycki for 2RM
rm3: rm1 * (1.0278 - 0.0278 * 3),
rm5: rm1 * (1.0278 - 0.0278 * 5),
rm8: rm1 * (1.0278 - 0.0278 * 8),
rm10: rm1 * (1.0278 - 0.0278 * 10),
rm12: rm1 * (1.0278 - 0.0278 * 12),
rm15: rm1 * (1.0278 - 0.0278 * 15),
};
}
// Render
document.getElementById('rm-results').style.display = 'block';
// Max results
let maxHtml = '<table><thead><tr>';
if (formula === 'all') {
maxHtml += '<th>Rep Max</th><th>Brzycki</th><th>Epley</th><th>Lombardi</th></tr></thead><tbody>';
const rows = [
['1RM', 'rm1'], ['2RM', 'rm2'], ['3RM', 'rm3'], ['5RM', 'rm5'],
['8RM', 'rm8'], ['10RM', 'rm10'], ['12RM', 'rm12'], ['15RM', 'rm15']
];
for (const [label, key] of rows) {
maxHtml += `<tr><td><strong>${label}</strong></td>`;
for (const name of ['brzycki', 'epley', 'lombardi']) {
if (rmTable[name]) {
maxHtml += `<td>${rmTable[name][key].toFixed(1)} ${unit}</td>`;
} else {
maxHtml += `<td>—</td>`;
}
}
maxHtml += '</tr>';
}
} else {
maxHtml += '<th>Rep Max</th><th>Estimated Weight</th></tr></thead><tbody>';
const data = rmTable[formula];
const rows = [
['1RM (max single)', data.rm1], ['2RM', data.rm2], ['3RM', data.rm3],
['5RM', data.rm5], ['8RM', data.rm8], ['10RM', data.rm10],
['12RM', data.rm12], ['15RM', data.rm15]
];
for (const [label, val] of rows) {
maxHtml += `<tr><td><strong>${label}</strong></td><td>${val.toFixed(1)} ${unit}</td></tr>`;
}
}
maxHtml += '</tbody></table>';
document.getElementById('rm-max-results').innerHTML = maxHtml;
// Percentage table
const avg1RM = formula === 'all'
? (results.brzycki + results.epley + results.lombardi) / 3
: results[formula];
let pctHtml = '<table><thead><tr><th>% of 1RM</th><th>Weight</th><th>Typical Reps</th><th>Training Goal</th></tr></thead><tbody>';
const percentages = [
{ pct: 100, reps: '1', goal: 'Maximal strength test' },
{ pct: 95, reps: '2', goal: 'Near-maximal strength' },
{ pct: 90, reps: '3', goal: 'Strength' },
{ pct: 85, reps: '4–5', goal: 'Strength-Hypertrophy' },
{ pct: 80, reps: '5–6', goal: 'Hypertrophy (heavy)' },
{ pct: 75, reps: '6–8', goal: 'Hypertrophy (general)' },
{ pct: 70, reps: '8–10', goal: 'Hypertrophy (light)' },
{ pct: 65, reps: '10–12', goal: 'Muscular endurance' },
{ pct: 60, reps: '12–15', goal: 'Endurance / metabolic' },
{ pct: 50, reps: '15–20', goal: 'Recovery / technique' },
];
for (const row of percentages) {
const w = avg1RM * (row.pct / 100);
pctHtml += `<tr><td>${row.pct}%</td><td>${w.toFixed(1)} ${unit}</td><td>${row.reps}</td><td>${row.goal}</td></tr>`;
}
pctHtml += '</tbody></table>';
document.getElementById('rm-percentage-table').innerHTML = pctHtml;
// Usage guide
document.getElementById('rm-usage-guide').innerHTML = `
<p><strong>Programming your next workout:</strong> If your estimated 1RM is approximately ${avg1RM.toFixed(0)} ${unit},
a hypertrophy-focused bench press session might use ${(avg1RM * 0.78).toFixed(0)} ${unit}
for 3 sets of 8 reps (approximately 78% of 1RM).</p>
<p><strong>Progress tracking:</strong> Re-test every 6–8 weeks using the same weight and rep comparison.
If you previously lifted ${weight} ${unit} for ${reps} reps, and now you can lift that weight for more reps
or a heavier weight for the same reps, your max has increased.</p>
<p><strong>Safety note:</strong> These formulas estimate performance. Do not attempt a true 1RM without
spotter arms, safety pins, or a trained spotter. For home gym users, the 3–5 rep range with
calculated percentages is safer and nearly as effective for strength development.</p>
`;
document.getElementById('rm-results').scrollIntoView({ behavior: 'smooth' });
}
// Auto-run on load with defaults
document.addEventListener('DOMContentLoaded', calculateRepMax);
Practical Programming Example
Your input: You bench press 135 lb for 8 reps to near-failure.
Epley estimate: 171 lb 1RM
A typical week using percentage-based programming:
| Day | Sets x Reps | % of 1RM | Working Weight | Focus |
|---|---|---|---|---|
| Monday | 4 x 5 | 82% | 140 lb | Strength-hypertrophy |
| Wednesday | 3 x 8 | 76% | 130 lb | Hypertrophy |
| Friday | 3 x 10 | 72% | 123 lb | Volume/hypertrophy |
Progression: When 140 lb × 5 feels manageable (RPE 7 or lower), increase to 145 lb and continue.
Related SnugGym Articles
- What Is Progressive Overload?
- What Is a Drop Set?
- Full-Body Dumbbell Workout for Small Spaces
- Home Gym Workout Programs and Split Routines
- Best Adjustable Dumbbells for Small Spaces
As an Amazon Associate we earn from qualifying purchases. Last updated: May 2025.