Heart Rate Zones
{{ current_zone_label }}
Max {{ used_max_hr }} bpm · Resting {{ resting_hr }} bpm · Reserve {{ used_hrr }} bpm
Age {{ age }} Method {{ methodLabel }} Formula {{ formulaLabel }} Preset {{ presetLabel }} HR {{ current_hr }} bpm Above Z{{ zones.length }} Below Z1 Session {{ sessionPlan.totalMinutes }} min Focus {{ timePresetLabel }}
yrs:
bpm:
bpm:
bpm:
min:
bpm:
Marker Value Copy
{{ marker.label }} {{ marker.value }}
Zone Percent Range (bpm) Reserve (bpm) Midpoint Session % Minutes HH:MM Copy
Z{{ z.idx }} · {{ z.label }} {{ z.pct_low }}–{{ z.pct_high }}% {{ z.bpm_low }}–{{ z.bpm_high }} bpm {{ z.reserve_low }}–{{ z.reserve_high }} bpm {{ z.mid_bpm }} bpm {{ sessionPlan.rowsMapped[z.idx]?.pctDisplay || '—' }} {{ sessionPlan.rowsMapped[z.idx]?.minutesDisplay || '—' }} {{ sessionPlan.rowsMapped[z.idx]?.timeDisplay || '—' }}
Max HR 100% {{ used_max_hr }} bpm {{ sessionPlan.totalMinutes }} min {{ sessionPlan.totalDisplay }}
Reserve span 0–{{ used_hrr }} bpm
Zone Session % Minutes HH:MM Guidance Copy
Z{{ row.idx }} · {{ row.label }} {{ row.pctDisplay }} {{ row.minutesDisplay }} {{ row.timeDisplay }} {{ row.guidance }}
Total {{ sessionPlan.totalPctDisplay }} {{ sessionPlan.totalMinutesDisplay }} {{ sessionPlan.totalDisplay }} {{ timePresetLabel }}

                
:

Introduction

Heart rate zones are training bands built from your pulse response. They matter because an easy recovery run, a threshold workout, and a hard interval session should not all feel the same or demand the same physiology. This calculator turns that broad training idea into explicit beats-per-minute ranges, current-zone checks, and a time-in-zone plan you can actually use.

The package supports three ways to build the zones. You can estimate maximum heart rate from age, enter a known maximum heart rate directly, or use heart rate reserve by combining maximum and resting heart rate. From there, the tool applies a preset or custom breakpoint model, labels the resulting zones, and maps a live heart rate reading into the current band.

That makes it useful in more than one context. A runner can sanity-check whether a long run is drifting too hard. A cyclist can compare a six-zone preset against a simpler threshold model. Someone planning a 60-minute tempo session can generate a minute-by-minute distribution instead of relying on a vague idea like "mostly moderate, some hard."

The package also exposes the zones in several forms. Key markers summarize method, formula, preset, maximum heart rate, reserve span, current zone, and session mix. The tables show band limits and midpoints. Two chart views render the heart rate bands as a stacked range chart and a zone map, while the session-plan tab turns percentages into minutes and clock-style durations.

The important boundary is that these numbers guide training, not diagnosis. Age-based formulas are estimates, current heart rate fluctuates with heat, fatigue, medication, and hydration, and even reserve-based zones are only as good as the resting and maximum values entered. The tool is strongest as a planning and interpretation aid, not as a medical rulebook.

Everyday Use & Decision Guide

Choose the calculation method first, because everything downstream depends on it. Age mode is the quickest route when you only know age and want a rough training guide. Custom Max HR mode is better when you have a tested or trusted maximum value. HR Reserve mode is the most individualized of the three because it also uses resting heart rate, which shifts lower zones closer to how your body behaves at rest.

The next decision is the zone model. The classic five-zone preset is familiar and easy to communicate. The endurance and cycling presets spread the breakpoints differently. The polarized and four-zone options collapse the model into fewer bands. Custom breakpoints are useful when a coach, device ecosystem, or sport-specific plan already uses a particular set of percentages and you want the rest of the package to follow that scheme.

Live heart rate and session duration answer different questions. The current-heart-rate input tells you where today's reading falls right now, including warnings when the reading is below Zone 1 or above the top band. Session duration activates the session-plan tab, which distributes minutes across zones using a preset mix such as base endurance, tempo focus, threshold build, high intensity, or a custom percentage split.

The tool is most valuable when you use the views together. The marker tab gives a quick snapshot. The zone table shows exact limits and midpoints. The charts make the bands easier to compare visually. The session plan turns a percentage distribution into minutes and a clock-style duration. If one surface feels surprising, the others usually reveal whether the issue is a method choice, a preset choice, or just a current heart-rate reading that sits outside the expected range.

Consistency matters more than precision theater. If you plan to compare workouts over time, keep the same method, the same age formula where relevant, and similar conditions for resting and current-heart-rate inputs. That does more for usefulness than chasing tiny numerical differences between formulas from one day to the next.

Technical Details

The package starts by establishing a working maximum heart rate. In age mode it applies one of four equations exposed in the form: Fox, Tanaka, Gellish, or Nes. In Custom Max HR and HR Reserve modes it uses the entered maximum directly. If HR Reserve is selected, the script then subtracts resting heart rate from maximum heart rate to produce the reserve span that will be used for zone boundaries.

Zone boundaries come from percentage breakpoints. The selected preset or custom list must be strictly ascending and must end at 100 percent. Each adjacent pair of percentages becomes one zone. In Max HR mode, the percentage is applied directly to the working maximum. In HR Reserve mode, the same percentage is applied to the reserve span and then added back to resting heart rate. The resulting lower bound, upper bound, and midpoint are quantized using the configured rounding rule.

HRR = Hmax - Hrest Zlow,max = round ( plow100 × Hmax ) Zlow,hrr = round ( Hrest + plow100 × HRR )

The presets built into the package are not all the same shape. Classic five-zone uses 50, 60, 70, 80, 90, 100. Endurance five-zone uses 55, 65, 75, 85, 92, 100. Polarized gives three bands at 80, 90, 100. Four-zone threshold uses 70, 80, 90, 100. Cycling six-zone uses 60, 72, 82, 89, 94, 100. Custom mode accepts a comma-separated ascending list and rescales nothing, so the final value still has to be 100.

Session planning is built on a separate distribution layer. Once zones exist and a total duration is provided, the tool applies either a preset mix or a custom comma-separated set of percentages matching the number of zones. If the zone count and the distribution length do not match, the plan is rejected. Otherwise, each zone receives a percentage, a minute total, a clock-style duration string, and a short guidance phrase tied to the zone label.

The result surfaces share the same calculation state. Key markers summarize the main facts. The zone table lists percentages, beats-per-minute limits, reserve spans in HRR mode, and session-plan minutes where available. The stacked chart shows the zones by heart-rate range, while the zone map plots intensity percentage against heart rate and overlays the current reading when one exists. CSV, DOCX, chart-image, and JSON exports are generated from those same in-browser results.

Built-in method options
Method Input basis Boundary logic Best use
Age-based Age plus one of the built-in age formulas Percent of estimated maximum heart rate Quick planning when no tested maximum value is available
Custom Max HR Known or tested maximum heart rate Percent of entered maximum heart rate Training plans built around a trusted maximum
HR Reserve Known maximum plus resting heart rate Percent of reserve span added back to resting heart rate More individualized lower and middle training bands
Built-in session distribution presets
Preset How the mix behaves Typical use
Base endurance Pushes most minutes toward the easiest zones Long aerobic sessions and recovery-biased work
Tempo focus Shifts more time into the middle bands Steady sustained efforts and tempo sessions
Threshold build Raises the share near the upper-middle bands Threshold workouts and controlled quality blocks
High intensity Allocates more time toward the top bands Shorter VO₂max or hard-interval sessions
Custom Uses one percentage value per zone and rescales to 100 percent Coach-specific or device-specific workouts

Step-by-Step Guide

  1. Choose the calculation method: age estimate, custom maximum heart rate, or HR Reserve.
  2. Enter the required source values. If HR Reserve is selected, include resting heart rate as well as maximum heart rate.
  3. Pick an age formula when using age mode, then choose a built-in zone preset or enter a custom breakpoint list that ends at 100 percent.
  4. Add a current heart rate if you want the package to classify a live reading into a zone or warn when the reading sits below the first band or above the top band.
  5. Enter session duration and an intensity mix if you want a time-in-zone plan instead of just static ranges.
  6. Review the markers, zone table, charts, and session plan together, then export the table, charts, or JSON payload that matches your use case.

Interpreting Results

The first number to trust is the working maximum heart rate shown in the markers, because every zone is built from it. If that number is only age-estimated, the zone boundaries should be treated as a planning approximation rather than a physiological truth. The same preset can feel very different when recalculated from a tested maximum or from reserve-based inputs.

The current-zone label is situational rather than absolute. It tells you where the present reading falls under the chosen method and preset. A value above the top zone means the current reading is outside the package's modeled band structure, not necessarily that the reading is unsafe. A low reading can be perfectly normal during easy work or recovery.

The session plan should be read as distribution guidance, not a stopwatch mandate. If a 60-minute workout allocates 36 minutes to endurance and 6 minutes to the top zone, that is a planning shape for the session. It does not guarantee how the workout will feel on a hot day, on a climb, or when fatigue pushes the live heart rate higher than expected.

The chart views are best used for pattern recognition. The stacked zones chart emphasizes the width of each band in beats per minute. The zone map connects heart rate to intensity percentage and highlights the current reading when one exists. If the numbers and the charts disagree with how you actually felt, the usual suspects are the chosen method, the source maximum or resting heart rate, or a live reading taken under unusual conditions.

Worked Examples

Building a simple age-based five-zone plan

A runner with age 35 chooses the Tanaka formula and the classic five-zone preset. The package estimates maximum heart rate, builds the five bands, and then converts a 50-minute base-endurance session into minutes per zone. That gives the runner a usable starting structure without needing a lab-tested maximum.

Using HR Reserve for a steadier aerobic prescription

A cyclist enters a tested maximum heart rate and a low resting heart rate, then switches to HR Reserve. The lower and middle zones shift compared with the plain percent-of-max version, which often produces a more believable easy-day target for athletes whose resting heart rate sits well below the generic population norm.

Checking whether a live reading is drifting too high

A session is planned as mostly endurance with a short threshold segment, but the current-heart-rate field is showing a value above the expected zone during the easy portion. The current-zone label and the warning state make that drift obvious. The useful next step is not blind obedience to the label, but checking conditions such as heat, fatigue, pace, or an incorrect source maximum.

FAQ

Which method should I choose if I know my tested maximum heart rate?

Use Custom Max HR or HR Reserve. Age mode is quickest, but it is only estimating the maximum value you already know.

Why do my zones move when I switch from Max HR to HR Reserve?

HR Reserve adds resting heart rate back into the percentage calculation, so the lower and middle bands often shift compared with plain percent-of-max zones.

What happens if my current heart rate is above the top zone?

The package flags it as above the highest band. That means the current reading sits outside the modeled zones, not that the reading is automatically dangerous.

Do the session-plan minutes replace workout judgment?

No. They are a planning distribution built from the chosen preset or custom mix. Real workouts still need context from terrain, fatigue, weather, and training intent.

Glossary

Maximum heart rate
The highest heart rate used by the package as the top of the training model, either estimated from age or entered directly.
Heart rate reserve
The span between maximum heart rate and resting heart rate, used to build reserve-based training zones.
Breakpoint
A percentage boundary that marks where one training zone ends and the next one begins.
Current zone label
The package's classification of the entered live heart-rate reading against the active zone model.
Time-in-zone plan
A distribution of session minutes across the calculated zones, built from the chosen intensity mix.