Climbing power calculator
A 70 kg hiker who gains 100 m in 600 s does 68,646.55 J of work against gravity. Enter body mass, vertical gain and time, and the tool turns that work into average watts and your mean ascent rate. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Body weight
- 70
- Vertical gain
- 100
- Time
- 600
- G
- 9.80665
- Work joules
- 68,646.55
- Power watts
- 114.4109166667
- Vertical speed
- 0.1666666667
Climbing power answers a practical question hikers, mountaineers, coaches, and physics students ask after every ascent: how many watts did the body deliver against gravity while gaining elevation. Average mechanical climbing power is gravitational work divided by climb time—mass times standard gravity times vertical gain, all over duration.
What climbing power means and which three quantities you need to send
In classical mechanics, the gravitational potential energy gained when a mass m rises through a vertical height h is m times g times h, where g is standard gravity. Average mechanical climbing power over an interval is that work divided by the time taken: P equals m g h over t. When mass is in kilograms, height in metres, and time in seconds, work is in joules and power is in watts—the SI unit used on lab reports, fitness dashboards, and textbook answers.
Search intent clusters around phrases such as climbing power calculator, hike watts from elevation gain, vertical power from body weight and time, ascent mechanical power, and P equals m g h over t. People want a numeric answer they can check against a GPS track, a treadmill climb protocol, or a homework worksheet—not only a reminder that potential energy exists. Keep units coherent: kilograms with metres and seconds yield true SI watts and metres per second of mean ascent rate.
What you can do with it
Hike and summit training logs
Turn GPS vertical gain, body mass, and moving time into average mechanical climbing watts for post-hike analysis and session comparison.
Homework and lab gravitational-power drills
Students and graders confirm P=m·g·h/t for given mass, height, and duration, with clear rejection when time is zero or a field is missing.
FAQ
Which formula does the climbing power calculator use?
Average mechanical climbing power: P = m·g·h/t. Work is body mass times standard gravity 9.80665 m/s² times vertical gain; power is that work divided by time.
What happens if time is zero?
Zero time is not allowed because power would require division by zero; those calls are not charged.
Is the climbing power calculator free?
The browser tool runs free on your device.
Does this include metabolic cost or pack weight efficiency?
No. The result is pure mechanical power against gravity (m·g·h/t).
Can I use it for a descent?
No. Vertical gain must be zero or positive, because the tool measures the power spent lifting your body against gravity. A pure descent falls outside this ascent model, so enter only the net height you gained.
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/mech/climbing-power \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"body_weight":70,"vertical_gain":100,"time":600}'const res = await fetch("https://api.kit.forhosting.com/mech/climbing-power", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"body_weight": 70,
"vertical_gain": 100,
"time": 600
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/mech/climbing-power",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"body_weight": 70,
"vertical_gain": 100,
"time": 600
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/mech/climbing-power", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"body_weight":70,"vertical_gain":100,"time":600}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"body_weight":70,"vertical_gain":100,"time":600}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/mech/climbing-power", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"body_weight": 70,
"vertical_gain": 100,
"time": 600
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "mech.climbing_power",
"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
This calculator takes body weight in kilograms, net vertical gain in metres, and a strictly positive time in seconds, multiplies mass by 9.80665 m/s² and by height to form work in joules, divides by time to form power in watts, and returns structured JSON with work_joules, power_watts, vertical_speed, the gravity constant used, formula, and method. Zero time, negative time, non-positive mass, negative gain, missing fields, and non-finite values fail with invalid_input before any result is returned.
What climbing power means and which three quantities you need to send
Delivering body_weight, vertical_gain, time, g, work_joules, power_watts, vertical_speed, formula, and method as JSON makes the result easy to paste into training notes, diff in automated tests, or reuse across languages without reimplementing the arithmetic. This model reports pure mechanical power against gravity only; it does not add horizontal walking cost, pack inefficiency, air drag, or metabolic conversion factors.
How this calculator validates input and applies P = m · g · h / t
Numeric strings that parse to finite numbers are accepted so forms and CSV-style pipelines can pass values without an extra cast. Body weight must be strictly positive because zero or negative mass has no physical meaning for gravitational work. Vertical gain must be non-negative; pure descent is outside this ascent-power model. Time must be strictly positive; zero duration is rejected with a clear message because power is undefined when you divide by zero in this average-power model, and negative time is likewise refused. There is no variable grade profile, no efficiency correction, and no unit auto-conversion; this is ideal average mechanical climbing power from the three known quantities. Send a JSON body with body_weight, vertical_gain, and time. All three fields are required and must be finite: missing any field, empty strings, non-numeric text, NaN, and Infinity all fail immediately with invalid_input before any result is returned, and failed validation is not charged. Aliases are recognized for convenience: body_weight also accepts mass, m, weight_kg, and body_mass; vertical_gain also accepts height, h, elevation_gain, and gain_m; time also accepts t, duration, and time_s. After validation, work_joules is body_weight times g times vertical_gain with g fixed at 9.80665, power_watts is work_joules divided by time, and vertical_speed is vertical_gain divided by time. Results are rounded to a stable decimal precision so the same input always yields the same JSON across JavaScript engines. The same pure function powers the free in-browser tool and the API path.
Practical use, limits, pricing, and delivery channels
Use the browser tool when you want an immediate watts check after a summit push, a stair-climb interval, a treadmill incline session with known elevation, or a homework problem that states mass, height, and time. There is no language model, no external physics service, and no randomness, so the capacity is safe to pin in continuous-integration checks and reproducible lesson materials. Each successful request is one billable item at $0.002; failed validation does not consume balance. Choose SI units consistently—if body weight is in kilograms, vertical gain in metres, and time in seconds, power_watts is true SI watts and vertical_speed is metres per second. Results are fully deterministic: the same mass, gain, and time always yield the same work_joules and the same power_watts. Wire the endpoint into hike analytics, contest answer checkers, coach dashboards, or preprocessing steps where you already prefer explicit domain errors—such as rejecting zero time—over opaque black-box widgets that cannot explain why a bad input was refused. Remember the model is mechanical only: metabolic cost and pack factors require separate adjustments outside this endpoint.
Integration use cases
Deterministic fixtures for climb analytics tests
Pipelines that seed unit tests or interactive ascent demos can call a pure climbing-power oracle instead of reimplementing m·g·h/t in every language.
Technical questions
How do I compute climbing power with this API?
Send a JSON body with body_weight (kg), vertical_gain (m), and time (s) to mech.climbing_power. The response returns work_joules, power_watts, vertical_speed, g, formula, and method.