How Does Peloton Calculate Heart Rate Zones

Peloton Heart Rate Zones Calculator .pelo-calc-container { max-width: 800px; margin: 0 auto; font-family: 'Segoe UI', Roboto, Helvetica, Arial, sans-serif; line-height: 1.6; color: #333; background: #fff; padding: 20px; border-radius: 8px; box-shadow: 0 2px 10px rgba(0,0,0,0.1); } .pelo-header { text-align: center; margin-bottom: 30px; } .pelo-header h2 { color: #1a1a1a; margin-bottom: 10px; } .pelo-calculator-box { background: #f8f9fa; padding: 25px; border-radius: 10px; border: 1px solid #e9ecef; margin-bottom: 40px; } .input-group { margin-bottom: 20px; } .input-group label { display: block; font-weight: 600; margin-bottom: 8px; color: #444; } .input-group input { width: 100%; padding: 12px; border: 1px solid #ddd; border-radius: 6px; font-size: 16px; box-sizing: border-box; /* Ensures padding doesn't affect width */ } .input-group small { color: #666; font-size: 0.85em; margin-top: 5px; display: block; } .calc-btn { width: 100%; padding: 14px; background-color: #df1c2f; /* Peloton-ish red */ color: white; border: none; border-radius: 6px; font-size: 18px; font-weight: bold; cursor: pointer; transition: background-color 0.2s; } .calc-btn:hover { background-color: #b31222; } #peloResult { margin-top: 25px; display: none; } .zone-table { width: 100%; border-collapse: collapse; margin-top: 15px; background: white; border-radius: 8px; overflow: hidden; box-shadow: 0 1px 3px rgba(0,0,0,0.1); } .zone-table th, .zone-table td { padding: 12px 15px; text-align: left; border-bottom: 1px solid #eee; } .zone-table th { background-color: #222; color: white; } .zone-color-dot { height: 12px; width: 12px; border-radius: 50%; display: inline-block; margin-right: 8px; } .z1-dot { background-color: #b2b2b2; } /* Grey */ .z2-dot { background-color: #3b87f5; } /* Blue */ .z3-dot { background-color: #50c22d; } /* Green */ .z4-dot { background-color: #fca903; } /* Orange */ .z5-dot { background-color: #ff3333; } /* Red */ .article-content { margin-top: 40px; border-top: 2px solid #eee; padding-top: 20px; } .article-content h3 { color: #222; margin-top: 25px; } .article-content p { margin-bottom: 15px; } .article-content ul { margin-bottom: 15px; padding-left: 20px; } .article-content li { margin-bottom: 8px; }

Peloton Heart Rate Zones Calculator

Enter your details below to calculate your specific heart rate training zones used in Peloton classes.

Used to calculate Max Heart Rate (220 – Age) if no custom max is provided.
Enter this if you know your actual Max HR from a test. Leave blank to use Age formula.

Your Training Zones

Estimated Max Heart Rate: bpm

Zone Intensity Heart Rate Range (bpm)

How Does Peloton Calculate Heart Rate Zones?

Understanding how Peloton calculates heart rate zones is crucial for optimizing your training with their "Strive Score" and heart rate monitor integration. Unlike Power Zones, which are based on your Functional Threshold Power (FTP), Heart Rate Zones are strictly biological.

By default, Peloton uses the standard age-predicted formula to determine your Maximum Heart Rate (MHR):

MHR = 220 – Age

Once your MHR is established, the platform divides your effort into five distinct zones based on percentages of that maximum. These zones help you understand whether you are burning fat, building endurance, or pushing your anaerobic threshold.

The 5 Heart Rate Zones Explained

Peloton (and most fitness platforms) breaks down intensity into the following ranges:

  • Zone 1 (Active Recovery): Up to 65% of MHR. This is for warm-ups, cool-downs, and very light recovery rides. It feels easy and you should be able to hold a conversation effortlessly.
  • Zone 2 (Endurance): 65% to 75% of MHR. This is the "fat burning" zone. It builds your aerobic base and allows you to ride for long durations.
  • Zone 3 (Tempo/Aerobic): 75% to 85% of MHR. This zone improves blood circulation and skeletal muscle efficiency. Breathing becomes heavier here.
  • Zone 4 (Threshold): 85% to 95% of MHR. This is hard work. You are pushing your anaerobic threshold, improving your maximum performance capacity.
  • Zone 5 (Max Effort): 95% to 100% of MHR. This is an all-out sprint effort. It can only be sustained for very short periods (usually intervals).

Why Adjust Your Max Heart Rate?

The "220 – Age" formula is a general population average. It does not account for individual genetic variance or fitness levels. A 40-year-old elite athlete may have a significantly higher max heart rate than a 40-year-old sedentary individual.

If you find that you are constantly hitting Zone 5 during moderate efforts, your setting for Max HR might be too low. Conversely, if you can barely reach Zone 3 even when gasping for air, your setting might be too high. In Peloton settings, you can manually override the calculated Max HR to ensure your Strive Score and Zone bars are accurate.

Using Heart Rate vs. Power Zones

It is important not to confuse Heart Rate Zones with Power Zones (PZ). Power Zones measure output (watts), which is an objective measure of work. Heart Rate measures your body's response to that work. Factors like caffeine, sleep, stress, and heat can elevate your heart rate even if your power output is low. For the most balanced training, many cyclists monitor both.

function calculatePeloZones() { // 1. Get Input Values var ageInput = document.getElementById('peloAge').value; var customMaxInput = document.getElementById('peloCustomMax').value; var resultDiv = document.getElementById('peloResult'); var displayMaxHR = document.getElementById('displayMaxHR'); var tbody = document.getElementById('zoneTableBody'); // 2. Parse Inputs var age = parseFloat(ageInput); var customMax = parseFloat(customMaxInput); var maxHR = 0; // 3. Logic: Determine Max HR // If custom max is provided and valid, use it. Otherwise use age formula. if (!isNaN(customMax) && customMax > 50 && customMax 0) { maxHR = 220 – age; } else { alert("Please enter a valid age or a custom max heart rate."); resultDiv.style.display = 'none'; return; } // 4. Logic: Calculate Zones (Peloton Standard Percentages) // Zone 1: 95% var z1Upper = Math.floor(maxHR * 0.65); var z2Lower = Math.ceil(maxHR * 0.65); var z2Upper = Math.floor(maxHR * 0.75); var z3Lower = Math.ceil(maxHR * 0.75); var z3Upper = Math.floor(maxHR * 0.85); var z4Lower = Math.ceil(maxHR * 0.85); var z4Upper = Math.floor(maxHR * 0.95); var z5Lower = Math.ceil(maxHR * 0.95); var z5Upper = maxHR; // 5. Build Result HTML displayMaxHR.innerHTML = maxHR; var htmlBuilder = "; // Zone 5 htmlBuilder += ''; htmlBuilder += 'Zone 5'; htmlBuilder += 'Max Effort'; htmlBuilder += '' + z5Lower + ' – ' + 'Max' + ''; htmlBuilder += ''; // Zone 4 htmlBuilder += ''; htmlBuilder += 'Zone 4'; htmlBuilder += 'Threshold'; htmlBuilder += '' + z4Lower + ' – ' + z4Upper + ''; htmlBuilder += ''; // Zone 3 htmlBuilder += ''; htmlBuilder += 'Zone 3'; htmlBuilder += 'Tempo'; htmlBuilder += '' + z3Lower + ' – ' + z3Upper + ''; htmlBuilder += ''; // Zone 2 htmlBuilder += ''; htmlBuilder += 'Zone 2'; htmlBuilder += 'Endurance'; htmlBuilder += '' + z2Lower + ' – ' + z2Upper + ''; htmlBuilder += ''; // Zone 1 htmlBuilder += ''; htmlBuilder += 'Zone 1'; htmlBuilder += 'Recovery'; htmlBuilder += '< ' + z1Upper + ''; htmlBuilder += ''; tbody.innerHTML = htmlBuilder; // 6. Show Result resultDiv.style.display = 'block'; }

Leave a Comment