Threshold Heart Rate Calculator by Age

Threshold Heart Rate Calculator by Age body { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif; line-height: 1.6; color: #333; margin: 0; padding: 20px; background-color: #f9f9f9; } .calculator-container { max-width: 800px; margin: 0 auto; background: #fff; padding: 30px; border-radius: 12px; box-shadow: 0 4px 15px rgba(0,0,0,0.1); } .calc-header { text-align: center; margin-bottom: 30px; border-bottom: 2px solid #ff4757; padding-bottom: 15px; } .calc-header h1 { margin: 0; color: #2c3e50; font-size: 28px; } .input-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; margin-bottom: 25px; } @media (max-width: 600px) { .input-grid { grid-template-columns: 1fr; } } .input-group { display: flex; flex-direction: column; } .input-group label { font-weight: 600; margin-bottom: 8px; color: #555; } .input-group input, .input-group select { padding: 12px; border: 1px solid #ddd; border-radius: 6px; font-size: 16px; transition: border-color 0.3s; } .input-group input:focus, .input-group select:focus { border-color: #ff4757; outline: none; } .calc-btn { width: 100%; padding: 15px; background-color: #ff4757; color: white; border: none; border-radius: 6px; font-size: 18px; font-weight: bold; cursor: pointer; transition: background-color 0.3s; } .calc-btn:hover { background-color: #e8414e; } .results-section { margin-top: 30px; padding: 20px; background-color: #f1f2f6; border-radius: 8px; display: none; } .key-metrics { display: grid; grid-template-columns: 1fr 1fr; gap: 15px; margin-bottom: 25px; } .metric-card { background: white; padding: 15px; border-radius: 8px; text-align: center; box-shadow: 0 2px 5px rgba(0,0,0,0.05); } .metric-label { font-size: 14px; color: #777; text-transform: uppercase; letter-spacing: 0.5px; } .metric-value { font-size: 28px; font-weight: 800; color: #2c3e50; margin-top: 5px; } .metric-unit { font-size: 12px; color: #999; } .zones-table { width: 100%; border-collapse: collapse; margin-top: 10px; background: white; border-radius: 8px; overflow: hidden; } .zones-table th, .zones-table td { padding: 12px; text-align: left; border-bottom: 1px solid #eee; } .zones-table th { background-color: #2c3e50; color: white; font-weight: 600; } .zone-row-1 { border-left: 5px solid #bdc3c7; } /* Grey */ .zone-row-2 { border-left: 5px solid #3498db; } /* Blue */ .zone-row-3 { border-left: 5px solid #2ecc71; } /* Green */ .zone-row-4 { border-left: 5px solid #f1c40f; } /* Yellow */ .zone-row-5 { border-left: 5px solid #e74c3c; } /* Red */ .article-content { margin-top: 40px; padding-top: 20px; border-top: 1px solid #eee; } .article-content h2 { color: #2c3e50; margin-top: 30px; } .article-content h3 { color: #34495e; } .article-content p { color: #555; margin-bottom: 15px; } .article-content ul { margin-bottom: 15px; padding-left: 20px; } .article-content li { margin-bottom: 8px; } .info-box { background-color: #e8f4fc; border-left: 4px solid #3498db; padding: 15px; margin: 20px 0; }

Threshold Heart Rate Calculator by Age

Optional: Leave blank for standard formula
Untrained / Beginner Active / Intermediate Well Trained / Advanced Elite Athlete
Tanaka (208 – 0.7 × Age) Standard (220 – Age)
Max Heart Rate (Est)
0
BPM
Lactate Threshold (LTHR)
0
BPM

Training Zones (Based on Threshold)

Zone Intensity Heart Rate Range (BPM)

Understanding Your Threshold Heart Rate

Lactate Threshold Heart Rate (LTHR) is one of the most important metrics for endurance athletes. It represents the intensity level at which lactate begins to accumulate in your blood faster than your body can remove it. Training at or near this threshold is the most effective way to improve your aerobic engine and endurance performance.

Why calculate by age? While a laboratory blood test or a 30-minute field test is the gold standard for determining LTHR, calculating it by age and resting heart rate provides a safe, solid starting point for structuring your training zones without the physical stress of an all-out test.

The Formulas Explained

This calculator uses two primary components to estimate your physiological capabilities:

  • Maximum Heart Rate (MHR): We determine this using either the Tanaka formula (208 – 0.7 × age), which is generally considered more accurate for adults, or the classic 220 – age formula.
  • Heart Rate Reserve (HRR): If you provide your Resting Heart Rate (RHR), we use the Karvonen method. This subtracts your RHR from your MHR to find your "reserve" capacity, applying intensity percentages to this reserve before adding the RHR back in. This accounts for your specific cardiovascular efficiency.

What are the Training Zones?

Once your estimated LTHR is calculated, we determine your training zones. These zones help ensure you aren't training too hard on easy days, or too easy on hard days:

  • Zone 1 (Recovery): Very light intensity used for warm-ups and active recovery. Promotes blood flow.
  • Zone 2 (Aerobic): The "all day" pace. Builds mitochondrial density and fat-burning efficiency.
  • Zone 3 (Tempo): Comfortably hard. Improves aerobic capacity but can create fatigue if overused.
  • Zone 4 (Threshold): The red line. Training here raises your LTHR, allowing you to go faster for longer.
  • Zone 5 (VO2 Max): Maximum effort sprints and intervals. Increases maximum oxygen uptake.

Improving Accuracy

To get the most out of this calculator, measure your Resting Heart Rate (RHR) first thing in the morning before getting out of bed. An accurate RHR significantly improves the estimation of your Lactate Threshold compared to using age alone.

function calculateThreshold() { // 1. Get Inputs var age = parseFloat(document.getElementById('ageInput').value); var rhr = document.getElementById('rhrInput').value; // Keep as string initially to check empty var fitnessFactor = parseFloat(document.getElementById('fitnessLevel').value); var formula = document.getElementById('formulaMethod').value; var displayArea = document.getElementById('resultsArea'); // 2. Validation if (isNaN(age) || age 110) { alert("Please enter a valid age between 10 and 110."); return; } // 3. Calculate Max Heart Rate (MHR) var mhr = 0; if (formula === 'tanaka') { // Tanaka: 208 – (0.7 * age) mhr = 208 – (0.7 * age); } else { // Standard: 220 – age mhr = 220 – age; } // Round MHR mhr = Math.round(mhr); // 4. Calculate LTHR (Estimated) var lthr = 0; var rhrValue = 0; if (rhr && !isNaN(parseFloat(rhr))) { // Use Karvonen Method / Heart Rate Reserve rhrValue = parseFloat(rhr); if (rhrValue >= mhr) { alert("Resting Heart Rate cannot be higher than Maximum Heart Rate."); return; } var hrr = mhr – rhrValue; // LTHR estimation logic: (Reserve * FitnessFactor) + Resting // FitnessFactor here acts as the % of VO2Max/HRR where threshold occurs lthr = (hrr * fitnessFactor) + rhrValue; } else { // Simple Percentage of Max HR // Adjust factor slightly because %MHR is usually higher numerically than %HRR for same intensity // E.g. 90% HRR is roughly 93-94% MHR. // We will map the fitness factor inputs (0.80 to 0.92 HRR based) to MHR percentages roughly. var mhrFactor = fitnessFactor + 0.03; // Slight bump for direct MHR calc if (mhrFactor > 0.95) mhrFactor = 0.95; // Cap it lthr = mhr * mhrFactor; } lthr = Math.round(lthr); // 5. Calculate Zones (Based on Joe Friel / TrainingPeaks LTHR zones) // Z1: 100% LTHR var z1_cap = Math.round(lthr * 0.81); var z2_cap = Math.round(lthr * 0.89); var z3_cap = Math.round(lthr * 0.93); var z4_cap = Math.round(lthr * 0.99); // usually up to LTHR, but Z4 extends slightly // 6. Output to DOM document.getElementById('displayMHR').innerText = mhr; document.getElementById('displayLTHR').innerText = lthr; var zonesHtml = "; // Zone 1 zonesHtml += ''; zonesHtml += 'Zone 1Recovery'; zonesHtml += '< 81% LTHR'; zonesHtml += 'Wait for < ' + z1_cap + ''; zonesHtml += ''; // Zone 2 zonesHtml += ''; zonesHtml += 'Zone 2Aerobic'; zonesHtml += '81% – 89%'; zonesHtml += '' + (z1_cap + 1) + ' – ' + z2_cap + ''; zonesHtml += ''; // Zone 3 zonesHtml += ''; zonesHtml += 'Zone 3Tempo'; zonesHtml += '90% – 93%'; zonesHtml += '' + (z2_cap + 1) + ' – ' + z3_cap + ''; zonesHtml += ''; // Zone 4 zonesHtml += ''; zonesHtml += 'Zone 4Sub-Threshold'; zonesHtml += '94% – 99%'; zonesHtml += '' + (z3_cap + 1) + ' – ' + z4_cap + ''; zonesHtml += ''; // Zone 5a (Super Threshold / VO2) zonesHtml += ''; zonesHtml += 'Zone 5VO2 Max'; zonesHtml += '> 100%'; zonesHtml += '> ' + z4_cap + ''; zonesHtml += ''; document.getElementById('zonesBody').innerHTML = zonesHtml; displayArea.style.display = 'block'; // Scroll to results displayArea.scrollIntoView({ behavior: 'smooth' }); }

Leave a Comment