Heart Rate Zones
Train With Precision.
Stop guessing during your cardio sessions. Calculate your optimal fat-burning and cardiovascular endurance zones based on your age and resting heart rate to maximize the efficiency of every workout.
Target Heart Rate Zones
Calculated using the Karvonen Formula.
220 − age is the classic rule of thumb but can be off by ±10-12 bpm. Tanaka’s formula, derived from a larger modern study pool, tends to track measured max HR more closely — especially past age 40.
Disclaimer: This tool is for informational purposes only and is not a substitute for professional medical advice, diagnosis, or treatment.
Your Training Zones
0 – 0 BPM
0 – 0 BPM
0 – 0 BPM
Estimated Max HR: 0 BPM
function calculateHR() { let age = parseInt(document.getElementById('age').value); let rhr = parseInt(document.getElementById('rhr').value); let formula = document.getElementById('formula').value;
if (!age || !rhr) { alert('Please enter your age and resting heart rate.'); return; }
let maxHR = formula === 'tanaka' ? Math.round(208 - 0.7 * age) : (220 - age);
let hrr = maxHR - rhr;
let fatMin = Math.round((hrr * 0.60) + rhr); let fatMax = Math.round((hrr * 0.70) + rhr);
let cardioMin = Math.round((hrr * 0.70) + rhr); let cardioMax = Math.round((hrr * 0.80) + rhr);
let peakMin = Math.round((hrr * 0.80) + rhr); let peakMax = Math.round((hrr * 0.90) + rhr);
document.getElementById('fatZone').innerText = fatMin + ' - ' + fatMax + ' BPM'; document.getElementById('cardioZone').innerText = cardioMin + ' - ' + cardioMax + ' BPM'; document.getElementById('peakZone').innerText = peakMin + ' - ' + peakMax + ' BPM'; document.getElementById('maxHrResult').innerText = maxHR;
document.getElementById('results').style.display = 'block'; }
function calculateHR() { let age = parseInt(document.getElementById('age').value); let rhr = parseInt(document.getElementById('rhr').value); let formula = document.getElementById('formula').value;
if (!age || !rhr) { alert('Please enter your age and resting heart rate.'); return; }
let maxHR = formula === 'tanaka' ? Math.round(208 - 0.7 * age) : (220 - age);
let hrr = maxHR - rhr;
let fatMin = Math.round((hrr * 0.60) + rhr); let fatMax = Math.round((hrr * 0.70) + rhr);
let cardioMin = Math.round((hrr * 0.70) + rhr); let cardioMax = Math.round((hrr * 0.80) + rhr);
let peakMin = Math.round((hrr * 0.80) + rhr); let peakMax = Math.round((hrr * 0.90) + rhr);
document.getElementById('fatZone').innerText = fatMin + ' - ' + fatMax + ' BPM'; document.getElementById('cardioZone').innerText = cardioMin + ' - ' + cardioMax + ' BPM'; document.getElementById('peakZone').innerText = peakMin + ' - ' + peakMax + ' BPM'; document.getElementById('maxHrResult').innerText = maxHR;
document.getElementById('results').style.display = 'block'; }