Cycling power-to-weight ratio calculator
Holding 250 watts at 70 kg gives a power-to-weight ratio of 3.57 W/kg, the number cyclists compare for climbing and time trials. Enter your power and body mass to get yours. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Power
- 250
- Mass
- 70
- Watts per kg
- 3.5714285714 W/kg
Power-to-weight ratio is the single most quoted figure when cyclists compare climbing ability, time-trial fitness, or structured training zones. Divide sustained power in watts by body mass in kilograms and you get watts per kilogram—a compact number coaches, coaches-in-training, and performance apps use to normalize effort across riders of different sizes. This cycling power-to-weight ratio calculator applies that exact definition offline and deterministically: send positive power and positive mass, receive a stable W/kg value with the formula and unit labels.
What watts per kilogram means for cycling performance
Watts per kilogram, often written W/kg, is the power-to-weight ratio used throughout endurance cycling. Because gravitational work on a climb scales with mass while the engine is your power output, two riders with the same absolute watts will separate on steep grades whenever their masses differ. Flat-road and time-trial contexts still cite W/kg when coaches want a size-normalized fitness marker that is easier to compare across a club roster than raw watts alone.
This calculator does not estimate power from heart rate, speed, or GPS, does not subtract bike mass unless you fold equipment into the mass you supply, and does not apply training-zone charts or gender-specific tables. Inputs must be finite and strictly greater than zero: a zero or negative power cannot represent useful pedaling output for this model, and a zero or negative mass cannot represent a rider. Always frame outputs as educational performance ratios, not clinical diagnoses or race handicaps.
Where a power-to-weight calculator earns its keep
Secondary-school and college exercise-science courses often introduce W/kg when teaching how mechanical power relates to body size on hills, so a single trusted oracle that returns the ratio beside the formula string speeds grading and demo setup. Product teams building educational cycling widgets need a documented power-over-mass step that clients can audit by hand rather than a black-box score that mixes aero models without disclosure. Coaching platforms preparing synthetic athlete datasets need deterministic W/kg labels from known power and mass without network calls or model drift.
Race-preview tools and club leaderboards sometimes display W/kg next to absolute power because riders immediately understand relative climbing strength without memorizing every absolute watt target. If you later need estimated speed from power and grade, calories from MET and duration, VO2 max estimates, or full aero power-balance models, treat those as separate search intents and landings rather than overloading this power-to-weight page. Always present results as educational estimates from the power divided by mass definition; training decisions require qualified coaches, local context, and protocols this tool does not collect.
What you can do with it
Classroom W/kg answer keys
Generate power-to-weight ratios so instructors and auto-graders share one transparent ground truth from power and mass.
FAQ
How is cycling power-to-weight ratio calculated?
Example: 250 W at 70 kg ≈ 3.571 W/kg.
What units does the calculator use?
Power must be in watts (W) and mass in kilograms (kg). The result is reported as watts per kilogram (W/kg).
What happens if power or mass is zero or negative?
Non-positive values are rejected rather than producing a meaningless ratio.
Does this include bike weight or estimate speed?
No. It only divides the power and mass you supply. Speed-from-power models and equipment mass are separate search intents.
What does it cost?
The browser tool is free and runs locally.
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/watts-per-kg \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"power":250,"mass":70}'const res = await fetch("https://api.kit.forhosting.com/health/watts-per-kg", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"power": 250,
"mass": 70
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/health/watts-per-kg",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"power": 250,
"mass": 70
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/health/watts-per-kg", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"power":250,"mass":70}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"power":250,"mass":70}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/health/watts-per-kg", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"power": 250,
"mass": 70
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "health.watts_per_kg",
"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
Zero, negative, or non-finite inputs fail with invalid_input instead of inventing a ratio.
What watts per kilogram means for cycling performance
Mechanically it is simply average or threshold power divided by the rider’s body mass: if you sustain two hundred fifty watts at seventy kilograms, your ratio is about three point five seven W/kg. Those cases fail with invalid_input rather than absolute-value workarounds that would hide data-entry mistakes. The computation is pure arithmetic with no network calls, no random seeds, no wall-clock timestamps, and no machine-learning drift, so identical inputs always yield identical JSON.
Input contract, response shape, and error behaviour
If your upstream form collects mass in pounds, convert to kilograms first and pass the positive kilogram value here. POST a JSON body with two required fields. The field power is cycling power output in watts and must be a finite number strictly greater than zero; aliases power_w, watts, P, and power_watts are accepted. The field mass is body mass in kilograms and must likewise be finite and strictly greater than zero; aliases mass_kg, weight, body_mass, kg, and weight_kg are accepted. Missing fields, non-numeric strings, NaN, Infinity, zero, and negative values fail with invalid_input and are not charged. On success the response returns the cleaned power and mass, watts_per_kg as power divided by mass, the formula string watts_per_kg equals power divided by mass, method watts_per_kg, and unit W/kg. Pricing for successful API calls is the published base of $0.002 per item; validation failures do not consume prepaid balance. If a caller supplies aliases such as body_mass instead of mass, the same validation and arithmetic path applies without changing the output shape. Keep requests small, pin the cleaned watts_per_kg in tests, and you get reproducible ratios for LMS plugins, coaching dashboards, and edge workers without standing up a sports-science stack of your own.
Where a power-to-weight calculator earns its keep
Because this capability is a pure parse engine, API pricing is the published base of $0.002 per successful item and failed validation does not consume balance.
Integration use cases
Coaching dashboard fixtures
Bulk-produce stable W/kg labels for athlete profiles and regression tests with hard invalid_input on non-positive inputs.
Educational cycling widget demos
Show watts per kilogram from power and body mass without mixing aero or grade models on the same landing.