Rate of Perceived Exertion Calculator

Rate of Perceived Exertion (RPE) Calculator

Estimate your exercise intensity and target heart rate based on how you feel.

Original Borg Scale (6-20) Modified Scale (1-10)

For the 6-20 scale, 6 is no effort and 20 is maximum effort.

Your Results

Perceived Intensity
Estimated Heart Rate
% of Max Heart Rate
Training Zone

Understanding Rate of Perceived Exertion (RPE)

The Rate of Perceived Exertion (RPE) is a subjective measure of how hard you feel your body is working during physical activity. It is based on physical sensations like increased heart rate, increased respiration, muscle fatigue, and sweating. While subjective, RPE is highly correlated with actual physiological markers like heart rate and blood lactate levels.

The Two Main Scales

  • The Borg Scale (6-20): Developed by Gunnar Borg, this scale roughly corresponds to heart rate. For example, an RPE of 13 multiplied by 10 is approximately 130 beats per minute.
  • The Modified Scale (1-10): A more intuitive scale often used in modern strength training and cardio where 1 is sitting on the couch and 10 is absolute failure.

RPE Training Examples

RPE (1-10) Effort Level Description
2-3 Light Easy to breathe and maintain conversation.
4-6 Moderate Breathing heavily but can still talk.
7-8 Vigorous Borderline uncomfortable. Short sentences only.
9-10 Maximal Cannot talk. Gasping for air. All-out effort.

Why Use an RPE Calculator?

RPE is an excellent tool for "Autoregulation." This means adjusting your workout based on how your body feels on a specific day. If you are stressed or poorly rested, your heart rate might be higher than usual; RPE allows you to scale back the intensity to match your body's current capacity without relying solely on rigid numbers.

function calculateRPE() { var age = parseFloat(document.getElementById('userAge').value); var scale = document.getElementById('scaleType').value; var rpe = parseFloat(document.getElementById('rpeValue').value); var resultsDiv = document.getElementById('rpeResults'); var intensityEl = document.getElementById('intensityLevel'); var hrEl = document.getElementById('estimatedHR'); var maxHREl = document.getElementById('percentMaxHR'); var zoneEl = document.getElementById('trainingZone'); var descEl = document.getElementById('rpeDescription'); if (isNaN(age) || isNaN(rpe)) { alert("Please enter valid numbers for age and RPE."); return; } var borgValue = 0; if (scale === "1-10") { // Map 1-10 to 6-20 approximately // 1=6, 10=20 -> Formula: ((rpe-1)/9 * 14) + 6 borgValue = ((rpe – 1) / 9 * 14) + 6; } else { borgValue = rpe; } // Limit Borg scale bounds if (borgValue 20) borgValue = 20; var estHR = Math.round(borgValue * 10); var maxHR = 220 – age; var percentMax = Math.round((estHR / maxHR) * 100); var intensity = ""; var description = ""; var zone = ""; if (borgValue < 9) { intensity = "Very Light"; zone = "Zone 1 (Recovery)"; description = "This feels like a gentle walk. You can sing or carry on a full conversation easily."; } else if (borgValue < 12) { intensity = "Light"; zone = "Zone 2 (Aerobic Base)"; description = "Comfortable pace. Breathing is slightly elevated but rhythmic. Easy to talk."; } else if (borgValue < 14) { intensity = "Moderate"; zone = "Zone 3 (Tempo)"; description = "You are working. Breathing is deep. Can speak in full sentences but requires effort."; } else if (borgValue < 17) { intensity = "Hard / Vigorous"; zone = "Zone 4 (Threshold)"; description = "High intensity. Breathing is heavy. Can only speak in short phrases or broken words."; } else { intensity = "Maximal"; zone = "Zone 5 (Anaerobic)"; description = "Complete exhaustion. Cannot speak. Sustainable for only a very short duration."; } intensityEl.innerHTML = intensity; hrEl.innerHTML = estHR + " BPM"; maxHREl.innerHTML = percentMax + "%"; zoneEl.innerHTML = zone; descEl.innerHTML = "Feeling: " + description; resultsDiv.style.display = "block"; } // Update hint text when scale changes document.getElementById('scaleType').onchange = function() { var scale = this.value; var hint = document.getElementById('scaleHint'); var rpeInput = document.getElementById('rpeValue'); if (scale === "6-20") { hint.innerHTML = "For the 6-20 scale, 6 is no effort and 20 is maximum effort."; rpeInput.value = 13; } else { hint.innerHTML = "For the 1-10 scale, 1 is resting and 10 is absolute maximal effort."; rpeInput.value = 5; } };

Leave a Comment