If entered, we use the Karvonen formula for higher accuracy.
Please enter a valid age between 10 and 100.
Maximum Heart Rate (MHR)
0BPM
Target Heart Rate Zones
Based on your input, here are your optimal training intensity zones:
Zone
Intensity %
Target Range (BPM)
Benefit
Understanding Minimum and Maximum Heart Rate
Whether you are an elite athlete or just starting your fitness journey, understanding your heart rate data is crucial for safe and effective training. This calculator determines your Maximum Heart Rate (MHR) and breaks down your target heart rate zones to help you structure your workouts.
What is Maximum Heart Rate (MHR)?
Your Maximum Heart Rate is the highest number of beats per minute (BPM) your heart can pump under maximum stress. It is largely determined by genetics and age. While it doesn't indicate fitness level, it is the anchor point for defining your training zones.
The most common formula used is:
MHR = 220 – Age
While simple, this provides a solid baseline for most general fitness purposes.
The Karvonen Method vs. Standard Method
This calculator offers two modes of calculation:
Standard (Age-based): Calculates zones purely as a percentage of your Maximum Heart Rate. This is useful if you do not know your resting heart rate.
Karvonen Formula (Heart Rate Reserve): If you input your Resting Heart Rate (RHR), the calculator uses the Karvonen formula. This method accounts for your fitness level by calculating the "Heart Rate Reserve" (HRR = MHR – RHR).
The formula for a specific target zone using Karvonen is: Target HR = ((MHR – RHR) × %Intensity) + RHR
Heart Rate Training Zones Explained
Training in different heart rate zones triggers different physiological adaptations:
Zone 1 (50-60%): Very light intensity. Used for warm-ups and active recovery. Helps with blood flow and recovery.
Zone 2 (60-70%): Light intensity. The "Fat Burning" zone. Improves general endurance and metabolizes fat for energy.
Zone 3 (70-80%): Moderate intensity. Improves aerobic capacity and blood circulation efficiency.
Zone 4 (80-90%): Hard intensity. Increases anaerobic threshold and speed endurance. Difficult to sustain for long periods.
Zone 5 (90-100%): Maximum effort. Used for short intervals to improve speed and neuromuscular power.
How to Find Your Resting Heart Rate
To get the most accurate results from this calculator, measure your Resting Heart Rate (RHR) in the morning right after waking up, before getting out of bed. Count your pulse for 60 seconds. A lower RHR typically indicates better cardiovascular fitness.
Disclaimer: This calculator is for informational purposes only. It is not a medical device. Always consult with a physician before starting a new exercise program, especially if you have a history of heart conditions.
function calculateHeartRate() {
// 1. Get Inputs
var ageInput = document.getElementById("hrAge").value;
var rhrInput = document.getElementById("hrResting").value;
var errorDiv = document.getElementById("hrError");
var resultsArea = document.getElementById("resultsArea");
var displayMHR = document.getElementById("displayMHR");
var tableBody = document.querySelector("#zonesTable tbody");
// 2. Validate Age
var age = parseFloat(ageInput);
if (isNaN(age) || age 120) {
errorDiv.style.display = "block";
errorDiv.innerHTML = "Please enter a valid age.";
resultsArea.style.display = "none";
return;
}
// 3. Handle Resting Heart Rate (Optional)
var rhr = parseFloat(rhrInput);
var useKarvonen = false;
if (!isNaN(rhr) && rhr > 20 && rhr < 200) {
useKarvonen = true;
}
errorDiv.style.display = "none";
// 4. Calculate Maximum Heart Rate (Fox Formula)
var mhr = 220 – age;
// 5. Update UI for MHR
displayMHR.innerHTML = Math.round(mhr);
resultsArea.style.display = "block";
// 6. Define Zones Data
// Zones: 1 (50-60), 2 (60-70), 3 (70-80), 4 (80-90), 5 (90-100)
var zones = [
{ id: 1, minPct: 0.50, maxPct: 0.60, name: "Zone 1", desc: "Warm Up / Recovery" },
{ id: 2, minPct: 0.60, maxPct: 0.70, name: "Zone 2", desc: "Fat Burning / Endurance" },
{ id: 3, minPct: 0.70, maxPct: 0.80, name: "Zone 3", desc: "Aerobic Capacity" },
{ id: 4, minPct: 0.80, maxPct: 0.90, name: "Zone 4", desc: "Anaerobic Threshold" },
{ id: 5, minPct: 0.90, maxPct: 1.00, name: "Zone 5", desc: "Maximum Effort" }
];
// 7. Clear previous table rows
tableBody.innerHTML = "";
// 8. Loop through zones and calculate specific BPM ranges
for (var i = 0; i < zones.length; i++) {
var zone = zones[i];
var minBPM, maxBPM;
if (useKarvonen) {
// Karvonen Formula: ((MHR – RHR) * %) + RHR
var hrr = mhr – rhr;
minBPM = (hrr * zone.minPct) + rhr;
maxBPM = (hrr * zone.maxPct) + rhr;
} else {
// Standard Formula: MHR * %
minBPM = mhr * zone.minPct;
maxBPM = mhr * zone.maxPct;
}
// Round values
minBPM = Math.round(minBPM);
maxBPM = Math.round(maxBPM);
// Create Table Row
var row = document.createElement("tr");
row.className = "zone-row";
row.innerHTML = "