Science

Max Heart Rate

Updated June 1, 2026

Maximum heart rate is the ceiling Zonas uses to turn intensity percentages into BPM ranges. If you enter your own max heart rate, Zonas uses it. Otherwise it estimates from age with Tanaka: 208 minus trunc(0.7 x age). That estimate is useful, not exact.

Max heart rate is the upper anchor for Zonas zones.

It is not a diagnosis. It is not a promise. It is the number the app uses to turn a percentage into a heart rate range.

The Source Priority

Zonas keeps the order simple:

PrioritySourceWhy
1Custom max heart rateYou know your own tested number.
2Date-of-birth estimateThe app can estimate from age.
3Fallback defaultUsed only when date of birth is unavailable.

In Auto mode, the app reads date of birth from Apple Health when permission is available. If it can calculate age, it estimates maximum heart rate with Tanaka.

In Custom mode, your value wins.

The Formula

The current Zonas formula is:

HRmax = 208 - trunc(0.7 x age)

The trunc part is not decoration. The iOS app uses Swift Int() conversion, which truncates toward zero.

Examples:

AgeZonas HRmax
25191
30187
40180

The age 25 case catches bad implementations. If you round 17.5 to 18, you get 190. Zonas gets 191.

Why Tanaka

Age-based max heart rate is always an estimate. The point is not to pretend otherwise.

Zonas uses Tanaka because it is a more defensible default than the older 220-minus-age rule. It gives the app a low-friction starting point when the user has not measured max heart rate.

That is all it should do.

When Custom Is Better

Use Custom if you have a better number:

  • a lab-tested maximum heart rate
  • a coach-prescribed max heart rate
  • a field-test value you trust
  • a conservative value recommended by a clinician

The app does not try to detect your true maximum from one workout spike. A single high reading can be real, but it can also be noise, strap movement, or a recording artifact.

How HRmax Changes Zones

If you use percent-HRmax zones, a higher max heart rate raises every zone boundary.

If you use Karvonen zones, max heart rate still matters, but it works together with resting heart rate:

heart rate reserve = HRmax - resting heart rate
target = resting heart rate + intensity x reserve

So max heart rate is one input. It is not the whole model.

The Practical Rule

If you do not know your true max, Auto is fine.

If you do know it, enter it.

The app is built to handle both without making the setup heavier than it needs to be.

Common questions

Does Zonas use 220 minus age?

No. The current app uses the Tanaka estimate: 208 minus trunc(0.7 times age). The truncation detail matches Swift Int math in the app.

Should I enter a custom max heart rate?

Yes, if you have a measured value from a lab test, a well-run field test, or a coach-prescribed number. A measured value should beat an age estimate.

Why does age 25 return 191 in Zonas?

Because the app truncates 0.7 times age before subtracting. For age 25, 0.7 x 25 is 17.5, Swift Int truncates that to 17, and 208 minus 17 is 191.

Sources

  1. Age-predicted maximal heart rate revisited

    PubMed / National Library of MedicineAccessed Jun 1, 2026

    Tanaka et al. describe the 208 - 0.7 x age regression for estimating maximal heart rate in healthy adults.

  2. Target Heart Rates Chart

    American Heart AssociationAccessed Jun 1, 2026

    Public-facing target heart rate guidance commonly starts from an age-predicted maximum heart rate.

  3. View Heart Rate Zones on Apple Watch

    Apple SupportAccessed Jun 1, 2026

    Apple Watch supports heart rate zones based on personal health data and allows manual editing of zones.