Calculating the heart rate from an Electrocardiogram (ECG) strip is a fundamental skill for medical professionals, paramedics, and students. An ECG translates the heart's electrical activity into a visual graph, printed on standard grid paper. By measuring the distance between specific waves or counting complexes, you can accurately determine the heart rate in Beats Per Minute (BPM).
Standard ECG Paper: ECG paper typically moves at a speed of 25 mm/second.
Small Square: 1mm x 1mm (0.04 seconds)
Large Square: 5mm x 5mm (0.20 seconds, or 5 small squares)
The 1500 Method (Most Accurate)
The 1500 method is the most precise way to calculate heart rate for regular rhythms. It uses the small squares on the ECG paper.
Formula: 1500 ÷ Number of small squares between two consecutive R waves.
Example: If there are 20 small squares between two R waves, the heart rate is 1500 ÷ 20 = 75 BPM.
The 300 Method (Quick Estimate)
The 300 method is a quick way to estimate heart rate without counting every tiny line. It relies on the large squares (thick lines).
Formula: 300 ÷ Number of large squares between two consecutive R waves.
Example: If there are 4 large squares between R waves, the heart rate is 300 ÷ 4 = 75 BPM.
The 6-Second Method (Irregular Rhythms)
If the patient has an irregular rhythm (such as Atrial Fibrillation), the R-R intervals vary, making the division methods inaccurate. In this case, use the 6-second method.
Formula: Count the number of QRS complexes (R waves) in a 6-second strip and multiply by 10.
Example: If you count 8 QRS complexes in a 6-second strip, the heart rate is 8 × 10 = 80 BPM.
Interpreting the Results
Once you have calculated the BPM, it is categorized clinically:
Category
Heart Rate Range
Description
Sinus Bradycardia
< 60 BPM
Slower than normal heart rate.
Normal Sinus Rhythm
60 – 100 BPM
Normal resting heart rate range.
Sinus Tachycardia
> 100 BPM
Faster than normal heart rate.
function updateEcgLabel() {
var method = document.getElementById("calc_method").value;
var label = document.getElementById("dynamic_input_label");
var input = document.getElementById("ecg_input_val");
if (method === "1500") {
label.innerText = "Number of Small Squares (R-R Interval)";
input.placeholder = "e.g. 20";
} else if (method === "300") {
label.innerText = "Number of Large Squares (R-R Interval)";
input.placeholder = "e.g. 4";
} else {
label.innerText = "Number of QRS Complexes (in 6 seconds)";
input.placeholder = "e.g. 8";
}
}
function calculateHeartRate() {
var method = document.getElementById("calc_method").value;
var inputVal = parseFloat(document.getElementById("ecg_input_val").value);
var resultDiv = document.getElementById("ecg_result");
// Validation
if (isNaN(inputVal) || inputVal <= 0) {
resultDiv.style.display = "block";
resultDiv.style.backgroundColor = "#ffebee";
resultDiv.style.borderColor = "#ffcdd2";
resultDiv.innerHTML = "Please enter a valid positive number greater than zero.";
return;
}
var heartRate = 0;
// Calculation Logic
if (method === "1500") {
// Formula: 1500 / Small Squares
heartRate = 1500 / inputVal;
} else if (method === "300") {
// Formula: 300 / Large Squares
heartRate = 300 / inputVal;
} else if (method === "6sec") {
// Formula: Count * 10
heartRate = inputVal * 10;
}
// Rounding to nearest integer
heartRate = Math.round(heartRate);
// Interpretation Logic
var diagnosis = "";
var diagColor = "";
if (heartRate = 60 && heartRate <= 100) {
diagnosis = "Normal Sinus Rhythm";
diagColor = "#27ae60"; // Green
} else {
diagnosis = "Sinus Tachycardia (Fast)";
diagColor = "#c0392b"; // Red
}
// Display Result
resultDiv.style.display = "block";
resultDiv.style.backgroundColor = "#f1f8e9";
resultDiv.style.borderColor = "#c5e1a5";
resultDiv.innerHTML =
"