Calculate your Maximum Heart Rate (MHR) and training zones for optimal fitness results.
Enter this for more accurate results using the Karvonen Formula.
0
Maximum Heart Rate (BPM)
Target Training Zones
Zone
Intensity
Heart Rate Range (BPM)
Benefit
Understanding Your Heart Rate Calculations
Monitoring your heart rate is one of the most effective ways to gauge the intensity of your workouts. Whether your goal is fat loss, endurance building, or peak athletic performance, training in the correct "zone" ensures you are working hard enough to trigger adaptation without overtraining.
How Maximum Heart Rate (MHR) is Calculated
The most common method for estimating Maximum Heart Rate is the formula: 220 – Age. This provides a rough baseline for the maximum number of times your heart should beat per minute during extreme exertion. While simple, it is a generalized estimate.
For more precision, this calculator uses the Karvonen Formula if you provide your Resting Heart Rate (RHR). This method takes into account your "Heart Rate Reserve" (HRR), which is the difference between your maximum and resting heart rates. The formula is:
Using the Karvonen method customizes the zones to your specific fitness level, as a lower resting heart rate generally indicates better cardiovascular health.
Heart Rate Training Zones Explained
Zone 1 (50-60% – Warm Up): Very light intensity. Used for warm-ups, cool-downs, and active recovery. Helps improve overall health and metabolism.
Zone 2 (60-70% – Fat Burn): Light intensity. The body relies more on fat as a fuel source. Great for endurance base building and weight management.
Zone 3 (70-80% – Aerobic): Moderate intensity. Improves aerobic capacity and blood circulation. This is the sweet spot for cardiovascular training.
Zone 4 (80-90% – Anaerobic): Hard intensity. Muscles begin to tire as the body produces lactic acid. improves speed and power.
Zone 5 (90-100% – Maximum): Maximum effort. Sustainable for only very short periods. Used for interval training to improve peak speed and neuromuscular coordination.
When to Measure Resting Heart Rate
To get the most accurate results from this calculator, measure your resting heart rate immediately after waking up in the morning, before getting out of bed or drinking coffee. Count your pulse for 60 seconds. An average adult RHR is between 60 and 100 bpm, while athletes may have rates as low as 40 bpm.
function calculateHeartRate() {
// Get Inputs
var ageInput = document.getElementById('hr-age').value;
var rhrInput = document.getElementById('hr-rhr').value;
// Parse numbers
var age = parseInt(ageInput);
var rhr = parseInt(rhrInput);
// Validation
if (!age || isNaN(age) || age 120) {
alert("Please enter a valid age between 1 and 120.");
return;
}
// 1. Calculate Max Heart Rate (Fox Formula: 220 – Age)
var mhr = 220 – age;
// Update MHR Display
document.getElementById('display-mhr').innerHTML = mhr;
document.getElementById('hr-results').style.display = "block";
// 2. Determine Calculation Method (Standard vs Karvonen)
var useKarvonen = false;
if (rhr && !isNaN(rhr) && rhr > 30 && rhr < mhr) {
useKarvonen = true;
}
// Define Zones
var zones = [
{ name: "Zone 1", intensity: "Very Light", min: 0.50, max: 0.60, desc: "Warm Up / Recovery" },
{ name: "Zone 2", intensity: "Light", min: 0.60, max: 0.70, desc: "Fat Burn / Endurance" },
{ name: "Zone 3", intensity: "Moderate", min: 0.70, max: 0.80, desc: "Aerobic Fitness" },
{ name: "Zone 4", intensity: "Hard", min: 0.80, max: 0.90, desc: "Anaerobic Performance" },
{ name: "Zone 5", intensity: "Maximum", min: 0.90, max: 1.00, desc: "Peak Effort" }
];
var tableBody = document.getElementById('zones-body');
tableBody.innerHTML = ""; // Clear previous results
var heartRateReserve = mhr – rhr;
// Loop through zones and calculate
for (var i = 0; i < zones.length; i++) {
var zone = zones[i];
var minBpm, maxBpm;
if (useKarvonen) {
// Karvonen Formula: (HRR * %) + RHR
minBpm = Math.round((heartRateReserve * zone.min) + rhr);
maxBpm = Math.round((heartRateReserve * zone.max) + rhr);
} else {
// Standard Formula: MHR * %
minBpm = Math.round(mhr * zone.min);
maxBpm = Math.round(mhr * zone.max);
}
// Create Table Row
var row = "
";
tableBody.innerHTML += row;
}
// Update Method Note
var note = document.getElementById('method-note');
if (useKarvonen) {
note.innerHTML = "Calculation used: Karvonen Formula (based on Age and Resting HR).";
} else {
note.innerHTML = "Calculation used: Standard Percentage of Max Heart Rate (220-Age). Enter Resting HR for more precision.";
}
}