Warm-Up Set Weight Calculator
A useful warm-up builds toward the working weight without turning preparation into the workout itself.
Run — free
This calculator converts a planned working weight into a clear sequence of lighter loads. Enter the weight you intend to use, keep the default progression or supply your own percentages, and choose the smallest increment your equipment allows. The result shows both the exact percentage target and the practical rounded load for every set, so you can prepare plates, dumbbells, or machine settings before training begins.
Start with the load that matters
The working weight is the load planned for the main sets of one exercise, not a one-repetition maximum and not the total weight lifted across a session. If the program says three sets of five at 100 kilograms, enter 100 as the working weight. The calculator applies each warm-up percentage to that number. Its default sequence is 40%, 55%, 70%, 80%, and 90%, which creates gradually smaller jumps as the working load approaches. Those defaults are a practical planning template rather than a medical or coaching prescription. Training history, exercise complexity, fatigue, injury status, temperature, and the demands of the first working set may all justify a different progression. Use the same unit throughout: an input of 100 kilograms with a 2.5 increment produces kilogram loads, while an input of 225 pounds with a 5 increment produces pound loads. The output intentionally does not attach repetitions, rest periods, or effort targets, because those choices belong to the training plan and cannot be inferred safely from weight alone.
Understand exact targets and usable loads
Each result contains an exact target weight and a rounded load weight. The exact target is simply the working weight multiplied by the percentage and divided by 100. Real equipment often cannot reproduce that value, so the calculator rounds it to the nearest multiple of the chosen increment. A target of 67.5 with a 5-unit increment becomes 70; a target of 66 becomes 65. When the target lies exactly halfway between two increments, the higher load is selected. This explicit rule makes the result deterministic and prevents two clients from producing different plans. Choose an increment that represents the smallest total change you can actually load, rather than the number printed on one plate. With a barbell, adding one 1.25-kilogram plate to each side changes the total load by 2.5 kilograms, so the increment is 2.5. For selectorized machines or fixed dumbbells, use the gap between neighboring settings or implements. Always check that the rounded load is physically available and appropriate before lifting.
Customize the progression without hiding assumptions
You may replace the default percentages with any strictly ascending list containing up to twenty values. Every percentage must be greater than zero and no greater than 100. Ascending order matters because the output is a progression toward the working set; repeated or falling percentages usually signal a data-entry mistake, so they are rejected instead of silently rearranged. A shorter sequence may suit a lighter or familiar movement, while a longer sequence can make sense before a heavy compound lift. For example, 30%, 50%, 65%, 75%, 85%, and 95% gives six increasingly specific exposures. The calculator reports percentages exactly as supplied and never invents repetitions or changes a percentage to compensate for rounding. Two adjacent targets can occasionally round to the same available load when the equipment increment is coarse. That is mathematically valid, but it may not be useful in practice; review the scheme and remove a redundant step or choose percentages farther apart. Stop if warming up causes pain, unusual dizziness, or symptoms that require qualified medical attention.
What you can do with it
Prepare barbell plates before a session
Turn a programmed working weight into loadable warm-up steps using the smallest total barbell increment available in the gym.
Plan fixed-dumbbell progressions
Round percentage targets to the spacing between fixed dumbbells and spot repeated practical loads before training starts.
Generate consistent coaching templates
Apply the same documented percentage sequence and rounding rule across athletes while retaining each athlete's individual working weight.
FAQ
What does the calculator cost through the API?
Each API request costs $0.002. The same deterministic calculation is available in the browser without an API request.
Which weight unit should I use?
Use any consistent unit. If working_weight and increment are in kilograms, all returned weights are kilograms; if both are in pounds, all returned weights are pounds.
Why is the practical load different from the exact target?
The load_weight is rounded to the nearest multiple of increment so it corresponds to equipment you can select or assemble. The target_weight preserves the unrounded percentage calculation.
Does the scheme prescribe repetitions?
No. It calculates loading only. Repetitions, rest, tempo, and the number of warm-up sets depend on the exercise, program, athlete, and current condition.
Can I enter my own percentages?
Yes. Supply one to twenty strictly ascending numeric percentages, each greater than zero and no greater than 100.
Why can two sets have the same load weight?
A coarse equipment increment can cause nearby exact targets to round to the same available load. Adjust the percentages or increment if that repetition is not useful.
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/warmup-set-weight \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"working_weight":100}'const res = await fetch("https://api.kit.forhosting.com/health/warmup-set-weight", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"working_weight": 100
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/health/warmup-set-weight",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"working_weight": 100
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/health/warmup-set-weight", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"working_weight":100}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"working_weight":100}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/health/warmup-set-weight", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"working_weight": 100
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "health.warmup_set_weight",
"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. |