Optimize your cardio workouts using the Karvonen Formula
Very Light (50-60%) – Recovery
Moderate (60-70%) – Fat Burn
Aerobic (70-80%) – Cardio Fitness
Anaerobic (80-90%) – Performance
Maximum (90-100%) – VO2 Max
Your Custom Results
Max Heart Rate– BPM
Target Range– BPM
How to Calculate Target Heart Rate for Cardio
Understanding your target heart rate (THR) is the most effective way to ensure your cardio workouts are neither too easy nor dangerously intense. To calculate target heart rate for cardio accurately, fitness professionals use the Karvonen Formula, which accounts for your resting heart rate to provide a more personalized training zone.
The Karvonen Formula Explained
Unlike simple calculations that only use your age, the Karvonen formula measures your Heart Rate Reserve (HRR). This is the difference between your maximum heart rate and your resting heart rate. The logic is: the more fit you are, the lower your resting heart rate, and the wider your reserve becomes.
If you are 30 years old with a resting heart rate of 60 BPM and want to perform moderate cardio (70% intensity):
Max HR: 220 – 30 = 190 BPM
HR Reserve: 190 – 60 = 130 BPM
Target: (130 × 0.70) + 60 = 151 BPM
Therefore, to stay in your aerobic zone, you should aim to keep your pulse around 151 beats per minute during your workout.
function calculateTHR() {
var age = document.getElementById("thr_age").value;
var rhr = document.getElementById("thr_rhr").value;
var intensity = document.getElementById("thr_intensity").value;
var resultDiv = document.getElementById("thr_results");
if (!age || age 110) {
alert("Please enter a valid age.");
return;
}
if (!rhr || rhr 200) {
alert("Please enter a valid resting heart rate (usually between 40-100 BPM).");
return;
}
// Step 1: Maximum Heart Rate (Haskell & Fox formula)
var mhr = 220 – age;
// Step 2: Heart Rate Reserve
var hrr = mhr – rhr;
if (hrr <= 0) {
alert("Resting heart rate cannot be higher than maximum heart rate. Please check your inputs.");
return;
}
// Step 3: Target HR Calculation using Karvonen Formula
// We calculate a 10% range based on the selected intensity level
var lowerIntensity = parseFloat(intensity);
var upperIntensity = lowerIntensity + 0.10;
var targetLower = Math.round((hrr * lowerIntensity) + parseInt(rhr));
var targetUpper = Math.round((hrr * upperIntensity) + parseInt(rhr));
// Display Results
document.getElementById("res_mhr").innerText = mhr;
document.getElementById("res_target").innerText = targetLower + " – " + targetUpper;
// Specific Advice
var adviceText = "";
if (lowerIntensity == 0.50) {
adviceText = "This zone is ideal for warm-ups, cool-downs, and active recovery days.";
} else if (lowerIntensity == 0.60) {
adviceText = "The 'Fat Burn' zone. Long, steady-state cardio in this range utilizes fat as the primary fuel source.";
} else if (lowerIntensity == 0.70) {
adviceText = "The 'Aerobic' zone. Best for improving lung capacity and overall heart health.";
} else if (lowerIntensity == 0.80) {
adviceText = "High intensity. This improves your lactic acid threshold and cardiovascular performance.";
} else {
adviceText = "Maximum effort. Only sustainable for short bursts (HIIT). Consult a doctor before training at this level.";
}
document.getElementById("res_advice").innerText = adviceText;
resultDiv.style.display = "block";
// Smooth scroll to results
resultDiv.scrollIntoView({ behavior: 'smooth', block: 'nearest' });
}