Why greedy works for standard plate sets
Greedy plate loading — “load the largest plate that fits, then repeat with what's left” — is the obvious algorithm and for the IPF kg set and the US lb set, it's also the optimal one. That's not always true: there exist coin denominations where greedy makes things worse than a smarter algorithm could (the classic Frobenius pathology — say, coins {1, 3, 4} loading 6 greedily as 4+1+1 when 3+3 is fewer coins). But for the actual plate inventories in IPF and US gyms, each plate is ≤ 2× the next smaller plate, which mathematically guarantees greedy is optimal.
Translation: you don't need to think about whether two 25 kg plates plus a 5 kg are better than one 20 kg + one 25 kg + 5 kg (they're equivalent — same total). The calculator picks the descending greedy loadout, which is what experienced lifters do intuitively too.
A worked example — 142.5 kg target on a 20 kg bar
Set target 142.5 kg, bar 20 kg, unit kg. The math:
- Per-side load: (142.5 − 20) / 2 = 61.25 kg.
- Greedy descending: 25 (61.25 − 25 = 36.25) → 25 (36.25 − 25 = 11.25) → 10 (11.25 − 10 = 1.25) → 1.25 (1.25 − 1.25 = 0).
- Per side: 25 × 2 + 10 + 1.25. Total per side: 61.25 kg.
- Achieved: 20 + 2 × 61.25 = 142.5 kg. Hit it exactly.
Now bump the target to 143 kg. Per-side load is 61.5 kg, but the smallest plate is 1.25 kg, so the inventory can't hit 0.25 kg residual. Closest loadout: 25+25+10+1.25 = 61.25 (short 0.25), or 25+25+10+1.25+0.25 (needs a micro plate). The calculator surfaces the “short by 0.5 kg” message so you know to either round to 142.5 or grab micro plates.
Frequently asked
Why does the calculator default the bar to 20 kg or 45 lb?
Those are the two universal bar standards. 20 kg is the IPF/USAW Olympic bar — what you'll find in any competition or serious gym. 45 lb is the US commercial standard, what most American gyms stock. They are NOT the same bar: 45 lb ≈ 20.41 kg, so they're close but not identical. The calculator labels each by its own scale so the math doesn't silently treat them as equivalent. If you train on a 15 kg women's competition bar or a 10 kg technique bar, override the bar weight in the adjust zone.
What plate set does this assume?
IPF/USAW competition KG: 25 / 20 / 15 / 10 / 5 / 2.5 / 1.25 kg. US commercial-gym LB: 45 / 35 / 25 / 10 / 5 / 2.5 lb. Both are standard inventories you'd find in any reasonably-stocked gym. The greedy descending algorithm (load the largest plate that fits, repeat) is optimal for these specific sets — there's no Frobenius coin-change pathology where a smarter algorithm could fit more plates than greedy does.
Why is my target sometimes 'short by X' even when it looks even?
Because the plate inventory has a smallest plate (1.25 kg or 2.5 lb), so any per-side residual smaller than that can't be loaded. A 102.5 kg target on a 20 kg bar leaves 41.25 kg per side, which the standard set can hit (25+10+5+1.25). A 101 kg target leaves 40.5 kg per side, which the standard set CAN'T hit — closest is 40 kg (25+10+5) leaving 0.5 kg short, or 41.25 kg (over by 0.75). The 'short by' message tells you what micro plate (0.5 kg, 0.25 kg) you'd need to land exactly on the target.
Can I add micro plates or change the plate inventory?
Not in this version. The default IPF/USAW kg set and US commercial lb set are baked in for v1 — they cover the loadouts most lifters need. If you train powerlifting at a meet that uses 0.5 kg micro plates, the engine in `lib/strength/units.ts` accepts a custom plate array; we just don't surface that as a UI option yet. Reach out if you'd find that useful and we'll prioritize.
Is this calculator for one side of the bar or both?
The headline answer is per-side — what you load on ONE end of the bar. The user mirrors the same plates on the other side. The 'achieved' total includes both sides plus the bar (bar + 2 × per-side). This matches how lifters actually load: you grab the same plates twice, one for each sleeve.
Why kg as the default unit?
IPF and most international meets are kg; barbell loading conventions across the strength world default to kg even in pound-using countries. If your gym scales and bar are labeled in lb, switch the unit toggle and the bar will snap to 45 lb (assuming you haven't overridden it) and the plate inventory will switch to the US commercial set.
Related
- Percentage of 1RM (load table) →
- One rep max calculator →
- Incline bench 1RM calculator →
- Dumbbell bench 1RM calculator →
- Methodology + sources →
- About StrengthMath →
By Jimmy L Wu. kg ↔ lb conversion uses 1 kg = 2.2046226218 lb (NIST SP 811, Appendix B). Standard plate sets are conventional gym inventories — IPF/USAW competition kg and US commercial-gym lb. Bar weights default to 20 kg (Olympic / IPF) and 45 lb (US commercial), which are NOT the same bar (45 lb ≈ 20.41 kg). Engine logic in lib/strength/units.ts.