Your Maximum Heart Rate (MHR) is the highest number of beats per minute (BPM) your heart can pump under maximum stress. Knowing this number is crucial for athletes, fitness enthusiasts, and individuals monitoring their cardiac health. It serves as the baseline for determining your "safe" training zones to ensure you exercise effectively without placing dangerous strain on your cardiovascular system.
While the MHR represents the absolute ceiling, "safe" exercise rarely requires you to reach 100% of this limit. For most individuals, the safe and effective training range lies between 50% and 85% of their MHR. Exceeding 90% typically pushes the body into anaerobic territory, which should be reserved for short intervals by conditioned athletes.
How It Is Calculated
There are several methods to estimate MHR. This calculator employs two of the most widely respected standards:
Standard Formula (Fox Equation): The most common calculation, defined as 220 minus your age. This provides a general baseline suitable for most average adults.
Karvonen Method: If you provide your resting heart rate, we use this formula. It is often more accurate because it accounts for your current fitness level. It calculates your Heart Rate Reserve (HRR) first and applies intensity percentages to that reserve, adding the resting rate back in.
Heart Rate Training Zones Explained
To exercise safely, you should aim for specific zones based on your fitness goals:
Moderate Activity (50-70%): This is the "safe zone" for weight management and building basic endurance. It allows for conversation during exercise and is sustainable for long durations.
Vigorous Activity (70-85%): This zone improves aerobic fitness and cardiovascular strength. You will breathe heavily and sweat, but should not feel dizzy or in pain.
Maximum Effort (85-100%): This zone is for high-intensity interval training (HIIT) and competitive sports performance. It should be approached with caution and usually under the guidance of a fitness professional or doctor.
Safety Precautions
While formulas provide good estimates, individual variation exists. Factors such as medication (like beta-blockers), altitude, temperature, and specific heart conditions can alter your actual maximum heart rate.
Stop exercising immediately if you experience chest pain, severe shortness of breath, dizziness, or lightheadedness, regardless of what your heart rate monitor says. Always consult a physician before starting a new vigorous exercise program, especially if you have a history of heart disease.
function calculateHeartRate() {
// 1. Get Inputs
var ageInput = document.getElementById('calc-age');
var rhrInput = document.getElementById('calc-rhr');
var age = parseFloat(ageInput.value);
var rhr = parseFloat(rhrInput.value);
var errorDiv = document.getElementById('age-error');
var resultArea = document.getElementById('results-area');
// 2. Validation
if (isNaN(age) || age 120) {
errorDiv.style.display = 'block';
resultArea.style.display = 'none';
return;
} else {
errorDiv.style.display = 'none';
}
// 3. Logic Selection (Standard vs Karvonen)
var mhr = 220 – age;
var useKarvonen = (!isNaN(rhr) && rhr > 30 && rhr < 150);
// Display MHR
document.getElementById('result-mhr').innerHTML = Math.round(mhr);
document.getElementById('method-used').innerHTML = useKarvonen
? "Calculation Method: Karvonen Formula (accounting for Resting Heart Rate)"
: "Calculation Method: Standard Formula (220 – Age)";
// 4. Calculate Zones
// Zones: 50-60, 60-70, 70-80, 80-90, 90-100
var zones = [
{ min: 0.50, max: 0.60, name: "Very Light / Warm Up", color: "#4caf50", effect: "Overall health, recovery" },
{ min: 0.60, max: 0.70, name: "Light / Fat Burn", color: "#8bc34a", effect: "Basic endurance, fat burning" },
{ min: 0.70, max: 0.80, name: "Moderate / Aerobic", color: "#ffc107", effect: "Improved fitness, aerobic capacity" },
{ min: 0.80, max: 0.90, name: "Hard / Anaerobic", color: "#ff9800", effect: "High speed endurance" },
{ min: 0.90, max: 1.00, name: "Maximum / VO2 Max", color: "#f44336", effect: "Maximum performance, speed" }
];
var tableBody = document.getElementById('zones-body');
tableBody.innerHTML = ""; // Clear previous
for (var i = 0; i < zones.length; i++) {
var z = zones[i];
var lowerBPM, upperBPM;
if (useKarvonen) {
// Karvonen: Target Heart Rate = ((max – resting) * %intensity) + resting
var hrr = mhr – rhr;
lowerBPM = Math.round((hrr * z.min) + rhr);
upperBPM = Math.round((hrr * z.max) + rhr);
} else {
// Standard: Target Heart Rate = max * %intensity
lowerBPM = Math.round(mhr * z.min);
upperBPM = Math.round(mhr * z.max);
}
// Create Table Row
var row = document.createElement('tr');
var cellName = document.createElement('td');
cellName.innerHTML = '' + z.name;
var cellPct = document.createElement('td');
cellPct.innerText = (z.min * 100) + "% – " + (z.max * 100) + "%";
var cellBPM = document.createElement('td');
cellBPM.style.fontWeight = "bold";
cellBPM.innerText = lowerBPM + " – " + upperBPM + " bpm";
var cellEffect = document.createElement('td');
cellEffect.innerText = z.effect;
row.appendChild(cellName);
row.appendChild(cellPct);
row.appendChild(cellBPM);
row.appendChild(cellEffect);
tableBody.appendChild(row);
}
// Show results
resultArea.style.display = 'block';
}