Joe Friel Heart Rate Zones Calculator

.friel-calc-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); } .friel-calc-header { text-align: center; margin-bottom: 25px; } .friel-calc-header h2 { color: #2c3e50; margin-bottom: 10px; } .friel-calc-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; margin-bottom: 20px; } @media (max-width: 600px) { .friel-calc-grid { grid-template-columns: 1fr; } } .friel-input-group { display: flex; flex-direction: column; } .friel-input-group label { font-weight: 600; margin-bottom: 8px; color: #34495e; } .friel-input-group input, .friel-input-group select { padding: 12px; border: 2px solid #ddd; border-radius: 6px; font-size: 16px; transition: border-color 0.3s; } .friel-input-group input:focus { border-color: #3498db; outline: none; } .friel-calc-btn { width: 100%; padding: 15px; background-color: #27ae60; color: white; border: none; border-radius: 6px; font-size: 18px; font-weight: bold; cursor: pointer; transition: background-color 0.3s; } .friel-calc-btn:hover { background-color: #219150; } .friel-results { margin-top: 30px; display: none; } .friel-table { width: 100%; border-collapse: collapse; margin-top: 15px; } .friel-table th, .friel-table td { padding: 12px; text-align: left; border-bottom: 1px solid #eee; } .friel-table th { background-color: #f8f9fa; color: #2c3e50; } .zone-pill { display: inline-block; padding: 4px 10px; border-radius: 4px; font-weight: bold; color: white; font-size: 12px; min-width: 60px; text-align: center; } .z1 { background-color: #95a5a6; } .z2 { background-color: #3498db; } .z3 { background-color: #2ecc71; } .z4 { background-color: #f1c40f; color: #333; } .z5a { background-color: #e67e22; } .z5b { background-color: #e74c3c; } .z5c { background-color: #c0392b; } .friel-content { margin-top: 40px; line-height: 1.6; color: #444; } .friel-content h3 { color: #2c3e50; border-left: 5px solid #27ae60; padding-left: 15px; margin-top: 25px; }

Joe Friel Heart Rate Zones Calculator

Calculate your specific training zones based on your Lactate Threshold Heart Rate (LTHR)

Cycling Running

Your Personalized Training Zones

Zone Intensity Heart Rate Range

What is the Joe Friel Training Method?

Joe Friel is a world-renowned endurance coach and author of The Training Bible series. Unlike traditional age-based formulas (like 220 minus age), Friel's method utilizes your Lactate Threshold Heart Rate (LTHR). This is the maximum average heart rate you can maintain for approximately one hour of intense effort.

How to Find Your LTHR

To use this calculator accurately, you need to perform a field test. The most common test is a 30-minute solo time trial at maximal effort. Your average heart rate for the last 20 minutes of that 30-minute effort is your estimated LTHR.

Understanding the Zones

  • Zone 1 (Recovery): Used for easy recovery rides or runs. Very light effort.
  • Zone 2 (Aerobic): This is the "base" training zone. It builds endurance and improves fat metabolism.
  • Zone 3 (Tempo): A moderate intensity where conversation becomes difficult.
  • Zone 4 (Sub-Threshold): Just below your lactate threshold. Hard effort.
  • Zone 5a (Super-Threshold): Just above threshold, used for increasing LTHR.
  • Zone 5b (Aerobic Capacity): High-intensity intervals to improve VO2 Max.
  • Zone 5c (Anaerobic Capacity): Maximal efforts, short sprints.

Example Calculation

If a cyclist has an LTHR of 170 BPM:

  • Zone 2 (Aerobic) would be 138 to 151 BPM (81% – 89% of LTHR).
  • Zone 4 (Threshold) would be 160 to 168 BPM (94% – 99% of LTHR).
function calculateFrielZones() { var lthr = parseFloat(document.getElementById('lthrInput').value); var sport = document.getElementById('sportType').value; var tableBody = document.getElementById('frielTableBody'); var resultsDiv = document.getElementById('frielResults'); if (isNaN(lthr) || lthr <= 0) { alert("Please enter a valid LTHR value."); return; } var zones = []; if (sport === 'cycling') { zones = [ { name: 'Zone 1', label: 'Recovery', min: 0, max: 0.81, class: 'z1' }, { name: 'Zone 2', label: 'Aerobic', min: 0.81, max: 0.89, class: 'z2' }, { name: 'Zone 3', label: 'Tempo', min: 0.90, max: 0.93, class: 'z3' }, { name: 'Zone 4', label: 'Sub-Threshold', min: 0.94, max: 0.99, class: 'z4' }, { name: 'Zone 5a', label: 'Super-Threshold', min: 1.00, max: 1.02, class: 'z5a' }, { name: 'Zone 5b', label: 'Aerobic Capacity', min: 1.03, max: 1.06, class: 'z5b' }, { name: 'Zone 5c', label: 'Anaerobic Capacity', min: 1.06, max: 1.50, class: 'z5c' } ]; } else { // Running Zones zones = [ { name: 'Zone 1', label: 'Recovery', min: 0, max: 0.85, class: 'z1' }, { name: 'Zone 2', label: 'Aerobic', min: 0.85, max: 0.89, class: 'z2' }, { name: 'Zone 3', label: 'Tempo', min: 0.90, max: 0.94, class: 'z3' }, { name: 'Zone 4', label: 'Sub-Threshold', min: 0.95, max: 0.99, class: 'z4' }, { name: 'Zone 5a', label: 'Super-Threshold', min: 1.00, max: 1.02, class: 'z5a' }, { name: 'Zone 5b', label: 'Aerobic Capacity', min: 1.03, max: 1.06, class: 'z5b' }, { name: 'Zone 5c', label: 'Anaerobic Capacity', min: 1.06, max: 1.50, class: 'z5c' } ]; } var html = ""; for (var i = 0; i < zones.length; i++) { var z = zones[i]; var lowRange = Math.round(lthr * z.min); var highRange = Math.round(lthr * z.max); var displayRange = ""; if (z.name === 'Zone 1') { displayRange = "Below " + highRange + " BPM"; } else if (z.name === 'Zone 5c') { displayRange = "Above " + lowRange + " BPM"; } else { displayRange = lowRange + " – " + highRange + " BPM"; } html += ""; html += "" + z.name + ""; html += "" + z.label + ""; html += "" + displayRange + ""; html += ""; } tableBody.innerHTML = html; resultsDiv.style.display = "block"; resultsDiv.scrollIntoView({ behavior: 'smooth' }); }

Leave a Comment