Threshold Heart Rate Zone Calculator

Threshold Heart Rate Zone Calculator body { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif; line-height: 1.6; color: #333; max-width: 800px; margin: 0 auto; padding: 20px; } .calculator-card { background: #fdfdfd; border: 1px solid #e0e0e0; border-radius: 8px; padding: 30px; box-shadow: 0 4px 6px rgba(0,0,0,0.05); margin-bottom: 40px; } .calc-title { text-align: center; color: #2c3e50; margin-bottom: 25px; font-size: 24px; font-weight: 700; } .input-group { margin-bottom: 20px; } .input-group label { display: block; margin-bottom: 8px; font-weight: 600; color: #555; } .input-group input, .input-group select { width: 100%; padding: 12px; border: 1px solid #ccc; border-radius: 4px; font-size: 16px; box-sizing: border-box; } .input-group input:focus, .input-group select:focus { border-color: #d32f2f; outline: none; box-shadow: 0 0 0 3px rgba(211, 47, 47, 0.1); } .calculate-btn { width: 100%; padding: 15px; background-color: #d32f2f; color: white; border: none; border-radius: 4px; font-size: 18px; font-weight: 700; cursor: pointer; transition: background-color 0.2s; } .calculate-btn:hover { background-color: #b71c1c; } .result-section { margin-top: 30px; display: none; border-top: 2px solid #eee; padding-top: 20px; } .result-table { width: 100%; border-collapse: collapse; margin-top: 15px; } .result-table th, .result-table td { padding: 12px; text-align: left; border-bottom: 1px solid #eee; } .result-table th { background-color: #f9f9f9; font-weight: 700; color: #444; } .zone-tag { display: inline-block; padding: 4px 8px; border-radius: 4px; font-size: 12px; font-weight: 700; color: white; } .z1 { background-color: #9e9e9e; } .z2 { background-color: #4caf50; } .z3 { background-color: #2196f3; } .z4 { background-color: #ff9800; } .z5a { background-color: #f44336; } .z5b { background-color: #c62828; } .z5c { background-color: #880e4f; } .article-content { background: #fff; padding: 20px 0; } .article-content h2 { color: #2c3e50; margin-top: 30px; } .article-content p { margin-bottom: 15px; } .article-content ul { margin-bottom: 20px; padding-left: 20px; } .article-content li { margin-bottom: 8px; } .info-box { background-color: #e3f2fd; border-left: 5px solid #2196f3; padding: 15px; margin: 20px 0; } @media (max-width: 600px) { .calculator-card { padding: 15px; } }
Threshold Heart Rate Zone Calculator
Average HR from the last 20 mins of a 30-min all-out effort.
Running (Joe Friel) Cycling (Joe Friel)

Your Training Zones

Zone Intensity Range (BPM)
Pro Tip: Re-test your LTHR every 6-8 weeks to adjust your zones as your fitness improves.
function calculateZones() { var lthr = document.getElementById('lthrInput').value; var sport = document.getElementById('sportType').value; var resultSection = document.getElementById('resultSection'); var tableBody = document.getElementById('zoneTableBody'); // Validation if (!lthr || isNaN(lthr) || lthr 250) { alert("Please enter a valid Lactate Threshold Heart Rate (between 40 and 250 bpm)."); return; } lthr = parseInt(lthr); var zones = []; // Friel's Zones Logic if (sport === 'running') { // Zone 1: 106% zones = [ { name: "Zone 1", desc: "Recovery", css: "z1", low: 0, high: Math.floor(lthr * 0.85) – 1 }, { name: "Zone 2", desc: "Aerobic", css: "z2", low: Math.floor(lthr * 0.85), high: Math.floor(lthr * 0.89) }, { name: "Zone 3", desc: "Tempo", css: "z3", low: Math.ceil(lthr * 0.90), high: Math.floor(lthr * 0.94) }, { name: "Zone 4", desc: "SubThreshold", css: "z4", low: Math.ceil(lthr * 0.95), high: Math.floor(lthr * 0.99) }, { name: "Zone 5a", desc: "SuperThreshold", css: "z5a", low: lthr, high: Math.floor(lthr * 1.02) }, { name: "Zone 5b", desc: "Aerobic Capacity", css: "z5b", low: Math.ceil(lthr * 1.03), high: Math.floor(lthr * 1.06) }, { name: "Zone 5c", desc: "Anaerobic", css: "z5c", low: Math.ceil(lthr * 1.07), high: "Max" } ]; } else { // Cycling (Friel) // Zone 1: 106% zones = [ { name: "Zone 1", desc: "Recovery", css: "z1", low: 0, high: Math.floor(lthr * 0.81) – 1 }, { name: "Zone 2", desc: "Aerobic", css: "z2", low: Math.floor(lthr * 0.81), high: Math.floor(lthr * 0.89) }, { name: "Zone 3", desc: "Tempo", css: "z3", low: Math.ceil(lthr * 0.90), high: Math.floor(lthr * 0.93) }, { name: "Zone 4", desc: "SubThreshold", css: "z4", low: Math.ceil(lthr * 0.94), high: Math.floor(lthr * 0.99) }, { name: "Zone 5a", desc: "SuperThreshold", css: "z5a", low: lthr, high: Math.floor(lthr * 1.02) }, { name: "Zone 5b", desc: "Aerobic Capacity", css: "z5b", low: Math.ceil(lthr * 1.03), high: Math.floor(lthr * 1.06) }, { name: "Zone 5c", desc: "Anaerobic", css: "z5c", low: Math.ceil(lthr * 1.07), high: "Max" } ]; } var html = ""; for (var i = 0; i < zones.length; i++) { var rangeStr = ""; if (zones[i].low === 0) { rangeStr = " " + (zones[i].low – 1) + " bpm"; } else { rangeStr = zones[i].low + " – " + zones[i].high + " bpm"; } html += ""; html += "" + zones[i].name + ""; html += "" + zones[i].desc + ""; html += "" + rangeStr + ""; html += ""; } tableBody.innerHTML = html; resultSection.style.display = "block"; }

Understanding Threshold Heart Rate Training

Training with a heart rate monitor is one of the most effective ways to improve endurance performance, but only if your zones are accurate. Traditional formulas based on age (like 220 minus age) are notoriously inaccurate for athletes. The Lactate Threshold Heart Rate (LTHR) method is the gold standard for setting personalized training zones.

What is LTHR?

Your Lactate Threshold is the intensity at which lactate begins to accumulate in the blood faster than it can be removed. This is often described as the "redline"—the highest intensity you can sustain for about an hour. By basing your zones on this physiological turning point, you ensure that "easy" runs are truly easy and "hard" intervals are sufficiently hard.

How to Determine Your LTHR

You do not need a lab test to find your LTHR. You can perform a simple field test on your own:

  • Step 1: Warm up thoroughly for 10–15 minutes.
  • Step 2: Start a 30-minute time trial effort. This should be a race-pace effort (all-out but steady).
  • Step 3: 10 minutes into the effort, hit the "Lap" button on your heart rate monitor.
  • Step 4: Continue for the final 20 minutes.
  • Step 5: Your average heart rate for those final 20 minutes is your LTHR.

Input that number into the calculator above to generate your Joe Friel training zones.

Zone Descriptions

  • Zone 1 (Recovery): Used for warm-ups, cool-downs, and active recovery. promotes blood flow to aid repair.
  • Zone 2 (Aerobic): The "bread and butter" of endurance training. Builds mitochondrial density and fat-burning efficiency. You should be able to hold a conversation here.
  • Zone 3 (Tempo): The "gray zone." Often too hard for easy days but not hard enough for quality interval work. Use sparingly or for specific tempo workouts.
  • Zone 4 (SubThreshold): Just below your redline. Improves your ability to sustain high speeds.
  • Zone 5a-c (SupraThreshold/Capacity): Intervals done above your threshold to improve VO2 max and anaerobic power. These are very painful and short in duration.
Note on Accuracy: While field tests are highly effective, factors like fatigue, caffeine, temperature, and dehydration can affect heart rate. Try to perform your test under normal conditions and re-test every few months.
{ "@context": "https://schema.org", "@type": "HowTo", "name": "How to Calculate Threshold Heart Rate Zones", "description": "A guide and calculator for determining heart rate training zones based on Lactate Threshold Heart Rate (LTHR).", "step": [ { "@type": "HowToStep", "name": "Perform Field Test", "text": "Run or cycle a 30-minute time trial. Press the lap button 10 minutes in." }, { "@type": "HowToStep", "name": "Calculate Average HR", "text": "Find the average heart rate for the final 20 minutes of the effort." }, { "@type": "HowToStep", "name": "Input LTHR", "text": "Enter your LTHR into the calculator to see your 7 training zones." } ] }

Leave a Comment