Required Rate of Climb Calculator
The required rate of climb calculator converts a climb requirement into the vertical speed an aircraft must maintain over the ground.
Run — free
Enter ground speed with a published climb gradient, or describe an altitude gain and the horizontal distance available. The result includes feet per minute, metres per second, gradient, feet per nautical mile, and climb angle. It is a planning aid for checking obstacle-clearance and altitude targets, not a substitute for approved aircraft performance data, operating procedures, or pilot judgment.
Choose the input method that matches your source
Use the gradient method when a departure procedure, obstacle analysis, or planning document already states a required climb gradient as a percentage. A value of five percent means gaining five units vertically for every one hundred units traveled horizontally. Enter the aircraft's expected ground speed, not indicated or true airspeed, because the required vertical speed depends on how quickly the aircraft moves across the ground. If no gradient is published, use the altitude-and-distance method. Enter the height that must be gained and the horizontal distance available to gain it; the calculator derives the equivalent gradient before calculating vertical speed. Keep the scenario internally consistent: measure altitude gain from the same starting reference used for the target, and measure distance along the intended ground track. When both a gradient and altitude gain are supplied, the explicit gradient takes precedence. This makes repeat calculations predictable and prevents an unused distance estimate from silently changing a published requirement.
Understand the calculation and returned values
The calculator first converts ground speed to metres per second. For the gradient method, vertical speed equals horizontal ground speed multiplied by the climb gradient expressed as a decimal. For the altitude-and-distance method, the gradient is altitude gain divided by horizontal distance, with both converted to compatible units. The resulting vertical speed is returned in metres per second and feet per minute. Additional outputs make cross-checking easier: feet per nautical mile expresses the same gradient in a form commonly used in aviation planning, while climb angle is the arctangent of the gradient. A gradient and a climb angle are related but are not numerically interchangeable, especially as the slope becomes steeper. Results are rounded to six decimal places for stable automation. Because wind changes ground speed, the same geometric gradient can demand different feet-per-minute values on different days even though the required height gained per unit of ground distance remains unchanged.
Apply the result with appropriate safety margins
Treat the computed rate as the mathematical minimum for the inputs, not as proof that an aircraft can achieve it. Actual climb capability varies with aircraft mass, density altitude, temperature, engine condition, configuration, wind, pilot technique, and manufacturer limitations. Compare the result with the current approved flight manual or performance data for the exact operating conditions, and follow any regulatory or operator-required method for obstacle clearance. Forecast ground speed conservatively: a stronger tailwind increases the vertical speed needed to preserve a given climb gradient, while a headwind reduces the required feet per minute for that same gradient. Operational procedures may require a buffer above the published minimum, and turns or changing terrain can make a simple straight-line distance assumption unsuitable. If the available performance is close to the result, recalculate with conservative conditions and seek qualified operational guidance. This calculator supports planning and transparent unit conversion; it does not authorize a departure, guarantee terrain clearance, or replace an official procedure.
What you can do with it
Convert a published climb gradient
Turn a percentage requirement and forecast ground speed into the feet-per-minute target needed for departure planning.
Check an altitude target by distance
Calculate the steady climb rate needed to gain a specified altitude before reaching a waypoint or obstacle.
Compare wind scenarios
Recalculate the same geometric gradient with different expected ground speeds to see how the vertical-speed requirement changes.
FAQ
What does the calculator cost?
It runs free in the browser. An API request costs $0.002.
Should I enter ground speed or airspeed?
Enter ground speed. Climb gradient describes height gained over horizontal ground distance, so wind-adjusted movement over the ground determines the required vertical speed.
How is feet per minute calculated from a percentage gradient?
Ground speed is converted to a horizontal speed in compatible units, then multiplied by the gradient divided by one hundred. The resulting vertical speed is converted to feet per minute.
Can I calculate from altitude gain and distance instead?
Yes. Omit climb_gradient_percent and provide positive altitude_gain and distance values with their units. The calculator derives the gradient and then the required climb rate.
Is climb angle the same number as climb gradient?
No. Gradient is a rise-to-run ratio expressed as a percentage; angle is the arctangent of that ratio and is expressed in degrees.
Does the result guarantee obstacle clearance?
No. It is a mathematical planning result only. Use approved procedures and aircraft performance data, account for actual conditions, and apply all required safety margins.
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/travel/required-climb-rate \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"ground_speed":120,"climb_gradient_percent":3.3}'const res = await fetch("https://api.kit.forhosting.com/travel/required-climb-rate", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"ground_speed": 120,
"climb_gradient_percent": 3.3
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/travel/required-climb-rate",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"ground_speed": 120,
"climb_gradient_percent": 3.3
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/travel/required-climb-rate", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"ground_speed":120,"climb_gradient_percent":3.3}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"ground_speed":120,"climb_gradient_percent":3.3}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/travel/required-climb-rate", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"ground_speed": 120,
"climb_gradient_percent": 3.3
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "travel.required_climb_rate",
"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. |