# FTP Power Zones Calculator

> Converts a cyclist's functional threshold power (FTP) into Andrew Coggan's seven power training levels (active recovery to neuromuscular power) as watt ranges, and reports power-to-weight in W/kg when body weight is given.

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

## Purpose

Converts a cyclist's functional threshold power (FTP) into Andrew Coggan's seven power training levels (active recovery to neuromuscular power) as watt ranges, and reports power-to-weight in W/kg when body weight is given.

**Use when:** You know an FTP from a 20-minute or ramp test and need watt targets for each training zone, or want the W/kg figure for comparison.

**Do not use when:** You train by heart rate rather than power (use heart-rate-zones), or you need running/rowing intensity zones (use vdot-training-paces or rowing-split).

## Input

| Parameter | Type | Unit | Required | Description |
| --- | --- | --- | --- | --- |
| `ftp_watts` | number | W | required | Functional threshold power: the highest power sustainable for about an hour (commonly 95 % of a 20-minute all-out test). (min 30, max 800) |
| `weight_kg` | number | kg | optional | Optional rider weight, used only to report W/kg. (> 0, max 300) |

## Output

| Field | Type | Unit | Description |
| --- | --- | --- | --- |
| `zones` | list |  | Seven rows: zone, name, percent_of_ftp, low_watts, high_watts (null for zone 7, which has no upper bound). |
| `threshold_zone_watts` | string |  | Watt range of the lactate-threshold zone (91–105 % of FTP) as text. |
| `ftp_w_per_kg` | number | W/kg | ftp_watts / weight_kg (only when weight_kg is given). |

## Formula

`low_watts = ftp_watts × lower_percent / 100; high_watts = ftp_watts × upper_percent / 100 with Coggan levels: 1 active recovery < 55 %, 2 endurance 56–75 %, 3 tempo 76–90 %, 4 lactate threshold 91–105 %, 5 VO2max 106–120 %, 6 anaerobic capacity 121–150 %, 7 neuromuscular power > 150 %; ftp_w_per_kg = ftp_watts / weight_kg`

Levels follow Coggan's power training levels (Allen & Coggan, Training and Racing with a Power Meter). Coggan's original table lists level 6 as > 121 % and level 7 as 'not applicable' (short maximal sprints); the 150 % split used here is the common convention in training software. Zone boundaries are guides, not physiological thresholds measured for the individual.

## Data Sources

- Coggan A – Power Training Levels (TrainingPeaks) — https://www.trainingpeaks.com/blog/power-training-levels/ (reference, retrieved 2026-09-24)
- Allen H, Coggan A, McGregor S (2019) Training and Racing with a Power Meter, 3rd ed., VeloPress — https://www.velopress.com/books/training-and-racing-with-a-power-meter/ (textbook, 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/ftp-power-zones?ftp_watts=…`
- `POST https://tttkmbb.com/api/v1/calculate/ftp-power-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/ftp-power-zones · OpenAPI operationId `calculate_ftp_power_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": "ftp-power-zones", "inputs": {…}}`

## Example

- FTP 250 W, 70 kg: inputs `{"ftp_watts":250,"weight_kg":70}` → `{"zones":[{"zone":1,"low_watts":0,"high_watts":138},{"zone":2,"low_watts":140,"high_watts":188},{"zone":3,"low_watts":190,"high_watts":225},{"zone":4,"low_watts":228,"high_watts":263},{"zone":5,"low_watts":265,"high_watts":300},{"zone":6,"low_watts":303,"high_watts":375},{"zone":7,"low_watts":375,"high_watts":null}],"threshold_zone_watts":"228–263 W","ftp_w_per_kg":3.57}`
- FTP 300 W: inputs `{"ftp_watts":300}` → `{"zones":[{"zone":1,"high_watts":165},{"zone":2,"low_watts":168,"high_watts":225},{"zone":3,"low_watts":228,"high_watts":270},{"zone":4,"low_watts":273,"high_watts":315},{"zone":5,"low_watts":318,"high_watts":360},{"zone":6,"low_watts":363,"high_watts":450},{"zone":7,"low_watts":450}],"threshold_zone_watts":"273–315 W"}`

```
GET https://tttkmbb.com/api/v1/calculate/ftp-power-zones?ftp_watts=250&weight_kg=70
```

## Limitations

You train by heart rate rather than power (use heart-rate-zones), or you need running/rowing intensity zones (use vdot-training-paces or rowing-split). Levels follow Coggan's power training levels (Allen & Coggan, Training and Racing with a Power Meter). Coggan's original table lists level 6 as > 121 % and level 7 as 'not applicable' (short maximal sprints); the 150 % split used here is the common convention in training software. Zone boundaries are guides, not physiological thresholds measured for the individual. All values are computed from the formula above; no measurement or live data is involved.

## FAQ

**How do I get my FTP?**

Most riders take 95 % of the average power of a 20-minute all-out effort after a thorough warm-up, or use a ramp test (about 75 % of the best 1-minute power). A 60-minute test measures it directly.

**Why are the zone boundaries not contiguous (55 % then 56 %)?**

They reproduce Coggan's published integer percentages; in practice a rider at 55.5 % of FTP is at the top of zone 1 / bottom of zone 2.

## Related

- [Heart Rate Zone Calculator](https://tttkmbb.com/health/heart-rate-zones.md) — Heart-rate based training zones for the same rider.
- [Bike Gear Ratio Calculator](https://tttkmbb.com/fitness/bike-gear-ratio.md) — Gearing and speed for a given cadence.
- [Calories Burned Calculator](https://tttkmbb.com/fitness/calories-burned.md) — Energy expenditure of the ride.
