Schwartz-Malone coefficient calculator
A man totalling 500 kg at 93 kg body weight gets a Schwartz coefficient of 0.574296 and a score of 287.15. Women are scored with the Malone coefficient, so lifters of different sizes share one ranking. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Total
- 500
- Body weight
- 93
- Sex
- Male
- Total kg
- 500 kg
- Body weight kg
- 93
- Coefficient
- 0.574296
- Score
- 287.15
Comparing raw powerlifting totals across bodyweights is unfair: lighter athletes lift more relative to mass, while heavier athletes move larger absolute loads. The Schwartz-Malone system was an early standard for relative strength scoring. Men use the Schwartz coefficient, a polynomial of bodyweight in kilograms with piecewise linear extensions for the heaviest classes. Women use the Malone coefficient, a fitted power-law of bodyweight. This calculator multiplies your lifted total by the sex-appropriate coefficient and returns both the coefficient and the resulting score. Use it for historical comparisons, meet handicaps that still cite Schwartz-Malone, or educational side-by-side checks against newer formulas such as Wilks or DOTS.
What Schwartz-Malone measures and how the score is built
Relative strength formulas convert a competition total and a bodyweight into a single comparable number so athletes of different sizes can be ranked on one list. Schwartz-Malone is the combined name for two branches used for decades in powerlifting before Wilks became dominant: Dr. Lyle Schwartz’s coefficient for men, published in a form suitable for computers in Powerlifting USA in the early 1980s, and Pat Malone’s coefficient for women, which filled the same role for female lifters.
Operationally the score is simple: convert bodyweight and total to kilograms if needed, look up a coefficient that depends only on bodyweight and sex, then multiply score equals total kilograms times coefficient. For men, bodyweight is clamped to the published domain roughly forty to one hundred sixty-six kilograms; between forty and one hundred twenty-six the coefficient is a sixth-degree polynomial of bodyweight; above that, short linear pieces continue the table through the superheavy range.
For women, Malone uses a power-law form A times bodyweight to the power B plus C, with a lower floor near twenty-nine kilograms so very light athletes do not explode the coefficient. The coefficient itself falls as bodyweight rises, which is the handicapping effect: a lighter lifter needs a smaller absolute total to match a heavier lifter’s score.
Where Schwartz-Malone still matters today
Federations and clubs that retain legacy outstanding-lifter rules still need a deterministic Schwartz-Malone number that matches published tables within ordinary rounding. Coaches comparing archive meet results from the 1970s through the 1990s often recompute historical scores rather than convert everything to Wilks or IPF GL points. Pair it with a modern formula when your federation has moved on; keep Schwartz-Malone when the rulebook or the history book still says so, and never invent a sex branch or a zero bodyweight coefficient on bad input.
What you can do with it
Legacy meet outstanding-lifter rankings
Recompute Schwartz-Malone scores for male and female entries from total and bodyweight when a club still ranks best lifter with the older coefficient system.
Historical archive and education
Convert archived kilograms or pounds totals into Schwartz or Malone scores for articles, classrooms, and side-by-side comparisons with Wilks or DOTS.
FAQ
What is the difference between Schwartz and Malone?
Schwartz is the male bodyweight polynomial (with linear pieces for heavier athletes). Malone is the female power-law coefficient. Sex selects which branch runs.
Can I enter bodyweight and total in pounds?
Yes. Set unit to lb; both masses convert to kilograms before the coefficient is applied. Default unit is kg.
Why does a heavier lifter get a smaller coefficient?
The coefficient falls as body weight rises, and that is the handicap. A lighter lifter needs a smaller total to match the score of a heavier one, so absolute kilograms no longer decide the ranking on their own.
Should I use Schwartz-Malone or Wilks?
Use Schwartz-Malone when a rulebook or a historical comparison calls for it, such as legacy best-lifter awards or meet results from the 1970s to the 1990s. If your federation has moved on, check the same total with a modern formula too.
Can I score a single lift instead of a full total?
Yes. You can enter your best single lift in place of the total, as long as it uses the same unit as your body weight. The coefficient stays the same; only the number it multiplies changes.
Related tools
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/schwartz-malone \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"total":500,"body_weight":93,"sex":"male"}'const res = await fetch("https://api.kit.forhosting.com/health/schwartz-malone", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"total": 500,
"body_weight": 93,
"sex": "male"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/health/schwartz-malone",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"total": 500,
"body_weight": 93,
"sex": "male"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/health/schwartz-malone", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"total":500,"body_weight":93,"sex":"male"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"total":500,"body_weight":93,"sex":"male"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/health/schwartz-malone", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"total": 500,
"body_weight": 93,
"sex": "male"
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "health.schwartz_malone",
"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. |
Technical notes
Missing fields, non-numeric values, non-positive masses, or an unrecognized sex fail with invalid_input and are not billed.
Input contract, units, response shape, and errors
POST a JSON body with three required fields. total is the lifted total or best single lift as a finite positive number. body_weight is the athlete’s body mass as a finite positive number in the same unit as total. sex selects the formula branch: male (or m, man, men) applies Schwartz; female (or f, woman, women) applies Malone. Optional unit defaults to kg and accepts kg or lb (and common synonyms); when unit is lb both total and body_weight are converted with the standard kilograms-per-pound factor before the coefficient is evaluated. On success the response echoes total and body_weight as entered, total_kg and body_weight_kg after conversion, sex, unit, coefficient, score, and a short formula string naming the branch. Missing total, body_weight, or sex; non-finite or non-positive masses; and unrecognized sex or unit values all fail with invalid_input and a message that names the problem. Those failures do not consume balance. Successful calls bill the published $0.002 base price as a pure parse item with no model tokens and no outbound network. Alias keys such as bodyweight, bw, lift, gender, and mass_unit are accepted so existing spreadsheets and scripts can map columns without renaming every header.
Where a Schwartz-Malone API still earns its keep
Gym software and spreadsheet plugins can call this endpoint when a user selects Schwartz-Malone from a formula dropdown next to Wilks or DOTS and expects a clear coefficient plus score for male or female entries in kilograms or pounds.
Integration use cases
Gym apps and spreadsheet formula dropdowns
Expose Schwartz-Malone as one relative-strength option: API and free widget share the same pure module so mobile and server results match.
Technical questions
How do I calculate a Schwartz-Malone score?
Send total, body_weight, and sex (optional unit kg or lb). The API returns coefficient and score = total_kg × coefficient using Schwartz for men and Malone for women.
What happens if total or body_weight is missing or zero?
The task fails with invalid_input. Masses must be finite and positive; missing or non-numeric fields are rejected and not billed.
What does the Schwartz-Malone coefficient calculator cost?
The browser tool is free. API requests use prepaid KIT balance at $0.002 per successful call; invalid input is not billed.