Calculator methodology
Last updated: May 2026.
Every StrengthMath calculator is backed by a sourced engine in lib/strength/. Each formula and threshold is reproduced from a primary reference — published 1RM prediction equations, NSCA and ACSM position stands, NIST conversion factors. Where the published literature ends and StrengthMath methodology fills the gap, this page says so explicitly. So does each calculator.
Two related pages cover the surrounding parts: editorial policy covers sourcing standards, AI use, and corrections; disclosures covers monetization. This page is the math.
1RM prediction formulas
The 1RM calculators (general, incline-bench, dumbbell-bench) use four published prediction equations. Each is reproduced from its original publication and verified by lib/strength/oneRepMax.test.tsagainst a worked example (Epley(100 kg, 5) ≈ 116.7 kg, etc.).
| Formula | Equation | Behavior |
|---|---|---|
| Epley | weight × (1 + reps / 30) | Workhorse. Slightly overshoots at high reps. |
| Brzycki | weight × 36 / (37 − reps) | Sharp at low reps. Asymptote at 37 reps; calculator caps at 20 to stay clear. |
| Lombardi | weight × reps^0.1 | Flattest curve. Conservative at high reps. |
| O'Conner | weight × (1 + reps × 0.025) | Most conservative overall. |
Cross-formula average is the headline by default. The four-way spread is surfaced so the user can see how much agreement they got; wide spread = noisy input rep range.
Reliability bands (LeSuer 1997)
LeSuer et al. (1997, “Accuracy of prediction equations for strength performance”) validated multiple 1RM equations against true 1RM testing across bench, squat, and deadlift. The headline finding: prediction error within ~2% at ≤5 reps and growing sharply past 10. The specific ± bands below are StrengthMathmethodology grounded in those directional findings — labeled as such in the engine output. They're not an exact LeSuer table; they're a defensible synthesis across the validation literature.
| Reps | Band | Use it for |
|---|---|---|
| ≤5 | HIGH (±2%) | Programming + estimating peak attempts. |
| 6–10 | MEDIUM (±5%) | Programming reference. Don't use for one-off comparisons. |
| 11–15 | NOISY (±10%) | Programming hint, not a real 1RM estimate. |
| 16+ | VERY NOISY (±15%) | Directional only — formulas diverge sharply. |
See the 1RM calculator for the per-rep-input reliability surfaced live.
Dumbbell-vs-barbell limits (the humble math)
There is no consensus-published dumbbell-to-barbell conversion factor. The dumbbell calculator's PRIMARY output is the per-dumbbell 1RM and the total external load — both grounded directly in submax-rep math. The SECONDARY output is a wide barbell-equivalent range (1.05×–1.25× × total external load), deliberately wide because the literature on cross-implement conversion is thin and the per-lifter variance is large.
Five caveats are surfaced explicitly in the calculator and engine output: stability demand, ROM differential, bench angle, dumbbell increment granularity, and technique drift. Each is a real difference between dumbbell and barbell pressing that the math can't see. The 1.05–1.25× range is StrengthMath methodology — practitioner-consensus framing — and is labeled as such in the UI.
Training percentages (NSCA + ACSM 2026 dual framing)
The percentage-of-1RM calculator surfaces both the NSCA traditional band (field-default for ~30 years, what most written programs are built around) and the ACSM 2026 update (where the 2026 Position Stand on Resistance Training differs materially). The load table uses the NSCA band for in-table highlighting; the ACSM 2026 framing appears as a callout below the band so the two framings don't fight each other for the same visual channel.
| Goal | NSCA band | ACSM 2026 | RIR target |
|---|---|---|---|
| Strength | 80–95% | ≥80% threshold | 1–3 |
| Power | 50–75% | 30–70% (widened) | 2–4 |
| Hypertrophy | 65–80% | Load-agnostic at ≥30% with RIR ≤3, ≥10 sets/wk | 0–3 |
| Speed | 30–60% | 30–60% | 3–5 |
| Deload | 50–70% | 50–70% | 4–6 |
| Peaking | 85–97.5% | 85–97.5% | 0–2 |
Test-attempt percentages (>100%) are gated behind an explicit max-test mode toggle. Default load table caps at 100%. Peaking caps at 97.5% even with max-test off — that's what “heavy single” means in a programmed peak. The specific ACSM 2026 deltas (power widened to 30–70%, hypertrophy deprioritized %1RM in favor of effort + volume + eccentric emphasis) are sourced from the 2026 Position Stand on Resistance Training; both framings are returned by the engine and surfaced in the calculator. See the percentage calculator for the live version.
Strength standards (adult vs teen split)
Adult standards (≥18) use bodyweight-multiplier tables for bench / squat / deadlift / OHP × male / female × novice → elite. Source posture: ExRx-aligned (training-population synthesis). When OpenPowerlifting data is invoked it's flagged as competition-biased — everyone in the dataset is a registered powerlifter, so percentile bands aren't a population mean. This sourcing distinction is preserved in the engine output (openPowerliftingNote is separate from the main disclaimer).
Teen mode (<18) is structurally different. The engine returns soft framing only — still-building / typical / above-typical-beginner / unusually-strong — never assigning elite / advanced / intermediate to a minor. OpenPowerlifting is NOT used for ages under 18 (sparse + skewed; minor competition is restricted in most federations). The teen-mode footer cites the AAP directly: “The American Academy of Pediatrics recommends preadolescents and adolescents avoid power lifting, body building, and maximal lifts until they reach physical and skeletal maturity.” (AAP Pediatrics 2008, reaffirmed in 2020 review.) Estimate via submax reps, never max testing, and only with coach or guardian supervision.
Units, plates, and rounding
kg ↔ lb conversion uses the SI-derived factor 1 kg = 2.2046226218 lb (NIST SP 811, Appendix B), rounded to 5 decimals because gym scales don't surface more precision than that and the residual error is below plate-increment granularity.
Standard plate inventories:
- IPF/USAW kg:25 / 20 / 15 / 10 / 5 / 2.5 / 1.25 kg. Competition standard.
- US commercial lb:45 / 35 / 25 / 10 / 5 / 2.5 lb. What most American non-competition gyms stock.
- Bar weights:20 kg (Olympic / IPF) and 45 lb (US commercial) are the universal defaults. They are NOT the same bar — 45 lb ≈ 20.41 kg. Engine and UI label each by its own scale so the math doesn't silently treat them as identical.
Plate-loading uses a greedy descending algorithm: subtract bar from target, halve to per-side, then load the largest plate that fits and repeat. Greedy is provably optimal for both standard plate sets because each plate ≤ 2× the next smaller (no Frobenius coin-change pathology). A 1e-9 tolerance absorbs IEEE-754 float dust from kg/lb conversions and halving.
Rounding posture is layer-aware: the plate calculator rounds to 4 decimals (precision floor); the 1RM engines round to 0.1 (display); the percentage engine rounds load values to 0.5 kg or 1 lb (programming granularity, not loadout precision — the plate calculator handles plate-level rounding separately).
What the calculators do NOT model
Honest accounting of what a number can and can't answer is the whole point of a sourced calculator. The math here covers mechanical load and rep-count math. It does NOT model:
- Injury or pain. Lifting through pain is never a calculator question. Stop and consult appropriate care.
- Technique drift. A 1RM estimate assumes form held throughout. A grindy 5-rep set with bar-path drift will over-estimate.
- Range of motion. Half-rep dumbbell pressing and full-ROM dumbbell pressing produce identical math output but very different real-world strength.
- Equipment differences.Smith-machine vs free bar, fixed-incline vs adjustable, knee sleeves vs no sleeves — the math doesn't see any of it.
- Fatigue and program context. The estimate is for an isolated submax set. A 1RM derived from a top set after 5 working sets is biased low; from a fresh top set, biased high.
- Coaching judgment. Programming a peak, selecting attempts in a meet, deciding when to deload — these are coach decisions. The calculator is one input.
Each calculator's page surfaces a similar “what this does NOT do” callout next to the calculator itself, so the scoping disclosures travel with the math.
Engine + test discipline
All engines live in lib/strength/and ship with Vitest test files that reproduce a worked example for each formula and band. The published numbers (Epley(100 kg, 5), Brzycki(100 kg, 10), the IPF/USAW plate set sums, the NSCA band edges, the AAP teen-mode framing) are asserted directly so a future change to the math triggers a test failure rather than a silent drift. As of this writing the suite is 102 tests, all green.
Questions or corrections? Contact us.