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;
}
};