Altitude sickness risk calculator
This altitude sickness risk calculator gives travelers a practical, educational estimate of acute mountain sickness risk before a trip.
Run — free
Enter the highest planned sleeping altitude, the altitude where the ascent begins, the number of ascent days, and whether you have experienced AMS before. The calculator reports the net gain, average daily ascent, a risk category, and whether a slower acclimatization schedule is advisable. It cannot predict exactly who will become ill, and it does not replace advice from a clinician familiar with high-altitude travel.
Use sleeping altitude to describe the itinerary
Altitude illness risk depends strongly on where you sleep, how quickly you reach that elevation, and your own previous response to altitude. Enter the highest place where you plan to sleep as the destination, rather than the highest pass, viewpoint, or summit visited briefly during the day. For the starting altitude, use the elevation where you normally sleep before the ascent or the last established sleeping stop on a staged itinerary. The ascent-days value is the time over which that sleeping-altitude gain occurs. For example, flying from sea level and sleeping at a mountain resort that evening is approximately a one-day ascent, even if the flight itself takes only a few hours. A trek with overnight stops should use the number of days from its initial sleeping elevation to the highest planned sleeping elevation. The calculator converts those entries into an average gain per day. That average cannot show every sharp jump in a complex itinerary, so assess individual overnight legs too. A single large increase may matter even when the trip-wide average appears comfortable.
Understand the estimate and its limits
The result combines destination altitude, average ascent rate, rapid arrival from below 2,500 meters, and a reported history of acute mountain sickness. Higher destinations and faster gains add concern, while a previous episode moves the estimate upward because past response is useful personal evidence. The categories are screening labels, not probabilities or diagnoses. People on the same itinerary can respond very differently, and excellent physical fitness does not protect someone from AMS. The algorithm deliberately avoids pretending that age, training, or athletic performance can make a rapid ascent safe. It also does not evaluate pregnancy, heart or lung disease, medications, sleep disorders, alcohol use, or a detailed history of severe altitude illness. Anyone with significant medical conditions, a previous severe reaction, or plans for remote high-altitude travel should review the itinerary with a qualified clinician. The displayed minimum ascent days is a simple planning reference based on limiting average sleeping-altitude gain to about 500 meters per day; it is not a guarantee and may need additional rest days.
Act on symptoms instead of relying on the score
Use the estimate while planning, then let symptoms govern decisions on the mountain. Typical acute mountain sickness involves a headache after gaining altitude together with symptoms such as nausea, dizziness, unusual fatigue, or disturbed sleep. Do not continue upward when these symptoms appear. Rest at the same elevation, tell companions, and be prepared to descend if symptoms do not improve or become worse. Confusion, inability to walk normally, severe weakness, or breathlessness at rest can signal life-threatening high-altitude cerebral or pulmonary edema and require immediate descent and urgent medical care. Do not wait for the calculator, a scheduled rest day, or morning to reconsider the plan. Gradual ascent reduces risk but never eliminates it, so preserve flexibility in bookings and turnaround decisions. Avoid treating this score as permission to push through illness. For organized trips, share sleeping elevations and contingency routes with the group. For independent travel, identify where descent, oxygen, communications, and medical help are available before leaving. Prevention planning works best when the itinerary includes time to respond rather than merely meeting a numerical target.
What you can do with it
Compare two mountain itineraries
Enter each route's sleeping altitude and ascent duration to see which schedule provides a more gradual approach.
Check a fly-in destination
Estimate concern when traveling quickly from a low home elevation to a high resort, city, or trailhead.
Plan acclimatization days
Use the calculated gain and planning reference to identify where extra nights or rest days may be sensible.
FAQ
Is this a medical diagnosis?
No. It is an educational planning estimate and cannot determine whether an individual will develop altitude illness.
Which altitude should I enter?
Use the highest altitude where you plan to sleep, not a summit or pass visited briefly during the day.
Does being very fit lower my risk?
No. Physical fitness does not reliably protect against acute mountain sickness, so it is not used to reduce the estimate.
What should I do if symptoms begin?
Stop ascending. Descend and seek urgent medical help for worsening symptoms, confusion, trouble walking, or breathlessness at rest.
Why does previous AMS matter?
A prior response at altitude is relevant personal evidence and can indicate greater concern on a similar rapid ascent.
What does the API cost?
The API costs $0.002 per request. The browser calculator is available without sending the calculation to the API.
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/altitude-sickness-risk \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"destination_altitude_m":3500}'const res = await fetch("https://api.kit.forhosting.com/travel/altitude-sickness-risk", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"destination_altitude_m": 3500
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/travel/altitude-sickness-risk",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"destination_altitude_m": 3500
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/travel/altitude-sickness-risk", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"destination_altitude_m":3500}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"destination_altitude_m":3500}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/travel/altitude-sickness-risk", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"destination_altitude_m": 3500
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "travel.altitude_sickness_risk",
"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. |