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 += '