# Hiking Time Calculator

> Estimates the time for a hike from distance, ascent and descent with Naismith's rule (1 h per 5 km plus 1 h per 600 m of ascent), Naismith with Langmuir's descent corrections, or Tobler's hiking function (speed = 6·e^(−3.5·|slope + 0.05|) km/h), with a pace factor for slower parties and optional breaks; all three estimates are reported.

- Calculator id: `hiking-time` · Category: Sports & Fitness (`fitness`) · Tool name: `estimate_hiking_time`
- Canonical page: https://tttkmbb.com/fitness/hiking-time · This document: https://tttkmbb.com/fitness/hiking-time.md · JSON definition: https://tttkmbb.com/fitness/hiking-time.json

## Purpose

Estimates the time for a hike from distance, ascent and descent with Naismith's rule (1 h per 5 km plus 1 h per 600 m of ascent), Naismith with Langmuir's descent corrections, or Tobler's hiking function (speed = 6·e^(−3.5·|slope + 0.05|) km/h), with a pace factor for slower parties and optional breaks; all three estimates are reported.

**Use when:** You need a planning time for a walk or mountain hike from map distance and elevation gain/loss, or want to compare the Naismith and Tobler estimates.

**Do not use when:** You need running pace or race predictions (use running-pace or race-time-predictor), the route involves scrambling, snow, heavy loads or trackless terrain (the rules assume walkable paths), or you have a full elevation profile (segment-wise Tobler is more accurate than the whole-route net gradient used here).

## Input

| Parameter | Type | Unit | Required | Description |
| --- | --- | --- | --- | --- |
| `distance_km` | number | km | required | Horizontal (map) distance of the route in kilometres. (> 0, max 500) |
| `ascent_m` | number | m | optional, default 0 | Cumulative elevation gain in metres. (min 0, max 20000) |
| `descent_m` | number | m | optional, default 0 | Cumulative elevation loss in metres (used by the Langmuir corrections and by Tobler's net slope). (min 0, max 20000) |
| `method` | enum: naismith \| naismith_langmuir \| tobler |  | optional, default "naismith" | Rule used for the primary time; the other estimates are still reported. |
| `descent_steep` | boolean |  | optional, default false | Langmuir only: true when the descent is on slopes steeper than 12° (adds 10 min per 300 m of descent); false treats it as a gentle 5–12° descent (subtracts 10 min per 300 m). |
| `pace_factor` | number |  | optional, default 1 | Multiplier on the moving time: 1.0 = fit walker (Naismith's 5 km/h), 1.25 = slower or laden group (Langmuir's 4 km/h), 1.5 = family with children. (min 0.5, max 3) |
| `break_minutes_per_hour` | number | min/h | optional, default 0 | Rest time added per hour of moving time. (min 0, max 30) |

## Output

| Field | Type | Unit | Description |
| --- | --- | --- | --- |
| `time_hours` | number | h | Moving time by the chosen method plus breaks. |
| `time_text` | string |  | Total time as hours and minutes, e.g. '2 h 50 min'. |
| `moving_time_hours` | number | h | Time by the chosen method with pace_factor applied, without breaks. |
| `average_speed_km_h` | number | km/h | distance_km / time_hours (breaks included). |
| `ascent_time_minutes` | number | min | Naismith's ascent allowance: 1 minute per 10 m of ascent, × pace_factor. |
| `naismith_time_hours` | number | h | Naismith's rule moving time × pace_factor, always reported. |
| `naismith_langmuir_time_hours` | number | h | Naismith's rule with Langmuir's descent correction, × pace_factor, always reported. |
| `tobler_time_hours` | number | h | distance_km / Tobler speed at the route's net slope (ascent − descent) / distance, × pace_factor, always reported. |
| `tobler_speed_km_h` | number | km/h | 6·e^(−3.5·\|slope + 0.05\|) at the net slope; 5.04 km/h on the flat, 6 km/h maximum at a −5 % descent. |

## Formula

`Naismith: t = distance_km / 5 + ascent_m / 600 (hours). Langmuir: t = Naismith − descent_m / 300 × 10 min (gentle 5–12° descent) or + descent_m / 300 × 10 min (descent steeper than 12°). Tobler: v = 6 · e^(−3.5 · |(ascent_m − descent_m) / (1000 · distance_km) + 0.05|) km/h, t = distance_km / v. moving_time_hours = t × pace_factor; time_hours = moving_time_hours × (1 + break_minutes_per_hour / 60)`

Naismith's rule (1892) and Langmuir's corrections (1984) are planning heuristics for fit walkers on paths; Tobler's function (1993) is an exponential fit to Imhof's walking data with a maximum of 6 km/h on a slight −5 % downhill. Applying Tobler to a whole route uses the net gradient, so a route with equal ascent and descent is treated as flat and its time is underestimated; descents on slopes below 5° get no Langmuir correction and should be left out of descent_m.

## Data Sources

- Wikipedia – Naismith's rule (with Langmuir's corrections) — https://en.wikipedia.org/wiki/Naismith%27s_rule (reference, retrieved 2026-09-24)
- Wikipedia – Tobler's hiking function — https://en.wikipedia.org/wiki/Tobler%27s_hiking_function (reference, retrieved 2026-09-24)

Data freshness: `static`. Deterministic formula with fixed constants; results never go stale. Inputs supplied by the caller determine the output.

## API

- `GET https://tttkmbb.com/api/v1/calculate/hiking-time?distance_km=…`
- `POST https://tttkmbb.com/api/v1/calculate/hiking-time` with JSON body `{"inputs": {…}}`
- Response: unified envelope (`success`, `request`, `result.values`, `result.units`, `sources`, `freshness`, `timestamp`, `next_actions`, `links`); see https://tttkmbb.com/docs/response-format.md
- Schema: https://tttkmbb.com/api/v1/calculators/hiking-time · OpenAPI operationId `estimate_hiking_time` in https://tttkmbb.com/openapi.json
- Authentication: none. Rate limit: fair use, see https://tttkmbb.com/docs/rate-limits.md.

## MCP

- Server: `https://tttkmbb.com/mcp` (Streamable HTTP, JSON-RPC 2.0, no auth)
- Tool:  `run_calculator` with `{"calculator_id": "hiking-time", "inputs": {…}}`

## Example

- 10 km with 500 m ascent, Naismith: inputs `{"distance_km":10,"ascent_m":500,"method":"naismith"}` → `{"time_hours":2.83,"time_text":"2 h 50 min","moving_time_hours":2.83,"average_speed_km_h":3.53,"ascent_time_minutes":50,"naismith_time_hours":2.83,"tobler_time_hours":2.37,"tobler_speed_km_h":4.23}`
- 12 km, 800 m up and down, Langmuir, 10 min breaks per hour: inputs `{"distance_km":12,"ascent_m":800,"descent_m":800,"method":"naismith_langmuir","break_minutes_per_hour":10}` → `{"moving_time_hours":3.29,"time_hours":3.84,"time_text":"3 h 50 min","naismith_time_hours":3.73,"naismith_langmuir_time_hours":3.29,"tobler_time_hours":2.38,"tobler_speed_km_h":5.04}`

```
GET https://tttkmbb.com/api/v1/calculate/hiking-time?distance_km=10&ascent_m=500&method=naismith
```

## Limitations

You need running pace or race predictions (use running-pace or race-time-predictor), the route involves scrambling, snow, heavy loads or trackless terrain (the rules assume walkable paths), or you have a full elevation profile (segment-wise Tobler is more accurate than the whole-route net gradient used here). Naismith's rule (1892) and Langmuir's corrections (1984) are planning heuristics for fit walkers on paths; Tobler's function (1993) is an exponential fit to Imhof's walking data with a maximum of 6 km/h on a slight −5 % downhill. Applying Tobler to a whole route uses the net gradient, so a route with equal ascent and descent is treated as flat and its time is underestimated; descents on slopes below 5° get no Langmuir correction and should be left out of descent_m. All values are computed from the formula above; no measurement or live data is involved.

## FAQ

**Which method should I use?**

Naismith for a first estimate on trails; add Langmuir's corrections when the route has long descents; Tobler when the gradient is fairly uniform (here it sees only the net gradient of the whole route).

**Is distance_km the map distance or the GPS track length?**

The horizontal map distance, which is what all three rules expect; a 3D track length is slightly longer on steep ground and would over-estimate the time.

**How do I allow for a slower group?**

pace_factor scales the moving time: 1.25 corresponds to Langmuir's 4 km/h base speed for less fit or heavily laden parties; breaks are added separately with break_minutes_per_hour.

## Related

- [Calories Burned Calculator](https://tttkmbb.com/fitness/calories-burned.md) — Energy cost of the hike (MET 6.0 for cross-country hiking).
- [Steps to Distance Calculator](https://tttkmbb.com/fitness/steps-to-distance.md) — Convert a step count into hiking distance.
- [Running Pace Calculator](https://tttkmbb.com/fitness/running-pace.md) — Pace and splits for running the same distance.
