Strength Score
How the Strength Score is made.
One number for how strong you are, fair across bodyweights, across lifts, and across a barbell or none. Every term in it, why each one is there, and the one term the app keeps to itself.
What goes in
Five things. Nothing else.
- 01
Every working set you log
Weight and reps, or reps of a bodyweight movement. Warm-ups and drop sets are not read.
- 02
Your bodyweight
From the check-in. It is the one thing the formula divides by.
- 03
Which movement it was
Sorted into five slots — squat, deadlift, bench, press, row — weighted or bodyweight alike.
- 04
Sex, through the standards only
It changes which yardstick a lift is held to, and nothing else. Skipped, it is the average of both.
- 05
Age, as one bounded factor
Nothing until twenty-eight. A little each year after, with a ceiling.
Nothing else. Not your streak, not your steps, not how the session felt.
The formula
One line. Eight terms.
Read left to right, from inside the bracket out. Every term is a link to its own explanation, and the last one is the one that stays inside the app.
The Strength Score equals the mean, over every movement you have logged, of the load divided by bodyweight, times bodyweight over eighty to the power 0.33, divided by the lift’s own advanced standard, times a recency factor — then times a coverage factor, times an age factor, times the Liftor Number: a calibration per lift and per lifter, which is not published.
Term by term
Why each one is there.
Seven published terms and the one that is not, in the order the formula reads them. Each figure is worked from the app’s own constants.
load
Term 01. The load.
Each movement’s one-rep max, estimated from your best working set and smoothed across sessions.
The formula does not read the bar. It reads what the bar implies: the most you could lift once, estimated from the best working set of the session by the Epley formula, weight × (1 + reps ÷ 30), with a single rep taken as read. Only completed working sets count. A warm-up is a warm-up.
Then it is smoothed. The newest session counts for forty percent of the estimate and everything before it for sixty, so one heavy day cannot whipsaw the number and one flat day cannot sink it. Per slot the strongest movement you have is the one that is read — a barbell bench and a dumbbell bench are the same slot, and the higher estimate stands for it.
A bodyweight movement is a load like any other. A rep moves a share of you through the working joints, and the app knows the share: a pull-up moves all of you, a dip about ninety-five percent, a push-up about two thirds. Bodyweight × share, plus anything you added, is the weight; the reps are the reps; Epley does the rest. This is what puts a calisthenics athlete and a barbell lifter on one axis.
The share of you a rep moves. Bodyweight × share, plus anything added, is the load. Movement Share Pull-up, chin-up 100% Dip 95% Handstand push-up 90% Pistol squat 80% Push-up 64% Inverted row 60% ÷ bodyweight × (bodyweight ÷ 80)^0.33
Term 02. Bodyweight, to the two-thirds.
Strength scales with about the 0.67 power of bodyweight, not the first. So that is what the load is divided by.
A plain ratio of load to bodyweight quietly favours lighter people. Muscle strength grows with the cross-section of the muscle, and cross-section grows with the square of a body’s dimensions while mass grows with the cube — so strength rises with roughly the two-thirds power of bodyweight. Dividing by bodyweight punishes a 100 kg lifter twice. Dividing by bodyweight to the 0.67 puts a 60 kg lifter and a 100 kg lifter on one axis, which is the allometric case Slobodan Jaric set out in Sports Medicine in 2002.
The app writes it as load ÷ bodyweight × (bodyweight ÷ 80)^0.33, which is the same thing anchored at 80 kg so the numbers stay readable. One anchor for everyone — it is not split by sex, and it is not a target. The pair under this paragraph is the term doing its job: two squats the plain ratio calls eighteen percent apart, level.
Two squats. The plain ratio calls the lighter lifter eighteen percent stronger; the two-thirds power calls them level. Bodyweight Squat ÷ bodyweight ÷ bodyweight^0.67 60 kg 120 kg 2.00 1.82 100 kg 169 kg 1.69 1.82 ÷ S, the lift’s standard
Term 03. The lift’s own standard.
Each lift is divided by its own advanced mark before anything is averaged, so 1.0 means the same thing everywhere.
A deadlift is naturally a high multiple of bodyweight and an overhead press a low one. Averaged raw, the deadlift would drown the press and the score would mostly be a deadlift score. So each movement’s relative strength is divided by that movement’s own “advanced” standard — a multiple of bodyweight, per lift, per sex — and reads as a fraction of it. Strong-for-press and strong-for-deadlift both come out near 1.0 and count the same.
Sex enters the formula here and nowhere else. Where it is not given, the standard is the average of the two columns, never the higher bar, because dividing an unknown by the higher bar would deflate every unknown score. The worked tables by bodyweight are on the strength standards page.
Advanced, as a multiple of bodyweight at 80 kg. Not given is the average of the two. Lift Men Women Not given Squat 1.9× 1.5× 1.7× Deadlift 2.4× 1.9× 2.15× Bench press 1.4× 0.9× 1.15× Overhead press 0.95× 0.62× 0.785× Row 1.3× 0.95× 1.125× × R, recency
Term 04. Recency.
A lift you did today counts in full. A lift you have not done in weeks fades toward a floor, and never below it.
Each movement’s read is multiplied by a recency factor: 1.0 the day you do it, decaying with a time constant of twenty-one days toward a floor of 0.7. Three weeks untouched reads at about 0.81; three months, at about 0.70; a year, still 0.70. The floor is the point. Strength you built does not evaporate because you stopped logging it, and the score should not pretend it did.
It is applied once, inside the formula, per movement. Nothing downstream decays anything again.
R = 0.7 + 0.3 × e^(−days ÷ 21). Three weeks untouched reads at about 0.81; three months at about 0.70; never under 0.7. the mean over your lifts
Term 05. The mean, not the sum.
Your movements are averaged. A fifth movement raises the score only by being good, never by being there.
Summing would pay for volume: log a fourth and a fifth movement, however weak, and the total goes up. Averaging pays only for quality, and it means the score of a lifter who trains two movements well is not a fraction of the score of one who trains five. The score is the mean of the normalised, recency-weighted reads of every movement you have — one to five of them.
Breadth is still rewarded. It is rewarded by the next term, gently, and not here.
× C, coverage
Term 06. Coverage.
One movement earns 0.8 of the mean. All five earn all of it. The steps between are even.
The coverage factor is 0.8 plus 0.2 × the share of the five slots you have logged: 0.84 for one movement, 0.88 for two, 0.92 for three, 0.96 for four, 1.0 for five. That is the whole reward for breadth — a fifth of the score at most, in even steps, and never enough to let a weak fifth movement beat a strong fourth.
The five slots are movement patterns, not exercises. A pistol squat fills the squat slot; a hip thrust the deadlift slot; a dip the press slot; a pull-up the row slot. Somebody with rings and a floor can fill four of the five without a barbell.
- 0.84one
- 0.88two
- 0.92three
- 0.96four
- 1.00five
C = 0.8 + 0.2 × n ÷ 5, for one to five movements logged. Even steps, a fifth of the score at most. × A, age
Term 07. Age, once.
Nothing at or below twenty-eight. Seven tenths of a percent a year above it, capped at one and a half times.
Peak strength is a young adult’s. Past twenty-eight the formula applies one multiplier — 1 + 0.007 × the years past the peak — so a forty-five-year-old’s lifts are read about twelve percent up and a sixty-year-old’s about twenty-two, with a hard ceiling of 1.5 that no age reaches in practice. One bounded factor, applied once to the whole score, and nothing else in the formula knows how old you are.
A = 1 + 0.007 × the years past 28, and never more than 1.5. Age Factor 28 ×1.00 35 ×1.05 45 ×1.12 60 ×1.22 The ceiling ×1.50 × the Liftor Number
Term 08. The Liftor Number.
The term that turns the mean into the score on the meter. It sets the scale. It is not one number, and it is not published.
Everything above it is a ratio: 1.0 is advanced at every movement you do, on your bodyweight, at your age, this week. The Liftor Number is what the ratio is multiplied by to become the number on the meter — a calibration, per lift and per lifter, that is the app’s and is sealed. It has its own section below, including what happens when you try to solve for it.
Not one number. Not printed anywhere.
The one term the app keeps
The Liftor Number.
Everything before it is a ratio. Run the seven published terms on your lifts and you get a number where 1.0 is advanced at every movement you do, on your bodyweight, at your age, this week. The Liftor Number is what that ratio is multiplied by to become the score on the meter. It sets the scale — what a rung is worth, how far apart the bands sit, what the next ten percent costs in kilograms — and it is Liftor’s.
It is not one number. It is a calibration: set by Liftor, per lift and per lifter, against Liftor’s own model of how people lift, and revised as that model is. The seven published terms are the shape of the formula. This is the fit, and the fit is not published — not in the app’s screens, not on this page, not in this site’s source, not in anything the app writes to your phone.
So take your score, put your lifts, your bodyweight and your age through the seven terms, and divide. You will get a number. It is the Liftor Number for you, on those lifts, on that day — and it is not the Liftor Number. Your training partner solves the same equation and gets a different one. You get a different one next month. One reading of a term that moves says nothing about how the term is set, and the score you divided had been rounded, ratcheted and read off a smoothed maximum before you ever saw it. Solve it a hundred times and you have a hundred readings. You do not have the formula.
The arithmetic is public because the fair part should be checkable, term by term, against the file it lives in. The calibration is private because it is the part that is Liftor’s, and because a scale is a promise: it is kept in one place.
After the arithmetic
What happens to the number once it is made.
- 01
It is rounded, then held.
The score is rounded to a whole number, and the meter shows the highest honest read it has ever made. It never falls on screen. When the live read slips more than three percent under the number you can see — a lift going stale — the app says so and asks you to hold the line, rather than printing a smaller number.
- 02
It waits for five workouts.
Below five completed workouts the score is provisional and the meter shows the calibration instead: five segments, one lit per workout. A score from one good set is an anecdote. A score from five sessions is a measurement, and that is the first one the app will put its name to.
Workout 3 of 5 · provisional - 03
It gets a next rung.
The target is about ten percent above wherever you are — never under five, never over twenty, rounded to a whole number, always above the score. The bands are names for stretches of the ladder: starting out, novice, intermediate, advanced, elite. Elite is the last band the app names. The rungs keep going, because the score is proportional to the load and the load has no top.
For the record
Ten things it refuses to do.
A fair number is mostly a list of things it will not count. This is the list.
- 01
Favour the light.
Strength grows with muscle cross-section, and cross-section grows more slowly than mass. A plain ratio punishes a heavy lifter twice; the two-thirds power does not.
- 02
Let the deadlift drown the press.
Each lift is divided by its own advanced standard before anything is averaged. A reading of 1.0 means the same thing on every movement.
- 03
Reward one lift logged forty times.
The movements are averaged, not summed, and only the strongest read per slot is used. Breadth is paid through coverage, from 0.8 to 1.0, and no further.
- 04
Penalise an unknown.
Where sex is not given, the standard is the average of the two tables, never the higher bar. An unknown never deflates a score.
- 05
Count a warm-up.
Only completed working sets are read. Warm-up sets and drop sets are not sets the formula can see.
- 06
Score a fly as a bench.
An isolation movement is never held to a compound standard, and a leg press or a rowing machine is never scored at all. Their loads are not on the scale of the lift they resemble.
- 07
Show a drop.
The number on the meter never falls. A stale lift decays underneath it, and the app asks you to hold the line instead of lowering the number.
- 08
Mistake a lighter you for a stronger you.
Bodyweight carries a negative exponent, so at a constant bar the score rises as you get lighter. Every move is split exactly into its load half and its bodyweight half, and a rise the bodyweight half made is not called strength.
- 09
Speak before five workouts.
Until five workouts are logged the score is provisional and the meter shows the calibration. One good set is an anecdote.
- 10
End.
The next rung is always about ten percent up. Elite is the last band the app names, and the rungs keep going past it. The scale has no top.
Try it
One set, and your bodyweight.
The free tool runs every published term on one set, in your browser, and prints a bracket. The exact number — from every set you log, with the last term in place — is the app’s to give.
Sources
- Jaric S. Muscle strength testing: use of normalisation for body size. Sports Medicine, 2002; 32(10): 615–631
- Epley B. Poundage chart. Boyd Epley Workout. Lincoln, Nebraska: Body Enterprises, 1985
- Liftor’s Strength Score, v2: the allometric term, the standards table, recency, coverage, the age factor, the five-workout gate, the next rung and the ratchet (utils/strengthScore.ts in the app’s source); the one-rep max smoothing and the working-set rule (utils/strengthAnchorMath.ts); the bodyweight shares (utils/bodyweightLoad.ts); the Epley estimate (utils/progressiveOverload.ts). The Liftor Number is not in any file this site reads.
