Count the large (5mm) grid boxes between two R-waves.
Estimated Heart Rate
— BPM
How to Calculate Heart Rate on ECG Paper
Interpreting an electrocardiogram (ECG or EKG) is a fundamental skill in cardiology and emergency medicine. Calculating the heart rate from the ECG paper grid is the first step in analyzing heart rhythm. Standard ECG paper moves at a speed of 25 mm/second, creating a grid where time can be measured by counting squares.
Standard Grid Measurements (at 25mm/sec):
• 1 Small Square (1mm) = 0.04 seconds
• 1 Large Square (5mm) = 0.20 seconds
• 5 Large Squares = 1.0 second
• 300 Large Squares = 1.0 minute
Method 1: The 300 Method (Large Squares)
This is the most common method for rapid estimation of heart rate when the rhythm is regular. The formula relies on the fact that there are 300 large squares in one minute.
Formula:Heart Rate = 300 ÷ (Number of large squares between R-R intervals)
Example: If there are 4 large squares between two consecutive R waves, the heart rate is 300 / 4 = 75 BPM.
1 large square = 300 BPM
2 large squares = 150 BPM
3 large squares = 100 BPM
4 large squares = 75 BPM
5 large squares = 60 BPM
Method 2: The 1500 Method (Small Squares)
For a more precise calculation, especially with fast heart rates (tachycardia), counting the small squares is preferred. There are 1500 small squares in one minute (25mm/sec × 60 sec).
Formula:Heart Rate = 1500 ÷ (Number of small squares between R-R intervals)
Example: If there are 20 small squares between R waves, the heart rate is 1500 / 20 = 75 BPM.
Method 3: The 6-Second Method (Irregular Rhythms)
If the patient has an irregular rhythm (such as Atrial Fibrillation), the distance between R waves varies, making the previous methods inaccurate. In this case, you examine a 6-second strip of the ECG.
Formula:Heart Rate = (Number of R waves in a 6-second strip) × 10
A 6-second strip consists of 30 large squares. Count the number of QRS complexes (R waves) within these 30 boxes and multiply by 10 to estimate the rate for a full minute.
Result Interpretation
Heart Rate Range
Classification
< 60 BPM
Bradycardia (Slow)
60 – 100 BPM
Normal Sinus Rhythm
> 100 BPM
Tachycardia (Fast)
Note: This calculator assumes standard paper speed of 25mm/sec. Always confirm findings clinically.
function updateInputLabel() {
var method = document.getElementById('calcMethod').value;
var label = document.getElementById('inputLabel');
var hint = document.getElementById('inputHint');
var input = document.getElementById('ecgValue');
if (method === '300') {
label.innerHTML = "Number of Large Squares between R-R";
hint.innerHTML = "Count the large (5mm) grid boxes between two R-waves.";
input.placeholder = "e.g., 4";
} else if (method === '1500') {
label.innerHTML = "Number of Small Squares between R-R";
hint.innerHTML = "Count the small (1mm) grid boxes between two R-waves.";
input.placeholder = "e.g., 20";
} else if (method === '6sec') {
label.innerHTML = "Number of R-Waves in 6 Seconds";
hint.innerHTML = "Count the number of R-waves (spikes) visible in 30 large squares.";
input.placeholder = "e.g., 7″;
}
// Clear previous result when method changes
document.getElementById('resultBox').style.display = 'none';
document.getElementById('ecgValue').value = ";
}
function calculateHeartRate() {
var method = document.getElementById('calcMethod').value;
var inputValue = parseFloat(document.getElementById('ecgValue').value);
var resultBox = document.getElementById('resultBox');
var bpmDisplay = document.getElementById('bpmResult');
var statusDisplay = document.getElementById('rhythmStatus');
// Validation
if (isNaN(inputValue) || inputValue 400 || heartRate < 10) {
alert("The calculated Heart Rate is " + heartRate + " BPM, which seems clinically unlikely. Please check your inputs.");
return;
}
// Display Result
bpmDisplay.innerHTML = heartRate + " BPM";
resultBox.style.display = 'block';
// Rhythm Interpretation
var statusText = "";
var statusColor = "";
if (heartRate = 60 && heartRate <= 100) {
statusText = "Normal Rate";
statusColor = "#27ae60"; // Green
} else {
statusText = "Tachycardia";
statusColor = "#e74c3c"; // Red
}
statusDisplay.innerHTML = "" + statusText + "";
}