How 1RM estimation works
Estimating a one-rep max from a submaximal set works because there's a predictable, near-linear relationship between weight on the bar and reps possible at that weight for trained lifters. Multiple formulas exist; each was derived from a different population, which is why averaging multiple smooths individual-formula bias.
The four formulas this calculator uses
| Formula | Equation | Best for |
|---|---|---|
| Epley | weight × (1 + reps/30) | 2-10 rep range, general use |
| Brzycki | weight × 36 / (37 − reps) | 1-10 rep range, slightly conservative |
| Lombardi | weight × reps^0.10 | Lower-rep ranges, powerlifting |
| Mayhew | 100 × weight / (52.2 + 41.9 × e^(−0.055 × reps)) | Mid-rep ranges, general lifters |
The calculator runs all four and averages them. If any formula returns a result more than 8% above or below the average, the average is shown as the headline number with a small note about variance.
How RIR adjustment works
The formulas above assume the set was taken to true failure. If you stopped with reps in reserve, the calculator adds the RIR to your rep count before computing — a 5-rep set at 2 RIR becomes a 7-rep set at 0 RIR for estimation purposes.
This isn't perfect; RIR estimation is itself noisy (most lifters underestimate by 1-2 reps in their first year or two of training). But it produces a closer estimate than ignoring RIR entirely.
When estimates are reliable (and when they aren't)
Reliable conditions
- 3-6 rep range, taken close to failure. Sweet spot for accuracy.
- Compound barbell lifts. Squat, bench, deadlift, overhead press — formulas were derived primarily from these.
- Intermediate or advanced training experience. The relationship between reps and weight is more linear once technique stabilises.
- You're well-rested. A heavy single estimate from a fatigued day will underestimate true capacity.
Less reliable conditions
- Sets above 10 reps. Formulas tend to overestimate because metabolic fatigue compounds non-linearly.
- Sets of 1-2 reps. Formulas can underestimate slightly; the safer move is to test a true 1RM or use a 3-rep estimate.
- Isolation movements. Curls, lateral raises, leg curls — the formulas weren't designed for these and tend to overestimate.
- Beginner lifters. Less stable technique = more day-to-day variance, less reliable extrapolation.
- Bodyweight movements. Pull-ups, push-ups, dips — the "weight" isn't fixed (it's your bodyweight + any added load), so the math breaks down.
How to use the training percentages
The percentages below the estimate are programming targets. Different programming styles use them differently:
| % of 1RM | Typical rep range | Used for |
|---|---|---|
| 60-67% | 10-15 reps | Hypertrophy accessory work, warm-up sets, deload week working weight |
| 70-75% | 8-10 reps | General hypertrophy, hypertrophy-focused mesocycle work sets |
| 78-82% | 5-7 reps | Strength-hypertrophy crossover, intensification block working weights |
| 85-87% | 4-5 reps | Strength block working sets, peak programmes |
| 90-92% | 2-3 reps | Strength peaking, intent training |
| 93-100% | 1-2 reps | Max effort sessions, peak day, opener planning |
How often to recalculate
For most lifters, recalculate at the end of each training block (every 4-8 weeks). The cleanest method:
- End of a mesocycle, after your peak/test week.
- Take a heavy 3-5 rep set on your main lift at around 1-2 RIR.
- Plug the result into the calculator. That's your new estimate for the next block.
- Use the new estimate to set training percentages for the next mesocycle.
Doing a true 1RM attempt every 4-8 weeks is unnecessary CNS load. Sub-maximal estimates are nearly as accurate without the recovery cost.
How Coachly handles 1RM tracking
Inside the Coachly app, every set you log updates your estimated 1RM automatically using these same formulas. The Progress tab shows the trend across mesocycles, broken down per lift. The adaptive programming engine uses the rolling 1RM estimate to set load targets for each working set — so you don't need to recalculate manually every block.
When the engine detects a plateau (3+ sessions without rep or load progression), it triggers a deload automatically. When estimated 1RM jumps significantly (5+ kg in a single session), the engine accounts for it on the next training day.