Trainingpeaks Heart Rate Zone Calculator

TrainingPeaks Heart Rate Zone Calculator .tp-calculator-container { max-width: 800px; margin: 0 auto; padding: 20px; font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; background: #f9f9f9; border: 1px solid #e0e0e0; border-radius: 8px; box-shadow: 0 4px 6px rgba(0,0,0,0.05); } .tp-header { text-align: center; margin-bottom: 25px; } .tp-header h2 { margin: 0; color: #005eb8; } .tp-form-group { margin-bottom: 20px; } .tp-form-group label { display: block; margin-bottom: 8px; font-weight: 600; color: #333; } .tp-input-row { display: flex; gap: 20px; flex-wrap: wrap; } .tp-input-col { flex: 1; min-width: 200px; } .tp-form-control { width: 100%; padding: 12px; border: 1px solid #ccc; border-radius: 4px; font-size: 16px; box-sizing: border-box; } .tp-btn { background-color: #d11242; /* TrainingPeaks-ish Red */ color: white; border: none; padding: 14px 24px; font-size: 16px; font-weight: bold; border-radius: 4px; cursor: pointer; width: 100%; transition: background 0.3s; } .tp-btn:hover { background-color: #a80e35; } #tp-result-container { margin-top: 30px; display: none; } .tp-results-table { width: 100%; border-collapse: collapse; margin-top: 15px; background: white; box-shadow: 0 2px 4px rgba(0,0,0,0.05); } .tp-results-table th, .tp-results-table td { padding: 12px; text-align: left; border-bottom: 1px solid #eee; } .tp-results-table th { background-color: #005eb8; color: white; } .tp-results-table tr:nth-child(even) { background-color: #fcfcfc; } .tp-results-table tr:hover { background-color: #f0f4f8; } .zone-label { font-weight: bold; } .zone-desc { font-size: 0.9em; color: #666; } .article-content { max-width: 800px; margin: 40px auto; line-height: 1.6; color: #333; font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; } .article-content h2 { color: #005eb8; border-bottom: 2px solid #eee; padding-bottom: 10px; margin-top: 30px; } .article-content h3 { color: #333; margin-top: 25px; } .article-content ul { padding-left: 20px; } .article-content li { margin-bottom: 10px; } .info-box { background: #eef6fc; border-left: 4px solid #005eb8; padding: 15px; margin: 20px 0; }

TrainingPeaks Heart Rate Zone Calculator

Calculate your Joe Friel HR Training Zones based on Lactate Threshold (LTHR)

Running Cycling

Your Training Zones

Based on LTHR: bpm for

Zone Name Range (bpm) % of LTHR

Master Your Training with the TrainingPeaks Zone Calculator

Training by heart rate is one of the most effective ways to ensure you are stressing your body correctly to achieve specific physiological adaptations. While general formulas like "220 minus age" exist, serious athletes often turn to the methodology popularized by Joe Friel, co-founder of TrainingPeaks. This calculator uses your Lactate Threshold Heart Rate (LTHR) to determine seven precise training zones.

Why LTHR? Unlike Max Heart Rate, which changes slowly with age, your Lactate Threshold responds directly to fitness. It is the intensity at which lactate begins to accumulate in the blood faster than it can be removed. Training relative to this threshold is the gold standard for endurance performance.

How to Determine Your LTHR

Before using this calculator, you need an accurate LTHR number. You cannot estimate this; you must test for it. The most common field test recommended by Joe Friel is the 30-minute Time Trial:

  1. Warm up thoroughly for 10-15 minutes.
  2. Start a 30-minute time trial effort. You should run or ride as hard as you can sustain for the full 30 minutes. Pacing is key—don't start too fast and fade.
  3. Ten minutes into the effort, hit the "Lap" button on your heart rate monitor.
  4. Continue hard for the final 20 minutes.
  5. Your average heart rate for that final 20 minutes is your LTHR.

Once you have this number, enter it into the calculator above to define your zones.

Understanding the 7 Zones

The TrainingPeaks/Friel system breaks intensity down further than the traditional 5-zone model to target specific energy systems:

Zone 1: Recovery

Very easy effort. Used for warm-ups, cool-downs, and recovery between hard intervals. This promotes blood flow without inducing fatigue.

Zone 2: Aerobic Endurance

The foundation of endurance training. This is the "all day" pace used for long rides or runs to build mitochondrial density and fat-burning efficiency.

Zone 3: Tempo

Often called "grey zone" training. It requires focus to maintain but isn't hard enough to elicit threshold adaptations, nor easy enough for recovery. It is useful for specific muscular endurance sessions.

Zone 4: Sub-Threshold

Just below your LTHR. Training here improves your ability to sustain high intensities for longer durations without "going red."

Zone 5a: Super-Threshold

Slightly above LTHR. Intervals here lift your threshold ceiling, allowing you to go faster before lactate accumulation becomes a limiter.

Zone 5b: Aerobic Capacity (VO2 Max)

Very hard intensity. These intervals are short (2-8 minutes) and painful, designed to increase the maximum amount of oxygen your body can utilize.

Zone 5c: Anaerobic Capacity

Maximal sprinting effort. Sustainable for only seconds. This targets neuromuscular power.

Running vs. Cycling Zones

You will notice the calculator asks for your sport. This is because heart rates are typically higher while running than cycling due to the weight-bearing nature of running and the involvement of more muscle mass. Joe Friel's formulas adjust the percentages slightly to account for these physiological differences.

function calculateTpZones() { var lthr = document.getElementById('lthrInput').value; var sport = document.getElementById('sportSelect').value; var resultContainer = document.getElementById('tp-result-container'); var tableBody = document.getElementById('zonesTableBody'); var displayLthr = document.getElementById('displayLthr'); var displaySport = document.getElementById('displaySport'); // Validation if (!lthr || isNaN(lthr)) { alert("Please enter a valid number for your LTHR."); return; } lthr = parseFloat(lthr); if (lthr 250) { alert("Please enter a realistic Heart Rate (between 30 and 250 bpm)."); return; } // Clear previous results tableBody.innerHTML = "; displayLthr.innerText = lthr; displaySport.innerText = sport === 'run' ? "Running" : "Cycling"; // Define Zone Data Structure var zones = []; // Formulas based on Joe Friel / TrainingPeaks methodology if (sport === 'run') { // Running Zones // Z1: 106% zones = [ { id: "1", name: "Recovery", min: 0, max: Math.floor(lthr * 0.85), pct: " 106%" } ]; } else { // Cycling Zones // Z1: 106% zones = [ { id: "1", name: "Recovery", min: 0, max: Math.floor(lthr * 0.81), pct: " 106%" } ]; } // Generate Table HTML for (var i = 0; i < zones.length; i++) { var zone = zones[i]; var rangeStr = ""; if (zone.id === "1") { rangeStr = " " + zone.min; } else { rangeStr = zone.min + " – " + zone.max; } var row = "" + "Zone " + zone.id + "" + "" + zone.name + "" + "" + rangeStr + "" + "" + zone.pct + "" + ""; tableBody.innerHTML += row; } // Show Results resultContainer.style.display = 'block'; }

Leave a Comment