Predicted Maximum Heart Rate Calculator
.mhr-calculator-wrapper {
max-width: 800px;
margin: 0 auto;
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
line-height: 1.6;
color: #333;
background: #f9f9f9;
padding: 20px;
border-radius: 8px;
box-shadow: 0 2px 10px rgba(0,0,0,0.05);
}
.mhr-header {
text-align: center;
margin-bottom: 30px;
}
.mhr-header h1 {
color: #e3342f;
margin-bottom: 10px;
}
.mhr-input-section {
background: #fff;
padding: 25px;
border-radius: 8px;
border: 1px solid #e0e0e0;
display: grid;
grid-template-columns: 1fr 1fr;
gap: 20px;
}
.mhr-input-group {
display: flex;
flex-direction: column;
}
.mhr-input-group label {
font-weight: 600;
margin-bottom: 8px;
color: #555;
}
.mhr-input-group input, .mhr-input-group select {
padding: 12px;
border: 1px solid #ccc;
border-radius: 6px;
font-size: 16px;
}
.mhr-btn-container {
grid-column: 1 / -1;
text-align: center;
margin-top: 10px;
}
.mhr-calculate-btn {
background-color: #e3342f;
color: white;
border: none;
padding: 15px 40px;
font-size: 18px;
font-weight: bold;
border-radius: 6px;
cursor: pointer;
transition: background-color 0.2s;
}
.mhr-calculate-btn:hover {
background-color: #cc1f1a;
}
.mhr-results {
margin-top: 30px;
display: none;
}
.mhr-main-result {
text-align: center;
background: #fff;
padding: 20px;
border-left: 5px solid #e3342f;
border-radius: 4px;
box-shadow: 0 2px 5px rgba(0,0,0,0.05);
margin-bottom: 20px;
}
.mhr-main-result h3 {
margin: 0;
font-size: 18px;
color: #666;
}
.mhr-value-display {
font-size: 42px;
font-weight: 800;
color: #2d3748;
margin: 10px 0;
}
.mhr-unit {
font-size: 18px;
color: #718096;
font-weight: normal;
}
.mhr-comparison {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 15px;
margin-bottom: 30px;
}
.mhr-formula-box {
background: #fff;
padding: 15px;
border-radius: 6px;
border: 1px solid #eee;
text-align: center;
}
.mhr-formula-name {
font-size: 14px;
font-weight: 600;
color: #718096;
text-transform: uppercase;
letter-spacing: 0.5px;
}
.mhr-formula-val {
font-size: 24px;
font-weight: bold;
color: #333;
}
.mhr-zones-table {
width: 100%;
border-collapse: collapse;
background: #fff;
border-radius: 8px;
overflow: hidden;
}
.mhr-zones-table th, .mhr-zones-table td {
padding: 12px 15px;
text-align: left;
border-bottom: 1px solid #eee;
}
.mhr-zones-table th {
background-color: #2d3748;
color: white;
}
.mhr-zone-row-1 { background-color: #f0fff4; color: #22543d; }
.mhr-zone-row-2 { background-color: #e6fffa; color: #234e52; }
.mhr-zone-row-3 { background-color: #fffaf0; color: #744210; }
.mhr-zone-row-4 { background-color: #fff5f5; color: #742a2a; }
.mhr-zone-row-5 { background-color: #fc8181; color: #fff; font-weight: bold; }
.mhr-content-section {
margin-top: 50px;
padding-top: 30px;
border-top: 2px solid #eee;
}
.mhr-content-section h2 {
color: #2d3748;
margin-top: 30px;
}
.mhr-content-section p {
margin-bottom: 15px;
}
@media (max-width: 600px) {
.mhr-input-section, .mhr-comparison {
grid-template-columns: 1fr;
}
}
Recommended Maximum Heart Rate (Tanaka)
0 BPM
This is considered the most accurate formula for healthy adults.
Target Heart Rate Zones (Based on Tanaka)
| Zone Intensity |
Percentage |
Target Range (BPM) |
Benefit |
How to Calculate Predicted Maximum Heart Rate
Your Predicted Maximum Heart Rate (MHR) is the upper limit of what your cardiovascular system can handle during physical exertion. While a clinical stress test is the only way to determine your absolute maximum with 100% certainty, mathematical formulas provide highly reliable estimates for training purposes.
Common MHR Formulas Explained
This calculator utilizes three distinct algorithms to provide a comprehensive prediction:
- The Fox Formula (220 – Age): This is the traditional method used for decades. While simple to calculate mentally, it tends to overestimate MHR for younger people and underestimate it for older adults.
- The Tanaka Formula (208 – 0.7 × Age): Published in 2001, this equation is widely accepted in the medical community as more accurate than the Fox formula for healthy adults of varying activity levels.
- The Gulati Formula (206.9 – 0.67 × Age): Research suggests that the standard formulas often overestimate MHR for women. The Gulati formula is specifically calibrated to predict maximum heart rate for females more accurately.
Understanding Heart Rate Zones
Knowing your maximum heart rate allows you to train in specific "zones" to achieve different fitness goals. These are calculated as percentages of your MHR:
- Zone 1 (50-60%): Very light activity, warm-up, and recovery.
- Zone 2 (60-70%): Basic endurance and fat burning. This is often called the "conversational pace."
- Zone 3 (70-80%): Aerobic fitness. Improves blood circulation and skeletal muscle strength.
- Zone 4 (80-90%): Anaerobic capacity. High intensity for shorter durations to increase speed and power.
- Zone 5 (90-100%): Maximum effort. Sustainable only for very short bursts (sprints).
Why Prediction Matters
Monitoring your heart rate intensity ensures you are not under-training (seeing no results) or over-training (risking injury). For most individuals, maintaining a heart rate between 60% and 80% of their predicted maximum provides the best balance of cardiovascular improvement and fat loss.
Disclaimer: This calculator provides an estimate for informational purposes only. Factors like medication (e.g., beta-blockers), genetics, and fitness history can significantly alter your actual maximum heart rate. Always consult a physician before beginning a new high-intensity exercise regimen.
function calculateMaxHeartRate() {
// 1. Get Inputs
var ageInput = document.getElementById('mhrAge').value;
var sexInput = document.getElementById('mhrSex').value;
var resultContainer = document.getElementById('mhrResult');
// 2. Validation
var age = parseFloat(ageInput);
if (isNaN(age) || age 120) {
alert("Please enter a valid age between 1 and 120.");
return;
}
// 3. Calculation Logic
// Fox Formula: 220 – Age
var foxMHR = 220 – age;
// Tanaka Formula: 208 – (0.7 * Age)
var tanakaMHR = 208 – (0.7 * age);
// Gulati Formula (Women): 206.9 – (0.67 * Age)
// Hunt Formula (Men, optional comparison, usually we just stick to Tanaka/Fox for men or use a male specific if needed, but Fox/Tanaka are standard for men.
// Let's use 220-age as standard comparison and Gulati as the specific one for women).
var gulatiMHR = 0;
var specificLabel = document.getElementById('sexSpecificLabel');
var gulatiDisplay = document.getElementById('gulatiDisplay');
if (sexInput === 'female') {
gulatiMHR = 206.9 – (0.67 * age);
specificLabel.innerHTML = "Gulati Formula (Women)";
gulatiDisplay.innerHTML = Math.round(gulatiMHR);
} else {
// For men, we can use the Gellish formula or just hide Gulati.
// Let's use Gellish: 207 – (0.7 * age) which is very close to Tanaka.
// Or simply mark it N/A as Gulati is strictly female.
// Let's set it to N/A to avoid confusion or just display Tanaka again?
// Better: Show "Astrand" or similar? Let's keep it simple. If male, we hide or show N/A.
specificLabel.innerHTML = "Gulati (Women Only)";
gulatiDisplay.innerHTML = "-";
}
// 4. Update UI
// Round numbers
foxMHR = Math.round(foxMHR);
tanakaMHR = Math.round(tanakaMHR);
document.getElementById('foxDisplay').innerText = foxMHR;
document.getElementById('tanakaDisplay').innerText = tanakaMHR;
// 5. Calculate Zones based on Tanaka (Most scientifically robust for general pop)
var baseMHR = tanakaMHR;
// Zone percentages
var z1_low = Math.round(baseMHR * 0.50);
var z1_high = Math.round(baseMHR * 0.60);
var z2_low = Math.round(baseMHR * 0.60);
var z2_high = Math.round(baseMHR * 0.70);
var z3_low = Math.round(baseMHR * 0.70);
var z3_high = Math.round(baseMHR * 0.80);
var z4_low = Math.round(baseMHR * 0.80);
var z4_high = Math.round(baseMHR * 0.90);
var z5_low = Math.round(baseMHR * 0.90);
var z5_high = baseMHR;
// 6. Populate Table
var tableHtml = ";
tableHtml += '
| Zone 1 (Very Light) | 50% – 60% | ' + z1_low + ' – ' + z1_high + ' BPM | Warm up / Recovery |
';
tableHtml += '
| Zone 2 (Light) | 60% – 70% | ' + z2_low + ' – ' + z2_high + ' BPM | Fat Burning / Endurance |
';
tableHtml += '
| Zone 3 (Moderate) | 70% – 80% | ' + z3_low + ' – ' + z3_high + ' BPM | Aerobic Fitness |
';
tableHtml += '
| Zone 4 (Hard) | 80% – 90% | ' + z4_low + ' – ' + z4_high + ' BPM | Anaerobic / Performance |
';
tableHtml += '
| Zone 5 (Maximum) | 90% – 100% | ' + z5_low + ' – ' + z5_high + ' BPM | Maximum Effort |
';
document.getElementById('zoneTableBody').innerHTML = tableHtml;
// Show results
resultContainer.style.display = 'block';
// Scroll to results
resultContainer.scrollIntoView({behavior: "smooth"});
}