Heart Rate Zone Calculator Math: Both Formulas With Worked Numbers

Enter age 30 with a resting heart rate of 60 into a zone calculator, then delete the

resting value and recalculate. On our tool, zone 2 moves from 138 to 151 bpm down to 114

to 133 bpm. Same person, same age, 24 beats of difference, and the tool switches formula

without telling you. This article runs both formulas exactly as the code runs them, then

covers where each one misleads.

The five zones the calculator computes

The tool estimates maximum heart rate as 220 minus your age, then cuts the range from 50

percent to 100 percent of that estimate into five bands:

ZoneLabelPercent of the estimate
1Warm Up50 to 60
2Fat Burn60 to 70
3Cardio70 to 80
4Peak80 to 90
5Maximum90 to 100

The zone names come from the interface labels in the component. Treat the Fat Burn label

with suspicion. It describes the fuel mix at low intensity, and total calories burned in

a session can still end higher from a harder zone.

Formula one: percent of maximum

With an empty resting field, the tool multiplies the maximum estimate directly. For age

30, the estimate is 220 minus 30, so 190 bpm. Each boundary is the estimate times the

zone percentage, rounded independently:

ZoneCalculationResult in bpm
1190 times 0.50 to 0.6095 to 114
2190 times 0.60 to 0.70114 to 133
3190 times 0.70 to 0.80133 to 152
4190 times 0.80 to 0.90152 to 171
5190 times 0.90 to 1.00171 to 190

This is the simple method. It needs one input, the age, and it ignores how fit you are.

Formula two: Karvonen

Enter a positive resting heart rate and the tool switches to the Karvonen form. Each

boundary becomes the heart rate reserve times the zone percentage, plus the resting

rate. The reserve is the maximum estimate minus the resting value.

For age 30 with a resting heart rate of 60, the reserve is 190 minus 60, so 130:

ZoneCalculationResult in bpm
1130 times 0.50 plus 60, to 0.60125 to 138
2130 times 0.60 plus 60, to 0.70138 to 151
3130 times 0.70 plus 60, to 0.80151 to 164
4130 times 0.80 plus 60, to 0.90164 to 177
5130 times 0.90 plus 60, to 1.00177 to 190

Compare the two tables. Zone 2 spans 114 to 133 by percent of maximum and 138 to 151 by

Karvonen. The bands do not overlap. Two people of the same age can both train "in zone

2" at heart rates 24 beats apart if one entered a resting value and one did not, and

both would be following the same calculator.

Boundary and rounding behavior worth knowing

The code rounds every boundary with Math.round, separately. Adjacent zones therefore

share a number: zone 1 ends at 114 and zone 2 starts at 114. A reading of exactly 114

sits on the line, so record it as the lower edge of zone 2.

The formula switch is silent. The resting field is optional by design, and any positive

number triggers Karvonen while an empty or zero field falls back to percent of maximum.

If you log zones over months, fix one method now and note it next to your logs.

The guard rejects non-positive and non-numeric age by doing nothing. A blank output

after pressing calculate means the age field, not the button.

The 220 minus age estimate itself carries known individual error, and no calculator

input fixes that. If training decisions carry health consequences for you, a supervised

maximal test replaces the estimate, and the zone tables above become obsolete for you.

How to measure resting heart rate for the Karvonen branch

1. Measure on three consecutive mornings, before getting out of bed.

2. Count pulse for a full 60 seconds each morning, watch or band both work if the band

shows a raw bpm value.

3. Average the three values and round to the nearest whole number.

4. Enter that average as the resting value, once, and keep it in every future session

log so the zones stay comparable.

5. Remeasure after any two-week break or illness, since resting rate shifts with

detraining and recovery.

Checklist before you train on zone numbers

  • You know which formula produced your table, percent of maximum or Karvonen.
  • The resting value, if used, is a three-morning average, not a single reading.
  • Your age and resting inputs match the placeholders 30 and 60 only by coincidence.
  • You treat shared boundary values as the start of the higher zone.
  • You remember every figure derives from one estimate, 220 minus age.
  • You replace the estimate with a supervised test before using zones for cardiac

rehabilitation or comparable decisions.

Zone math is arithmetic, and the arithmetic above is exact. The estimate it feeds on is

the weak link, so anchor it with your own measured resting rate and recheck it when your

training changes.

What did your zone 2 look like with and without a resting value? Run both calculations

in the [heart rate calculator](https://webrecast.com/en/heart-rate-calculator) and see

the switch happen before you pick one method.