# Heart Rate Zone Calculator

> Estimates maximum heart rate from age (Tanaka or Fox formula) and computes the five training zones, using the Karvonen heart-rate-reserve method when resting heart rate is supplied.

- Calculator id: `heart-rate-zones` · Category: Health (`health`) · Tool name: `calculate_heart_rate_zones`
- Canonical page: https://tttkmbb.com/health/heart-rate-zones · This document: https://tttkmbb.com/health/heart-rate-zones.md · JSON definition: https://tttkmbb.com/health/heart-rate-zones.json

## Purpose

Estimates maximum heart rate from age (Tanaka or Fox formula) and computes the five training zones, using the Karvonen heart-rate-reserve method when resting heart rate is supplied.

**Use when:** You need training heart-rate ranges (zones 1–5) for an adult from age, optionally refined by resting heart rate.

**Do not use when:** The person takes heart-rate-limiting medication (e.g. beta blockers) or has a measured maximum heart rate from a test (use that instead of an age formula).

## Input

| Parameter | Type | Unit | Required | Description |
| --- | --- | --- | --- | --- |
| `age_years` | number | years | required | Age in years. (min 5, max 120) |
| `resting_heart_rate` | number | bpm | optional | Optional resting heart rate; when given, zones use the Karvonen (heart-rate reserve) method. (min 25, max 150) |
| `max_hr_formula` | enum: tanaka \| fox |  | optional, default "tanaka" | Formula for maximum heart rate. Tanaka (2001) is more accurate across ages than the classic 220 − age. |

## Output

| Field | Type | Unit | Description |
| --- | --- | --- | --- |
| `max_heart_rate` | number | bpm | Estimated maximum heart rate. |
| `method` | string |  | 'karvonen' when resting HR provided, otherwise 'percent_of_max'. |
| `zones` | list |  | Five zones with intensity range, lower and upper bpm and purpose. |

## Formula

`max_hr = 208 − 0.7·age (Tanaka) or 220 − age (Fox). Percent-of-max: zone = max_hr × %. Karvonen: target = (max_hr − resting) × % + resting. Zones: 50–60, 60–70, 70–80, 80–90, 90–100%.`

## Data Sources

- Tanaka H, Monahan KD, Seals DR (2001) Age-predicted maximal heart rate revisited, J Am Coll Cardiol 37:153-156 — https://pubmed.ncbi.nlm.nih.gov/11153730/ (peer_reviewed, retrieved 2026-09-23)
- Karvonen MJ, Kentala E, Mustala O (1957) The effects of training on heart rate, Ann Med Exp Biol Fenn 35:307-315 — https://pubmed.ncbi.nlm.nih.gov/13470504/ (peer_reviewed, retrieved 2026-09-23)

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/heart-rate-zones?age_years=…`
- `POST https://tttkmbb.com/api/v1/calculate/heart-rate-zones` 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/heart-rate-zones · OpenAPI operationId `calculate_heart_rate_zones` 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": "heart-rate-zones", "inputs": {…}}`

## Example

- Age 30, Tanaka, no resting HR: inputs `{"age_years":30}` → `{"max_heart_rate":187,"method":"percent_of_max"}`
- Age 40, resting 60, Fox: inputs `{"age_years":40,"resting_heart_rate":60,"max_hr_formula":"fox"}` → `{"max_heart_rate":180,"method":"karvonen"}`

```
GET https://tttkmbb.com/api/v1/calculate/heart-rate-zones?age_years=30
```

## Limitations

The person takes heart-rate-limiting medication (e.g. beta blockers) or has a measured maximum heart rate from a test (use that instead of an age formula). All values are computed from the formula above; no measurement or live data is involved.

## FAQ

**Why use Karvonen?**

It scales zones by heart-rate reserve (max − resting), so fitter people with low resting rates get more realistic targets than a plain percentage of max.

**How accurate are age formulas?**

Individual maximum heart rate varies by about ±10–12 bpm around any age formula. A supervised maximal test gives the real value.

## Related

- [Running Pace Calculator](https://tttkmbb.com/fitness/running-pace.md) — Pair heart-rate zones with pace targets.
