TL;DR
- Karvonen returns 134 to 148 bpm for this athlete and is the engine's recommended method when resting heart rate is supplied.
- The four methods bracket each other. Maffetone 140-150, percentage of max 114-133, lactate estimate 125-141. The bottom-end variance (114 vs 140) is 26 bpm — large enough to change what session a runner actually does.
- For an athlete with measured RHR, Karvonen is the default. Maffetone over-prescribes for trained athletes; the percentage method under-prescribes the bottom of zone 2.
Zone 2 is the most-trained, least-agreed-on intensity zone in endurance running. The methods that define it disagree by 20+ bpm at the bottom anchor and 10+ bpm at the top, which is wide enough to drift from genuine aerobic work into low tempo without noticing. This walkthrough runs all four methods on the same athlete and reads the result.
The scenario
A 30-year-old endurance runner with a measured resting heart rate of 50 bpm and a field-tested maximum of 190 bpm (a 30-minute hard 5K plus a final-kilometer surge typically lands within 3 bpm of true max). Goal: weekly long-run heart rate prescription.
What the calculator returns
Running all four methods through the Zone 2 Heart Rate Calculator:
# zone-2-heart-rate-calculator (computed live from /engines/zone-2-heart-rate-calculator.js)
Engine input
age = 30
resting_hr = 50
max_hr = 190
methods[0] = maffetone
methods[1] = percentage
methods[2] = karvonen
methods[3] = lactate
Engine output
methods[0].key = maffetone
methods[0].label = Maffetone (MAF 180)
methods[0].zone2Low = 140
methods[0].zone2High = 150
methods[0].maxHr = 180
methods[0].maxHrLabel = MAF base: 150 bpm
methods[0].zones[0].zone= Zone 1 (Recovery)
methods[0].zones[0].lowBpm= 120
methods[0].zones[0].highBpm= 130
methods[0].zones[1].zone= Zone 2 (Aerobic Base)
methods[0].zones[1].lowBpm= 140
methods[0].zones[1].highBpm= 150
methods[0].zones[2].zone= Zone 3 (Tempo)
methods[0].zones[2].lowBpm= 151
methods[0].zones[2].highBpm= 160
methods[0].zones[3].zone= Zone 4 (Threshold)
methods[0].zones[3].lowBpm= 161
methods[0].zones[3].highBpm= 170
methods[0].zones[4].zone= Zone 5 (VO2 Max)
methods[0].zones[4].lowBpm= 171
methods[0].zones[4].highBpm= 180
methods[0].recommended= false
methods[0].requiresRhr= false
methods[0].note = Simple age-based formula popularized by Dr. Phil Maffetone. No equipment needed. Best for beginners and low-HR base training.
methods[1].key = percentage
methods[1].label = % of Max HR
methods[1].zone2Low = 114
methods[1].zone2High = 133
methods[1].maxHr = 190
methods[1].maxHrLabel = Tested max: 190 bpm
methods[1].zones[0].zone= Zone 1 (Recovery)
methods[1].zones[0].lowBpm= 95
methods[1].zones[0].highBpm= 114
methods[1].zones[1].zone= Zone 2 (Aerobic Base)
methods[1].zones[1].lowBpm= 114
methods[1].zones[1].highBpm= 133
methods[1].zones[2].zone= Zone 3 (Tempo)
methods[1].zones[2].lowBpm= 133
methods[1].zones[2].highBpm= 152
methods[1].zones[3].zone= Zone 4 (Threshold)
methods[1].zones[3].lowBpm= 152
methods[1].zones[3].highBpm= 171
methods[1].zones[4].zone= Zone 5 (VO2 Max)
methods[1].zones[4].lowBpm= 171
methods[1].zones[4].highBpm= 190
methods[1].recommended= false
methods[1].requiresRhr= false
methods[1].note = Zone 2 = 60-70% of max HR.
methods[2].key = karvonen
methods[2].label = Karvonen (Heart Rate Reserve)
methods[2].zone2Low = 134
methods[2].zone2High = 148
methods[2].maxHr = 190
methods[2].maxHrLabel = HRR: 140 bpm
methods[2].zones[0].zone= Zone 1 (Recovery)
methods[2].zones[0].lowBpm= 120
methods[2].zones[0].highBpm= 134
methods[2].zones[1].zone= Zone 2 (Aerobic Base)
methods[2].zones[1].lowBpm= 134
methods[2].zones[1].highBpm= 148
methods[2].zones[2].zone= Zone 3 (Tempo)
methods[2].zones[2].lowBpm= 148
methods[2].zones[2].highBpm= 162
methods[2].zones[3].zone= Zone 4 (Threshold)
methods[2].zones[3].lowBpm= 162
methods[2].zones[3].highBpm= 176
methods[2].zones[4].zone= Zone 5 (VO2 Max)
methods[2].zones[4].lowBpm= 176
methods[2].zones[4].highBpm= 190
methods[2].recommended= true
methods[2].requiresRhr= false
methods[2].note = Most individualized method. Uses resting HR to calculate heart rate reserve. Preferred when RHR is known.
methods[3].key = lactate
methods[3].label = Lactate Threshold Estimate
methods[3].zone2Low = 125
methods[3].zone2High = 141
methods[3].maxHr = 190
methods[3].maxHrLabel = Est. LTHR: 166 bpm
methods[3].zones[0].zone= Zone 1 (Recovery)
methods[3].zones[0].lowBpm= 108
methods[3].zones[0].highBpm= 125
methods[3].zones[1].zone= Zone 2 (Aerobic Base)
methods[3].zones[1].lowBpm= 125
methods[3].zones[1].highBpm= 141
methods[3].zones[2].zone= Zone 3 (Tempo)
methods[3].zones[2].lowBpm= 141
methods[3].zones[2].highBpm= 158
methods[3].zones[3].zone= Zone 4 (Threshold)
methods[3].zones[3].lowBpm= 158
methods[3].zones[3].highBpm= 166
methods[3].zones[4].zone= Zone 5 (VO2 Max)
methods[3].zones[4].lowBpm= 167
methods[3].zones[4].highBpm= 190
methods[3].recommended= false
methods[3].requiresRhr= false
methods[3].note = Lactate threshold HR estimated at 87.5% of max HR (166 bpm). Zone 2 = 75-85% of LTHR. Best accuracy requires lab testing.
estimatedMaxHrTraditional= 190
estimatedMaxHrTanaka = 187
hasRhr = true
hasCustomMaxHr = true Four methods, four answers, all describing the same physiological zone. The Tanaka revision of age-predicted max HR[2] returns 187 versus the traditional 220-age value of 190 — a 3 bpm difference for this age, but a much larger gap for older athletes (Tanaka recommends 208 − 0.7 × age, which diverges from 220 − age above age 40).
Reading the numbers
The engine marks Karvonen as recommended. The Karvonen formula[1]:
HR_target = RHR + intensity × (HRmax − RHR)
For zone 2 (60 to 70% of heart rate reserve):
HRR = 190 − 50 = 140 bpm
Lower = 50 + 0.60 × 140 = 134 bpm
Upper = 50 + 0.70 × 140 = 148 bpm
Zone 2 range = 134 – 148 bpm Karvonen uses the heart rate reserve (HRR) instead of raw max HR, which corrects for the fact that a trained athlete with a low resting HR has a different "intensity per bpm" than an untrained one. The 134 to 148 range is what most coaches would prescribe for true aerobic base work in this athlete.
Maffetone's MAF 180 formula (180 minus age, with adjustments) is more conservative and reads as a single anchor (150 bpm for this athlete) rather than a band. It was designed as a max-cap for low-HR base training rather than a zone definition. The 140 to 150 band the engine reports is the calculator's interpolation around the MAF anchor.
The percentage-of-max method (60 to 70% of 190 = 114 to 133) systematically undershoots zone 2 for trained athletes with low resting HR. At 114 bpm this athlete would be walking, not running, because the cardiac demand to raise the heart from 50 to 114 is small. The percentage method works better when applied to heart-rate reserve, which is exactly the Karvonen correction.
Where the methods break
Each method fails for a specific population.
Maffetone fails for advanced endurance athletes. A 30-year-old elite runner with VO2max 70 ml/kg/min routinely runs aerobic miles at 155 to 165 bpm. Capping at 150 forces them to walk on hills. Maffetone was designed for beginner triathletes with a poor aerobic base; for that population it is reasonable.
Percentage-of-max breaks for athletes with low resting HR. A heart rate of 114 represents a 64 bpm rise above resting; that is below the metabolic threshold where fat oxidation peaks for trained athletes. The bottom of zone 2 should sit at 60% of HRR, not 60% of HRmax.
Lactate-estimate fails without lab validation. The engine estimates LTHR at 87.5% of max HR (166 bpm here). Real LTHR varies by ±5 to 8 bpm at this fitness level; the lactate band of 125 to 141 may be 4 to 6 bpm off the true threshold-derived zone 2 in either direction. The 125 lower bound especially undershoots for athletes with steep aerobic curves.
All four fail in hot weather. Cardiac drift adds 5 to 12 bpm at the same pace above 22°C ambient. A zone 2 prescription run by HR alone slows down too aggressively in heat; pace targets paired with HR caps work better.
A practical zone 2 prescription
Use Karvonen 134-148 as the working band. Within that:
Session type Target HR Talk test
─────────────────────────────────────────────────────────
Long aerobic run 134 – 142 bpm Full sentences, slow
Steady aerobic 142 – 148 bpm Short sentences, controlled
Recovery jog 120 – 134 bpm Below zone 2; intentional
Tempo intro 148 – 155 bpm One sentence at a time; above zone 2
Workflow:
1. Warm up 10 min at 120 bpm
2. Settle into 138 to 145 bpm for the bulk of the run
3. Allow drift to 148 in the final 20 min if hot or fatigued
4. Cool down 5 min back to under 130 bpm The talk test cross-checks the HR data. If full sentences feel hard at 138 bpm, the recommended max HR estimate is off (or the day is bad) and the run should be slowed. The Heart Rate Zone Calculator reports all five zones simultaneously for cross-zone planning.
A reasonable allocation over a 12-week base block sits at roughly 80 percent of weekly time in this 134-148 band, 15 percent above, and 5 percent below as recovery jogging. That allocation matches the polarized training distribution that the endurance research has converged on for trained athletes building an aerobic base.
Related tools and follow-ups
- Zone 2 Heart Rate Calculator — the multi-method engine used here.
- Heart Rate Zone Calculator — full five-zone breakdown for the same input.
- VO2 Max Estimator — physiology cross-check on aerobic ceiling.
For broader context: Zone 2 training: what the literature actually says, methods and limits of zone 2 testing, and polarized vs threshold training: 2026 systematic review cover the broader programming context.
FAQ
What zone 2 heart rate should a 30-year-old endurance athlete with RHR 50 train at? Karvonen returns 134 to 148 bpm and is the recommended method when resting heart rate is known. The other three methods bracket the result: Maffetone 140 to 150, percentage of max 114 to 133, lactate estimate 125 to 141.
Why does the percentage-of-max method give a much wider range? Percentage of max ignores resting heart rate. For a trained athlete with RHR 50, the heart rate reserve is large, which means the bottom of zone 2 sits well above 60 percent of max. The percentage method underprices that bottom anchor.
Is the Karvonen formula always the most accurate? It is the most individualized method that does not require lab testing. For an athlete with a measured resting HR and a known maximum HR from field testing, Karvonen aligns closely with lactate-derived zones. For someone using only age-based max HR, Karvonen and lactate methods can diverge by 5 to 10 bpm.
References
- 1 Effects of basal heart rate on selected exercise responses (Karvonen et al.) — Annales Medicinae Experimentalis et Biologiae Fenniae (1957)
- 2 Age-predicted maximal heart rate revisited (Tanaka, Monahan, Seals) — Journal of the American College of Cardiology (2001)
- 3 Methodology — Zone 2 Heart Rate Calculator — AI Fit Hub