Knowing how to calculate your heart rate is a fundamental skill for monitoring your cardiovascular health and exercise intensity. Beats per minute (BPM) measures the number of times your heart contracts in a 60-second window.
The Math Formula:
To find your BPM manually, use this simple formula: (Number of Beats ÷ Seconds Counted) × 60 = BPM
How to Take Your Pulse Manually
1. Find your pulse: Place two fingers (index and middle) on your wrist (radial artery) just below the base of the thumb, or on the side of your neck (carotid artery) just below the jawline.
2. Set a timer: Use a watch or phone timer for 15 seconds.
3. Count: Count every "thump" you feel within those 15 seconds.
4. Multiply: Multiply that number by 4 to get your 60-second heart rate.
Standard Heart Rate Categories
Category
BPM Range (Adults)
Athletic / Highly Fit
40 – 60 BPM
Normal Resting Heart Rate
60 – 100 BPM
Tachycardia (High)
Over 100 BPM
Bradycardia (Low)
Under 60 BPM (non-athletes)
Examples of BPM Calculations
Example 1: You count 18 beats in 15 seconds. (18 x 4) = 72 BPM. This is within the normal resting range.
Example 2: You count 12 beats in 10 seconds. (12 x 6) = 72 BPM.
Example 3: You count 45 beats in 30 seconds. (45 x 2) = 90 BPM.
Max Heart Rate and Exercise
Your estimated Maximum Heart Rate is generally calculated as 220 minus your age. For a 40-year-old, the Max HR would be 180 BPM. During moderate exercise, you should aim for 50-70% of your max HR, and during vigorous activity, 70-85%.
function calculateBPM() {
var pulseCount = document.getElementById("pulseCount").value;
var seconds = document.getElementById("secondsCounted").value;
var age = document.getElementById("userAge").value;
var resultBox = document.getElementById("bpm-result-box");
var bpmOutput = document.getElementById("bpmOutput");
var categoryOutput = document.getElementById("categoryOutput");
var maxHrOutput = document.getElementById("maxHrOutput");
if (pulseCount === "" || pulseCount <= 0) {
alert("Please enter a valid number of beats.");
return;
}
var bpm = (parseFloat(pulseCount) / parseFloat(seconds)) * 60;
bpm = Math.round(bpm);
bpmOutput.innerHTML = bpm + " BPM";
resultBox.style.display = "block";
var category = "";
if (bpm = 60 && bpm 0) {
var maxHR = 220 – parseInt(age);
var targetMin = Math.round(maxHR * 0.5);
var targetMax = Math.round(maxHR * 0.85);
maxHrOutput.innerHTML = "Based on your age (" + age + "), your estimated Max HR is " + maxHR + " BPM. Your target exercise zone (50-85%) is " + targetMin + " – " + targetMax + " BPM.";
} else {
maxHrOutput.innerHTML = "";
}
}