.hr-calc-container {
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
max-width: 800px;
margin: 20px auto;
padding: 25px;
border: 1px solid #e0e0e0;
border-radius: 12px;
background-color: #ffffff;
box-shadow: 0 4px 6px rgba(0,0,0,0.05);
}
.hr-calc-container h2 {
color: #d32f2f;
text-align: center;
margin-top: 0;
}
.hr-calc-form {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 20px;
margin-bottom: 25px;
}
@media (max-width: 600px) {
.hr-calc-form { grid-template-columns: 1fr; }
}
.hr-input-group {
display: flex;
flex-direction: column;
}
.hr-input-group label {
font-weight: 600;
margin-bottom: 8px;
color: #333;
}
.hr-input-group input {
padding: 12px;
border: 1px solid #ccc;
border-radius: 6px;
font-size: 16px;
}
.hr-calc-btn {
grid-column: 1 / -1;
background-color: #d32f2f;
color: white;
padding: 15px;
border: none;
border-radius: 6px;
font-size: 18px;
font-weight: bold;
cursor: pointer;
transition: background 0.3s;
}
.hr-calc-btn:hover {
background-color: #b71c1c;
}
.hr-results {
margin-top: 30px;
display: none;
padding: 20px;
background-color: #f9f9f9;
border-radius: 8px;
}
.hr-main-metrics {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 15px;
text-align: center;
margin-bottom: 25px;
}
.hr-metric-box {
background: white;
padding: 15px;
border-radius: 8px;
border-bottom: 4px solid #d32f2f;
box-shadow: 0 2px 4px rgba(0,0,0,0.05);
}
.hr-metric-value {
font-size: 24px;
font-weight: bold;
color: #d32f2f;
display: block;
}
.hr-metric-label {
font-size: 13px;
color: #666;
text-transform: uppercase;
letter-spacing: 0.5px;
}
.hr-zone-table {
width: 100%;
border-collapse: collapse;
margin-top: 20px;
}
.hr-zone-table th, .hr-zone-table td {
padding: 12px;
text-align: left;
border-bottom: 1px solid #eee;
}
.hr-zone-table th {
background-color: #f1f1f1;
font-weight: 600;
}
.hr-article {
margin-top: 40px;
line-height: 1.6;
color: #333;
}
.hr-article h3 { color: #d32f2f; margin-top: 25px; }
.hr-article p { margin-bottom: 15px; }
.hr-article ul { margin-bottom: 15px; padding-left: 20px; }
Heart Rate & Training Zone Calculator
Max Heart Rate
–
BPM
HR Reserve
–
BPM
Resting HR
–
BPM
| Zone |
Intensity |
Target Range (BPM) |
Benefit |
Understanding Resting and Maximum Heart Rate
Your heart rate is a vital window into your cardiovascular health and fitness level. By calculating your Maximum Heart Rate (MHR) and knowing your Resting Heart Rate (RHR), you can use the Karvonen Formula to establish precise training zones tailored to your unique physiology.
How to Measure Your Resting Heart Rate
For the most accurate results, measure your Resting Heart Rate (RHR) first thing in the morning before getting out of bed. Place two fingers on your wrist (radial pulse) or neck (carotid pulse) and count the beats for 60 seconds. A typical RHR for adults ranges from 60 to 100 BPM, while highly trained athletes may see rates as low as 40 BPM.
How Maximum Heart Rate is Calculated
This calculator utilizes the standard Fox Formula (220 – Age) to estimate your peak heart rate capacity. While individual variation exists, this provides a reliable baseline for most healthy adults to begin heart rate zone training.
The Karvonen Formula: Why It Matters
Unlike simple percentage-of-max calculations, the Karvonen formula incorporates your Heart Rate Reserve (HRR). HRR is the difference between your Max HR and Resting HR. By including your resting pulse, the calculation accounts for your current fitness level, making the target zones much more accurate for your personal training needs.
Heart Rate Training Zones Explained
- Zone 1 (Recovery): Great for warming up and active recovery after a hard workout.
- Zone 2 (Aerobic/Fat Burn): Builds endurance and allows the body to become efficient at burning fat as fuel.
- Zone 3 (Tempo): Improves cardiovascular capacity and respiratory efficiency.
- Zone 4 (Anaerobic): Increases lactate threshold and improves high-speed endurance.
- Zone 5 (Red Line): Maximum effort, used for short intervals to increase absolute power and speed.
function calculateHeartMetrics() {
var age = parseFloat(document.getElementById('hr_age').value);
var rhr = parseFloat(document.getElementById('hr_resting').value);
if (isNaN(age) || age 120) {
alert("Please enter a valid age.");
return;
}
if (isNaN(rhr) || rhr 200) {
alert("Please enter a valid resting heart rate.");
return;
}
// Formulas
var mhr = 220 – age;
var hrr = mhr – rhr;
if (hrr <= 0) {
alert("Resting heart rate cannot be higher than maximum heart rate. Please check your inputs.");
return;
}
// Display Main Metrics
document.getElementById('res_mhr').innerText = Math.round(mhr);
document.getElementById('res_hrr').innerText = Math.round(hrr);
document.getElementById('res_rhr').innerText = Math.round(rhr);
// Calculate Zones using Karvonen Formula: ((MHR – RHR) * %Intensity) + RHR
var zones = [
{ name: "Zone 1 (Recovery)", min: 0.50, max: 0.60, benefit: "Warm-up / Recovery" },
{ name: "Zone 2 (Aerobic)", min: 0.60, max: 0.70, benefit: "Fat burning / Base" },
{ name: "Zone 3 (Tempo)", min: 0.70, max: 0.80, benefit: "Aerobic fitness" },
{ name: "Zone 4 (Threshold)", min: 0.80, max: 0.90, benefit: "Speed / Endurance" },
{ name: "Zone 5 (Max)", min: 0.90, max: 1.00, benefit: "Peak Performance" }
];
var tableHtml = "";
for (var i = 0; i < zones.length; i++) {
var z = zones[i];
var lowBpm = Math.round((hrr * z.min) + rhr);
var highBpm = Math.round((hrr * z.max) + rhr);
tableHtml += "
";
tableHtml += "| " + z.name + " | ";
tableHtml += "" + (z.min * 100) + "% – " + (z.max * 100) + "% | ";
tableHtml += "" + lowBpm + " – " + highBpm + " BPM | ";
tableHtml += "" + z.benefit + " | ";
tableHtml += "
";
}
document.getElementById('zone_body').innerHTML = tableHtml;
document.getElementById('hr_results_area').style.display = 'block';
// Smooth scroll to results
document.getElementById('hr_results_area').scrollIntoView({ behavior: 'smooth', block: 'nearest' });
}