Calculate your target heart rate zones based on the Karvonen Formula for optimal training intensity.
50% – Very Light
60% – Light (Fat Burn)
70% – Moderate (Aerobic)
80% – Hard (Anaerobic)
90% – Maximum (Sprints)
Your Estimated Maximum Heart Rate:
—
Target Heart Rate for Selected Intensity:
—
Your Personalized Training Zones
Zone
Intensity
Target Range (BPM)
Understanding Exercise Heart Rate Zones
To get the most out of your workouts, it is essential to monitor your heart rate. Exercising at the right intensity ensures you are meeting your fitness goals, whether that is weight loss, cardiovascular endurance, or athletic performance. This calculator uses the Karvonen Formula, which is considered more accurate than simple formulas because it accounts for your resting heart rate.
Zone 1: Very Light (50-60%) – Ideal for warm-ups, cool-downs, and active recovery. It improves overall health but doesn't significantly boost aerobic capacity.
Zone 2: Light/Fat Burn (60-70%) – This is the "base" training zone. It increases your body's ability to burn fat and improves muscular endurance.
Zone 3: Moderate/Aerobic (70-80%) – Often called the "cardio" zone. It improves blood circulation and strengthens the heart and lungs.
Zone 4: Hard/Anaerobic (80-90%) – High intensity. This improves your speed and anaerobic threshold, helping you handle high levels of lactic acid.
Zone 5: Maximum (90-100%) – All-out effort. Reserved for short intervals and professional athletes to improve maximum performance and speed.
Practical Example
A 30-year-old individual with a resting heart rate of 60 BPM wants to exercise in the Fat Burn zone (65% intensity):
Max HR: 220 – 30 = 190 BPM
HR Reserve: 190 – 60 = 130 BPM
Target HR: (130 × 0.65) + 60 = 144.5 BPM
By keeping their heart rate around 145 BPM, they stay perfectly within their target zone for that specific goal.
function calculateTargetHeartRate() {
var age = parseFloat(document.getElementById('hrAge').value);
var restHR = parseFloat(document.getElementById('hrRest').value);
var intensity = parseFloat(document.getElementById('hrIntensity').value);
var resultArea = document.getElementById('hr-result-area');
if (isNaN(age) || age 120) {
alert("Please enter a valid age.");
return;
}
if (isNaN(restHR) || restHR 150) {
alert("Please enter a valid resting heart rate (typical range 30-120).");
return;
}
// Formulas
var maxHR = 220 – age;
var hrr = maxHR – restHR;
var targetHR = (hrr * intensity) + restHR;
// Update Display
document.getElementById('maxHRVal').innerText = Math.round(maxHR) + " BPM";
document.getElementById('targetHRVal').innerText = Math.round(targetHR) + " BPM";
// Generate Table
var zones = [
{ name: "Zone 1 (Warm Up)", min: 0.50, max: 0.60 },
{ name: "Zone 2 (Fat Burn)", min: 0.60, max: 0.70 },
{ name: "Zone 3 (Aerobic)", min: 0.70, max: 0.80 },
{ name: "Zone 4 (Anaerobic)", min: 0.80, max: 0.90 },
{ name: "Zone 5 (Red Line)", min: 0.90, max: 1.00 }
];
var tableBody = document.getElementById('zoneTableBody');
tableBody.innerHTML = "";
for (var i = 0; i < zones.length; i++) {
var zoneMin = Math.round((hrr * zones[i].min) + restHR);
var zoneMax = Math.round((hrr * zones[i].max) + restHR);
var row = document.createElement('tr');
row.className = "zone-row";
row.innerHTML = "