How to Calculate Threshold Heart Rate Cycling

.lthr-container { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif; max-width: 800px; margin: 20px auto; padding: 25px; border: 1px solid #e1e1e1; border-radius: 12px; background-color: #ffffff; box-shadow: 0 4px 6px rgba(0,0,0,0.05); } .lthr-header { text-align: center; margin-bottom: 30px; } .lthr-header h2 { color: #d32f2f; margin-bottom: 10px; } .lthr-input-group { margin-bottom: 20px; } .lthr-input-group label { display: block; font-weight: 600; margin-bottom: 8px; color: #333; } .lthr-input-group input { width: 100%; padding: 12px; border: 2px solid #ddd; border-radius: 6px; font-size: 16px; box-sizing: border-box; } .lthr-input-group input:focus { border-color: #d32f2f; outline: none; } .lthr-btn { width: 100%; background-color: #d32f2f; color: white; padding: 15px; border: none; border-radius: 6px; font-size: 18px; font-weight: bold; cursor: pointer; transition: background 0.3s; } .lthr-btn:hover { background-color: #b71c1c; } .lthr-result { margin-top: 30px; padding: 20px; background-color: #f9f9f9; border-radius: 8px; display: none; } .lthr-value-box { text-align: center; font-size: 24px; font-weight: bold; color: #d32f2f; margin-bottom: 20px; border-bottom: 2px solid #eee; padding-bottom: 10px; } .zone-table { width: 100%; border-collapse: collapse; } .zone-table th, .zone-table td { padding: 10px; text-align: left; border-bottom: 1px solid #eee; } .zone-table th { background-color: #f1f1f1; font-size: 14px; } .zone-tag { display: inline-block; padding: 4px 8px; border-radius: 4px; color: white; font-size: 12px; font-weight: bold; width: 60px; text-align: center; } .z1 { background-color: #9e9e9e; } .z2 { background-color: #4caf50; } .z3 { background-color: #2196f3; } .z4 { background-color: #ff9800; } .z5 { background-color: #f44336; } .lthr-article { margin-top: 40px; line-height: 1.6; color: #444; } .lthr-article h3 { color: #222; border-left: 4px solid #d32f2f; padding-left: 10px; margin-top: 25px; }

Cycling LTHR Calculator

Determine your Functional Threshold Heart Rate and Training Zones

Perform an all-out 20-minute effort and enter your average heart rate for that period.
Estimated LTHR: 0 bpm
Zone Description Range (bpm)
Zone 1 Active Recovery
Zone 2 Aerobic / Endurance
Zone 3 Tempo
Zone 4 Lactate Threshold
Zone 5a Super-Threshold
Zone 5b Aerobic Capacity

What is Cycling Threshold Heart Rate (LTHR)?

Lactate Threshold Heart Rate (LTHR) is the maximum intensity a cyclist can maintain for approximately one hour without a rapid accumulation of lactic acid in the bloodstream. Unlike Maximum Heart Rate, which is largely determined by genetics and age, LTHR is a reflection of your current fitness level and is the most accurate metric for setting cycling training zones.

How to Calculate Your Threshold Heart Rate

The most common and accurate field test for cyclists is the 20-minute time trial. Here is the protocol:

  1. Warm-up: 15-20 minutes of easy spinning with 2-3 short 1-minute bursts of high intensity.
  2. The Test: Ride at your maximum sustainable effort for 20 minutes. This should be a steady, consistent effort (pacing is key).
  3. The Formula: Take your average heart rate for that 20-minute block and multiply it by 0.95 (95%).

The resulting number is your estimated LTHR. This 5% reduction accounts for the fact that a 20-minute effort is slightly higher than what you could sustain for a full 60-minute hour record.

Understanding Your Cycling Training Zones

Once you have your LTHR, you can define your training intensity using the Joe Friel method (as used in the calculator above):

  • Zone 1 (Recovery): Less than 81% of LTHR. Used for easy spins and active recovery between hard days.
  • Zone 2 (Endurance): 81% to 89% of LTHR. This is the "all day" pace where you build your aerobic engine.
  • Zone 3 (Tempo): 90% to 93% of LTHR. A challenging pace that requires focus but is not quite "hard."
  • Zone 4 (Threshold): 94% to 99% of LTHR. This is where you increase your threshold and improve time trial performance.
  • Zone 5 (VO2 Max): 100% and above. Used for short, high-intensity intervals to improve top-end power.

Example Calculation

If your average heart rate during a 20-minute test was 180 bpm:

Calculation: 180 x 0.95 = 171 bpm.

Your LTHR would be 171. Your Zone 2 (Endurance) range would be 138 – 152 bpm (81-89% of 171).

function calculateLTHR() { var avgHr = parseFloat(document.getElementById("avgHr").value); var resultDiv = document.getElementById("lthrResult"); if (isNaN(avgHr) || avgHr <= 0) { alert("Please enter a valid average heart rate."); return; } // LTHR is typically 95% of 20-min average HR var lthr = Math.round(avgHr * 0.95); document.getElementById("lthrValue").innerText = lthr; // Joe Friel Cycling Zones // Z1: < 81% // Z2: 81-89% // Z3: 90-93% // Z4: 94-99% // Z5a: 100-102% // Z5b: 103-106% var z1max = Math.round(lthr * 0.80); var z2min = Math.round(lthr * 0.81); var z2max = Math.round(lthr * 0.89); var z3min = Math.round(lthr * 0.90); var z3max = Math.round(lthr * 0.93); var z4min = Math.round(lthr * 0.94); var z4max = Math.round(lthr * 0.99); var z5amin = Math.round(lthr * 1.00); var z5amax = Math.round(lthr * 1.02); var z5bmin = Math.round(lthr * 1.03); document.getElementById("z1range").innerText = "Below " + z1max; document.getElementById("z2range").innerText = z2min + " – " + z2max; document.getElementById("z3range").innerText = z3min + " – " + z3max; document.getElementById("z4range").innerText = z4min + " – " + z4max; document.getElementById("z5arange").innerText = z5amin + " – " + z5amax; document.getElementById("z5brange").innerText = "Above " + z5bmin; resultDiv.style.display = "block"; // Smooth scroll to results resultDiv.scrollIntoView({ behavior: 'smooth' }); }

Leave a Comment