A normal resting heart rate for adults ranges from 60 to 100 beats per minute (BPM). Generally, a lower heart rate at rest implies more efficient heart function and better cardiovascular fitness. For example, a well-trained athlete might have a normal resting heart rate closer to 40 beats per minute.
How to Measure Your Resting Heart Rate
To get an accurate reading using this calculator, you should measure your resting heart rate when you are calm, relaxed, and have been sitting still for at least 5-10 minutes. The best time to check is first thing in the morning before getting out of bed.
Heart Rate Target Zones Explained
When you exercise, your heart rate increases. Knowing your target zones helps you achieve specific fitness goals:
Fat Burn (60-70%): Ideal for weight loss and building basic endurance.
Aerobic (70-80%): Improves cardiovascular fitness and lung capacity.
Anaerobic (80-90%): Increases your lactic acid threshold and high-intensity performance.
Normal Heart Rate Chart by Age
Age Range
Average Max Heart Rate (BPM)
Target Zone (50-85%)
20 Years
200
100–170 BPM
30 Years
190
95–162 BPM
40 Years
180
90–153 BPM
50 Years
170
85–145 BPM
60 Years
160
80–136 BPM
Disclaimer: This calculator is for informational purposes only. Always consult with a healthcare professional before starting a new exercise regimen or if you have concerns about your heart health.
function calculateHeartRate() {
var age = parseFloat(document.getElementById('hr-age').value);
var restingHR = parseFloat(document.getElementById('hr-resting').value);
var resultBox = document.getElementById('hr-result-box');
var statusPill = document.getElementById('hr-status-pill');
if (isNaN(age) || age 120) {
alert("Please enter a valid age.");
return;
}
if (isNaN(restingHR) || restingHR 220) {
alert("Please enter a valid resting heart rate.");
return;
}
// Formula: Max HR = 220 – Age
var maxHR = 220 – age;
// Karvonen Formula: Target HR = ((Max HR − Resting HR) × %Intensity) + Resting HR
var hrReserve = maxHR – restingHR;
function getZone(intensity) {
return Math.round((hrReserve * intensity) + restingHR);
}
// Determine Status
var status = "";
var statusClass = "";
if (restingHR < 60) {
status = "Low Resting HR (Athletic/Bradycardia)";
statusClass = "status-low";
} else if (restingHR <= 100) {
status = "Normal Resting HR";
statusClass = "status-normal";
} else {
status = "High Resting HR (Tachycardia)";
statusClass = "status-high";
}
// Display Results
resultBox.style.display = "block";
statusPill.innerText = status;
statusPill.className = "hr-status-indicator " + statusClass;
document.getElementById('hr-max-display').innerHTML = "Your estimated Maximum Heart Rate (MHR) is " + maxHR + " BPM.";
document.getElementById('zone-1').innerText = getZone(0.50) + " – " + getZone(0.60) + " BPM";
document.getElementById('zone-2').innerText = getZone(0.60) + " – " + getZone(0.70) + " BPM";
document.getElementById('zone-3').innerText = getZone(0.70) + " – " + getZone(0.80) + " BPM";
document.getElementById('zone-4').innerText = getZone(0.80) + " – " + getZone(0.90) + " BPM";
// Smooth scroll to result
resultBox.scrollIntoView({ behavior: 'smooth', block: 'nearest' });
}