Calculate Heart Rate Zones Cycling

Cycling Heart Rate Zones 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-container { background-color: #f8f9fa; border: 1px solid #e9ecef; border-radius: 8px; padding: 30px; margin-bottom: 40px; box-shadow: 0 4px 6px rgba(0,0,0,0.05); } .form-group { margin-bottom: 20px; } label { display: block; margin-bottom: 8px; font-weight: 600; color: #2c3e50; } input[type="number"], select { width: 100%; padding: 12px; border: 1px solid #ced4da; border-radius: 4px; font-size: 16px; box-sizing: border-box; } .btn-calculate { display: block; width: 100%; padding: 14px; background-color: #007bff; color: white; border: none; border-radius: 4px; font-size: 18px; font-weight: bold; cursor: pointer; transition: background-color 0.2s; } .btn-calculate:hover { background-color: #0056b3; } #cyclingResult { margin-top: 30px; display: none; } .zones-table { width: 100%; border-collapse: collapse; margin-top: 20px; background: white; box-shadow: 0 1px 3px rgba(0,0,0,0.1); } .zones-table th, .zones-table td { padding: 12px 15px; text-align: left; border-bottom: 1px solid #e9ecef; } .zones-table th { background-color: #343a40; color: white; } .zone-1 { border-left: 5px solid #8e8e8e; } /* Gray – Active Recovery */ .zone-2 { border-left: 5px solid #3498db; } /* Blue – Endurance */ .zone-3 { border-left: 5px solid #2ecc71; } /* Green – Tempo */ .zone-4 { border-left: 5px solid #f1c40f; } /* Yellow – Threshold */ .zone-5 { border-left: 5px solid #e74c3c; } /* Red – VO2 Max */ .calculation-details { background-color: #e8f4fd; padding: 15px; border-radius: 4px; margin-bottom: 20px; font-size: 14px; color: #0c5460; } h2 { color: #2c3e50; border-bottom: 2px solid #007bff; padding-bottom: 10px; margin-top: 40px; } h3 { color: #34495e; margin-top: 25px; } .info-box { background: #fff3cd; border-left: 4px solid #ffc107; padding: 15px; margin: 20px 0; }

Cycling Heart Rate Zones Calculator

Used to estimate Max Heart Rate if MHR is unknown.
Leave blank to estimate based on age (220 – Age).
Required for Karvonen formula (more accurate).
Karvonen (Heart Rate Reserve) – Recommended Standard (% of Max HR) – Simple
function calculateCyclingZones() { var ageInput = document.getElementById('inputAge').value; var maxHRInput = document.getElementById('inputMaxHR').value; var restingHRInput = document.getElementById('inputRestingHR').value; var method = document.getElementById('calcMethod').value; var resultDiv = document.getElementById('cyclingResult'); // Validation and Variable Setup var age = parseFloat(ageInput); var maxHR = parseFloat(maxHRInput); var restingHR = parseFloat(restingHRInput); var calculatedMaxHR = false; // Determine Max HR if (isNaN(maxHR) || maxHR < 50) { if (isNaN(age) || age < 1) { alert("Please enter either your Max Heart Rate or your Age."); return; } maxHR = 220 – age; calculatedMaxHR = true; } // Logic branching based on method var zones = []; var formulaUsed = ""; if (method === 'karvonen') { if (isNaN(restingHR) || restingHR < 30) { alert("Resting Heart Rate is required for the Karvonen method. Please enter it or switch to the Standard method."); return; } // Karvonen Formula: TargetHR = ((MaxHR – RestingHR) * %Intensity) + RestingHR var hrr = maxHR – restingHR; formulaUsed = "Karvonen Formula (Heart Rate Reserve)"; zones = [ { name: "Zone 1: Active Recovery", minPct: 0.50, maxPct: 0.60, desc: "Very light intensity, used for warming up or cooling down." }, { name: "Zone 2: Endurance", minPct: 0.60, maxPct: 0.70, desc: "All-day pace, builds aerobic base and fat burning." }, { name: "Zone 3: Tempo", minPct: 0.70, maxPct: 0.80, desc: "Comfortably hard, improves aerobic efficiency." }, { name: "Zone 4: Threshold", minPct: 0.80, maxPct: 0.90, desc: "Sustainable for 10-60 mins, raises lactate threshold." }, { name: "Zone 5: VO2 Max", minPct: 0.90, maxPct: 1.00, desc: "Maximum effort, very short intervals (1-5 mins)." } ]; // Calculate actual BPMs for (var i = 0; i < zones.length; i++) { zones[i].minBpm = Math.round((hrr * zones[i].minPct) + restingHR); zones[i].maxBpm = Math.round((hrr * zones[i].maxPct) + restingHR); } } else { // Standard Formula: TargetHR = MaxHR * %Intensity formulaUsed = "Standard Formula (% of Max HR)"; zones = [ { name: "Zone 1: Active Recovery", minPct: 0.50, maxPct: 0.60, desc: "Very light intensity." }, { name: "Zone 2: Endurance", minPct: 0.60, maxPct: 0.70, desc: "Base training intensity." }, { name: "Zone 3: Tempo", minPct: 0.70, maxPct: 0.80, desc: "Aerobic fitness building." }, { name: "Zone 4: Threshold", minPct: 0.80, maxPct: 0.90, desc: "Anaerobic threshold training." }, { name: "Zone 5: VO2 Max", minPct: 0.90, maxPct: 1.00, desc: "Maximum performance capacity." } ]; for (var i = 0; i < zones.length; i++) { zones[i].minBpm = Math.round(maxHR * zones[i].minPct); zones[i].maxBpm = Math.round(maxHR * zones[i].maxPct); } } // Generate Output HTML var outputHTML = '
'; outputHTML += 'Reference Data:'; outputHTML += 'Max Heart Rate: ' + maxHR + ' BPM' + (calculatedMaxHR ? ' (Estimated from Age)' : ") + "; if (method === 'karvonen') { outputHTML += 'Resting Heart Rate: ' + restingHR + ' BPM'; outputHTML += 'Heart Rate Reserve (HRR): ' + (maxHR – restingHR) + ' BPM'; } outputHTML += 'Method: ' + formulaUsed; outputHTML += '
'; outputHTML += ''; outputHTML += ''; outputHTML += ''; for (var j = 0; j < zones.length; j++) { var zoneClass = "zone-" + (j + 1); outputHTML += ''; outputHTML += ''; outputHTML += ''; outputHTML += ''; outputHTML += ''; outputHTML += ''; } outputHTML += '
ZoneIntensity %Range (BPM)Focus
' + zones[j].name + '' + Math.round(zones[j].minPct * 100) + '% – ' + Math.round(zones[j].maxPct * 100) + '%' + zones[j].minBpm + ' – ' + zones[j].maxBpm + ' bpm' + zones[j].desc + '
'; resultDiv.innerHTML = outputHTML; resultDiv.style.display = 'block'; }

Mastering Your Training: Understanding Cycling Heart Rate Zones

Cycling is as much about data as it is about pedal power. To maximize fitness gains and avoid overtraining, cyclists rely on Heart Rate (HR) training zones. By training in specific zones, you target specific physiological systems, from fat metabolism in Zone 2 to anaerobic capacity in Zone 5.

The Importance of the Calculation Method

This calculator offers two distinct methods for determining your zones:

  • The Standard Method (% of Max HR): This is a simplified approach that calculates zones purely as a percentage of your Maximum Heart Rate. While easier to calculate, it often underestimates the effort required for fit athletes because it assumes a resting heart rate of zero.
  • The Karvonen Formula (Heart Rate Reserve): This is the preferred method for cyclists. It takes your Resting Heart Rate (RHR) into account. By calculating your "Heart Rate Reserve" (Max HR minus Resting HR), the zones are scaled to your actual working capacity. This results in more accurate training ranges, particularly for Zone 1 and Zone 2 endurance rides.

Breakdown of the 5 Cycling Zones

Zone 1: Active Recovery (< 60%)

Feeling: Very easy. You can converse effortlessly.

Purpose: Used for recovery rides, warming up, and cooling down. This zone promotes blood flow to flush out metabolic waste products like lactate without inducing fatigue.

Zone 2: Endurance (60% – 70%)

Feeling: Comfortable but steady. You can hold a conversation, but your breathing is rhythmic.

Purpose: This is the "bread and butter" of cycling training. Riding in Zone 2 builds mitochondrial density, improves fat oxidation (burning fat for fuel), and builds the capillary network in your muscles. Professional cyclists spend 70-80% of their training time here.

Zone 3: Tempo (70% – 80%)

Feeling: "Comfortably hard." Conversation is possible but broken.

Purpose: Often called the "grey zone," this improves aerobic efficiency and muscle glycogen storage. While beneficial, spending too much time here can cause fatigue without the specific benefits of high-intensity intervals.

Zone 4: Lactate Threshold (80% – 90%)

Feeling: Hard. Conversation is limited to single words. Your legs burn.

Purpose: This is the intensity you can sustain for a long time trial (around 1 hour). Training here raises your Functional Threshold Power (FTP), allowing you to ride faster for longer before lactate accumulation forces you to slow down.

Zone 5: VO2 Max (90% – 100%)

Feeling: Maximum effort. Gasping for air.

Purpose: These are short, intense efforts (1 to 5 minutes) designed to increase the maximum amount of oxygen your body can utilize. This improves your top-end power for attacks, sprints, and short climbs.

Pro Tip: Your Maximum Heart Rate declines with age, but your fitness level is reflected in your Resting Heart Rate. To get the most accurate results, measure your Resting HR first thing in the morning before getting out of bed.

Leave a Comment