Calculate your zones
Same math as the app. Add your resting heart rate for the Karvonen method, or leave it blank to use percent of max heart rate.
- Zone 1 Recovery —
- Zone 2 Aerobic —
- Zone 3 Steady —
- Zone 4 Hard —
- Zone 5 Peak —
A population estimate, not a lab test. If you have a measured or coach-prescribed maximum, enter it above — the app supports custom boundaries for the same reason.
The calculator is above. This page defines the method behind it.
The math comes straight from the iOS app, so the numbers here match what Zonas shows during a workout.
What The Calculator Returns
The calculator returns five heart rate zones:
| Zone | Label |
|---|---|
| Zone 1 | Recovery |
| Zone 2 | Aerobic |
| Zone 3 | Steady |
| Zone 4 | Hard |
| Zone 5 | Peak |
It can calculate those zones in two ways.
If you know your resting heart rate, it uses Karvonen / heart rate reserve. If you do not, it uses percent of max heart rate.
Inputs
The calculator needs:
- age, when maximum heart rate is not entered directly
- optional custom maximum heart rate
- optional resting heart rate
Age is used only to estimate maximum heart rate. Resting heart rate is used only when it is available. Zonas does not fill in a fake resting value.
Step 1: Maximum Heart Rate
If a custom maximum heart rate exists, use it.
Otherwise, estimate max heart rate with the same Tanaka fallback the app uses:
HRmax = 208 - trunc(0.7 x age)
For example:
| Age | Calculation | HRmax |
|---|---|---|
| 30 | 208 - trunc(21.0) | 187 |
| 40 | 208 - trunc(28.0) | 180 |
| 25 | 208 - trunc(17.5) | 191 |
The age 25 case is a useful guardrail. A rounded implementation would return 190. Zonas returns 191 because Swift Int(17.5) becomes 17.
Step 2: Choose The Zone Method
When resting heart rate is available:
reserve = HRmax - RHR
zone low = RHR + trunc(boundary x reserve)
When resting heart rate is not available:
zone low = trunc(boundary x HRmax)
The boundary list is the same in both cases:
50%, 60%, 70%, 80%, 90%, 100%
Step 3: Build Whole-BPM Ranges
Zonas uses closed ranges in BPM.
For Zones 1-4, the high end is one beat below the next boundary. Zone 5 ends at max heart rate.
high = next zone low - 1
That prevents overlap. If Zone 2 starts at 136, Zone 1 ends at 135.
Example: Age 30, Resting Heart Rate 60
Age 30 gives an estimated max heart rate of 187.
With resting heart rate 60, the reserve is 127.
| Zone | Label | BPM |
|---|---|---|
| Zone 1 | Recovery | 123-135 |
| Zone 2 | Aerobic | 136-147 |
| Zone 3 | Steady | 148-160 |
| Zone 4 | Hard | 161-173 |
| Zone 5 | Peak | 174-187 |
Without resting heart rate, the same age uses percent of max heart rate:
| Zone | Label | BPM |
|---|---|---|
| Zone 1 | Recovery | 93-111 |
| Zone 2 | Aerobic | 112-129 |
| Zone 3 | Steady | 130-148 |
| Zone 4 | Hard | 149-167 |
| Zone 5 | Peak | 168-187 |
Same person. Different model.
That is why the calculator should name the method it used instead of pretending all zone numbers are interchangeable.
What This Calculator Is Not
This is not a lab test. It does not know your lactate threshold, ventilatory thresholds, medication status, training history, sleep, illness, caffeine, or heat exposure.
It is a practical zone calculator that matches Zonas.
If you have a measured max heart rate or coach-prescribed zones, use those. The app supports custom boundaries for exactly that reason.
Weekly Cardio Minutes Are Separate
The weekly cardio minutes tool should not reuse this zone calculator.
That web tool asks for minutes:
moderate-equivalent minutes = moderate minutes + 2 x vigorous minutes
It does not classify workout samples the way the iOS app can. On the web, there are no live heart rate samples. So the simpler form is the honest one.
Common questions
Why does the calculator sometimes ask for resting heart rate?
Resting heart rate lets the calculator use heart rate reserve. If you do not know it, the calculator can still return zones using percent of maximum heart rate.
Does the calculator round heart rate zones?
No. It truncates intermediate BPM values to match the Swift app. Upper bounds stop one beat before the next zone starts, except the final zone.
Is Tanaka max heart rate exact?
No. It is a population estimate. Zonas uses it as a fallback when the user has not entered a measured or coach-prescribed maximum heart rate.
Is this the same as the weekly cardio minutes calculator?
No. This calculator returns workout zones. The weekly cardio tool is simpler: moderate minutes plus two times vigorous minutes.
Sources
- Age-predicted maximal heart rate revisited
Tanaka max heart rate estimate: 208 - 0.7 x age.
- View Heart Rate Zones on Apple Watch
Consumer wearable zone UX commonly presents five zones and personalized automatic boundaries.
- Physical Activity Guidelines for Americans, 2nd edition
Vigorous activity can be treated as roughly double moderate activity for weekly aerobic targets.