Based on Max HR (220 – Age) and Resting HR (Karvonen Method)
Intensity Zone
Target Heart Rate Range
Benefit
How Is Your Resting Heart Rate Calculated?
Your Resting Heart Rate (RHR) is one of the simplest yet most effective metrics for assessing your cardiovascular health and fitness levels. It represents the number of times your heart beats per minute (BPM) while you are completely at rest.
While modern wearables can track this automatically, calculating it manually often provides a more reliable "moment-in-time" metric, specifically when done first thing in the morning.
The Formula: To calculate your heart rate, simply count the number of beats detected at your pulse point over a specific time interval and scale it up to 60 seconds.
BPM = (Beats Counted) × (60 / Time Interval in Seconds)
Step-by-Step Measurement Guide
Find your pulse: The best locations are the radial artery (inside the wrist, below the thumb) or the carotid artery (neck, just to the side of the windpipe).
Be consistent: For RHR, measure it immediately after waking up, before getting out of bed or drinking caffeine.
Count the beats: Use a stopwatch or the calculator above. Count your heartbeats for 10, 15, 20, or 30 seconds.
Calculate: Multiply your count to get the minute total. For example, if you count 17 beats in 15 seconds, your calculation is 17 × 4 = 68 BPM.
What Does Your Number Mean?
For most adults, a normal resting heart rate ranges between 60 and 100 BPM. However, lower is often better in the context of fitness.
Athlete (40 – 60 BPM): Indicates highly efficient heart function and excellent cardiovascular fitness.
Excellent (60 – 69 BPM): Above average cardiovascular health.
Average (70 – 79 BPM): A standard range for healthy adults.
Below Average (80+ BPM): May indicate stress, lack of fitness, or underlying health issues.
Tachycardia (>100 BPM): A resting rate consistently above 100 requires medical attention.
Factors Influencing the Calculation
If your calculated RHR seems higher than usual, consider these variables before worrying:
Temperature: High heat and humidity can increase heart rate by 5–10 BPM.
Body Position: Lying down usually produces a lower rate than sitting or standing.
Emotions: Stress, anxiety, or excitement significantly elevate your pulse.
Medication: Beta-blockers tend to lower the rate, while thyroid medications may raise it.
Using RHR for Training Zones
Once you have your RHR, you can use it to determine your heart rate reserve (HRR). The calculator above uses the Karvonen formula if you provide your age. This method is considered more accurate for athletes than the standard "220 minus age" formula because it accounts for your unique resting baseline.
function calculateHeartRate() {
// Get input values
var beatsInput = document.getElementById('pulseCount').value;
var intervalInput = document.getElementById('timeFrame').value;
var ageInput = document.getElementById('userAge').value;
var resultsDiv = document.getElementById('resultsArea');
var bpmDisplay = document.getElementById('bpmResult');
var categoryDisplay = document.getElementById('hrCategory');
var zoneSection = document.getElementById('zoneSection');
var zoneTableBody = document.getElementById('zoneTableBody');
// Validation
if (!beatsInput || beatsInput <= 0) {
alert("Please enter a valid number of beats counted.");
return;
}
var beats = parseFloat(beatsInput);
var interval = parseFloat(intervalInput);
// Calculate BPM
var multiplier = 60 / interval;
var bpm = Math.round(beats * multiplier);
// Display BPM
bpmDisplay.innerText = bpm;
resultsDiv.style.display = "block";
// Categorize Logic
var categoryText = "";
var categoryColor = "";
if (bpm < 40) {
categoryText = "Very Low (Consult a Doctor if not an athlete)";
categoryColor = "#e74c3c";
} else if (bpm < 60) {
categoryText = "Athlete / Excellent Fitness";
categoryColor = "#27ae60";
} else if (bpm < 70) {
categoryText = "Excellent";
categoryColor = "#2ecc71";
} else if (bpm < 80) {
categoryText = "Average / Good";
categoryColor = "#f39c12";
} else if (bpm < 90) {
categoryText = "Below Average";
categoryColor = "#e67e22";
} else if (bpm 0) {
var age = parseFloat(ageInput);
var maxHR = 220 – age;
var hrr = maxHR – bpm; // Heart Rate Reserve
zoneSection.style.display = "block";
zoneTableBody.innerHTML = ""; // Clear previous
// Define Karvonen Zones
var zones = [
{ name: "Zone 1 (Warm Up)", minPct: 0.50, maxPct: 0.60, benefit: "Recovery, Warm up" },
{ name: "Zone 2 (Fat Burn)", minPct: 0.60, maxPct: 0.70, benefit: "Basic endurance, Fat burning" },
{ name: "Zone 3 (Aerobic)", minPct: 0.70, maxPct: 0.80, benefit: "Aerobic fitness, Blood circulation" },
{ name: "Zone 4 (Anaerobic)", minPct: 0.80, maxPct: 0.90, benefit: "High speed endurance" },
{ name: "Zone 5 (Maximum)", minPct: 0.90, maxPct: 1.00, benefit: "Maximum effort, Sprinting" }
];
for (var i = 0; i < zones.length; i++) {
var z = zones[i];
// Karvonen Formula: TargetHR = ((maxHR − restingHR) × %Intensity) + restingHR
var minRate = Math.round((hrr * z.minPct) + bpm);
var maxRate = Math.round((hrr * z.maxPct) + bpm);
var row = "