Mayhew One-Rep Max Calculator from Weight and Repetitions
The Mayhew one-rep max calculator estimates the heaviest load you could lift once from a weight you have already lifted for multiple repetitions.
Run — free
Enter the lifted weight and the number of completed repetitions, and the calculator applies the Mayhew equation to return an estimated one-repetition maximum in the same unit. It works with kilograms or pounds because the equation preserves the unit you provide. The calculation is fully offline and deterministic, making it suitable for quick training checks, repeatable software workflows, and comparisons based on consistent input data.
Enter a representative set
Choose a completed working set that reflects your normal technique and a genuine effort, then enter its lifted weight and repetition count. The weight must be a positive number, while repetitions must be a positive whole number. You may use kilograms or pounds; the result keeps exactly the same unit because the Mayhew equation scales the input rather than converting it. For example, entering a weight measured in kilograms produces an estimate in kilograms. Use the total external load consistently, including the bar when that is how you record training. A set stopped far from fatigue may understate your potential because the formula assumes the repetition performance carries useful information about maximum strength. Conversely, repetitions completed with shortened range of motion, assistance, or substantially different technique may make the estimate less comparable to a strict single. Record inputs honestly and use the same conventions across sessions so changes in the estimate reflect training rather than changes in measurement.
Understand the Mayhew calculation
The calculator uses the Mayhew equation: one-repetition maximum equals 100 times the lifted weight divided by 52.2 plus 41.9 times e raised to negative 0.055 times the repetitions. This exponential relationship is why the estimated multiplier changes with repetition count rather than increasing by one fixed percentage for every additional repetition. The returned estimate is rounded to two decimal places for a stable, readable result, while the calculation itself uses the supplied numeric weight. The process contains no random values, current dates, network requests, account history, or hidden profile adjustments. Identical valid inputs therefore produce identical outputs. The formula does not need to know whether the weight represents kilograms or pounds, but it also cannot label or convert that unit for you. If you enter 100 pounds, interpret the estimate as pounds; if you enter 100 kilograms, interpret it as kilograms. Results from other one-rep-max equations may differ because their fitted relationships and assumptions are not identical.
Use the estimate responsibly
Treat the result as a planning estimate, not a guarantee that a particular maximal attempt will succeed. Readiness changes with sleep, fatigue, exercise order, equipment, technique, rest time, and the specific movement. A useful workflow is to calculate from comparable sets over time, watch the trend, and select conservative training loads from that trend rather than immediately loading the exact estimate. If you test a true maximum, use appropriate safety equipment, competent spotting, and progression suited to the exercise and your experience. The calculator rejects missing, nonnumeric, nonfinite, zero, and negative weights, as well as repetition counts that are not positive integers. That strict validation prevents an apparently precise result from being produced from unusable data. It does not assess pain, injury, medical conditions, or exercise suitability. Stop if a movement causes pain and seek qualified professional guidance when health or rehabilitation decisions are involved. In automated logs, store the source set beside the estimate so future comparisons remain auditable and meaningful.
What you can do with it
Plan training percentages
Estimate a Mayhew one-rep maximum from a recent working set before choosing conservative percentage-based loads.
Track strength trends
Compare estimates from consistently performed sets across training blocks without testing a maximal single every session.
Add estimates to a workout log
Generate a repeatable value offline for each recorded weight-and-repetition set in an application or spreadsheet workflow.
FAQ
What does the calculation cost?
The API price is $0.002 per request, and the browser calculation can run locally.
Can I use kilograms or pounds?
Yes. Use either unit consistently; the estimate is returned in the same unit as the weight you enter.
What formula is used?
It uses the Mayhew equation: 100 times weight divided by 52.2 plus 41.9 times e raised to negative 0.055 times repetitions.
Why might the estimate differ from another calculator?
One-rep-max formulas are fitted differently, so Mayhew can produce a different result from Epley, Brzycki, or other equations.
Is the estimate a safe target for a maximal attempt?
Not automatically. It is an estimate, so use conservative progression, suitable safety equipment, and qualified supervision where appropriate.
For developers — API access
Everything on this page is available programmatically. This section is for teams who want to wire it into their own systems; everyone else can just use the tool above.
API endpoint
Prefer to automate it? One authenticated POST creates the task; the result comes back by webhook or a signed link. The same capability also runs here on the web, by email and from Telegram — and soon from our app too.
Call it from your stack
curl -X POST https://api.kit.forhosting.com/health/one-rep-max-mayhew \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"weight":100,"repetitions":5}'const res = await fetch("https://api.kit.forhosting.com/health/one-rep-max-mayhew", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"weight": 100,
"repetitions": 5
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/health/one-rep-max-mayhew",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"weight": 100,
"repetitions": 5
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/health/one-rep-max-mayhew", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"weight":100,"repetitions":5}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"weight":100,"repetitions":5}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/health/one-rep-max-mayhew", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"weight": 100,
"repetitions": 5
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "health.one_rep_max_mayhew",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}The API is asynchronous: the call returns a task_id immediately and the result arrives by webhook. Polling is capped at 1 req/s per task.
Pricing
Published price — no tokens, no invented credits. A failed task is never charged.
Errors
| HTTP | Code | Meaning |
|---|---|---|
401 | unauthorized | Missing or invalid API key. |
402 | insufficient_balance | Your balance doesn't cover the task price. |
404 | unknown_type | That task type doesn't exist. |
429 | rate_limited | Too many requests. Use the webhook instead of polling. |