Optimize your workouts for maximum fat loss based on your physiology.
Optional (for more accuracy)
Your Personal Heart Rate Results
Max Heart Rate–
Fat Burning Zone–60% – 70% intensity
Cardio Zone–70% – 85% intensity
How to Calculate Your Fat Burning Heart Rate
The "Fat Burning Zone" is the physiological state where your body derives a higher percentage of its energy from stored fat rather than glycogen (carbohydrates). This typically occurs when you exercise at roughly 60% to 70% of your maximum heart rate.
The Karvonen Formula Explained
While a simple percentage of maximum heart rate is a good start, the Karvonen Formula used in this calculator is more accurate because it accounts for your resting heart rate (fitness level). Here is the math behind it:
If you are 40 years old with a resting heart rate of 70 BPM:
MHR: 220 – 40 = 180 BPM
HRR: 180 – 70 = 110 BPM
Low End (60%): (110 × 0.60) + 70 = 136 BPM
High End (70%): (110 × 0.70) + 70 = 147 BPM
In this example, staying between 136 and 147 beats per minute would keep you in the optimal zone for fat oxidation during aerobic exercise.
Maximizing Fat Loss
While the fat-burning zone uses fat as a primary fuel source, remember that total calorie expenditure is still king. Higher-intensity workouts (Cardio Zone) burn more total calories in less time, even if the percentage of fat utilized is lower. For the best results, incorporate a mix of "Zone 2" (Fat Burning) steady-state cardio and high-intensity intervals (HIIT).
function calculateFatZone() {
var age = document.getElementById('userAge').value;
var rhr = document.getElementById('restingHR').value;
var resultsDiv = document.getElementById('resultsArea');
if (!age || age 120) {
alert("Please enter a valid age.");
return;
}
var mhr = 220 – age;
var fatLow, fatHigh, cardioLow, cardioHigh;
// Use Karvonen if RHR is provided, otherwise use simple MHR method
if (rhr && rhr > 30 && rhr < 150) {
var hrr = mhr – rhr;
fatLow = Math.round((hrr * 0.60) + parseInt(rhr));
fatHigh = Math.round((hrr * 0.70) + parseInt(rhr));
cardioLow = Math.round((hrr * 0.70) + parseInt(rhr));
cardioHigh = Math.round((hrr * 0.85) + parseInt(rhr));
} else {
fatLow = Math.round(mhr * 0.60);
fatHigh = Math.round(mhr * 0.70);
cardioLow = Math.round(mhr * 0.70);
cardioHigh = Math.round(mhr * 0.85);
}
document.getElementById('maxHRResult').innerText = mhr + " BPM";
document.getElementById('fatZoneResult').innerText = fatLow + " – " + fatHigh + " BPM";
document.getElementById('cardioZoneResult').innerText = cardioLow + " – " + cardioHigh + " BPM";
resultsDiv.style.display = 'block';
resultsDiv.scrollIntoView({ behavior: 'smooth', block: 'nearest' });
}