The 6-second method is the gold standard for irregular rhythms like Afib.
Count all R waves within the selected time strip (do not count the first one if it starts exactly on the line).
Calculated Heart Rate0 BPM
How to Calculate Heart Rate on ECG with Irregular Rhythm
Calculating heart rate from an electrocardiogram (ECG/EKG) is a fundamental skill for healthcare professionals. While the "300 method" or "1500 method" works perfectly for regular rhythms, these techniques fail when the patient has an irregular rhythm, such as Atrial Fibrillation (Afib), Multifocal Atrial Tachycardia (MAT), or frequent ectopy.
When the R-R intervals (the distance between heartbeats) vary, you must use a method that averages the rate over time. The calculator above uses the standard clinical approach for these scenarios.
The Problem with Regular Rhythm Methods
In a regular sinus rhythm, the distance between every heartbeat is identical. This allows you to measure one interval (between two R waves) and mathematically extrapolate the rate for a full minute. However, in an irregular rhythm:
The R-R intervals vary constantly.
Using the "small square" method on a short interval could result in a calculation of 150 bpm, while the very next interval might calculate to 60 bpm.
Neither calculation represents the patient's true hemodynamic status.
The Solution: The 6-Second Method
The "6-Second Method" is the most widely used technique for calculating heart rate on an irregular ECG strip. It provides a mean heart rate that reflects the actual number of contractions per minute.
Physics of the Calculation: ECG paper typically runs at a speed of 25 mm/second. One large square (5mm) represents 0.2 seconds. Therefore, 30 large squares equal exactly 6 seconds.
Step-by-Step Calculation Guide
Identify a 6-Second Strip: Most ECG paper has markers (hash marks) at the top or bottom every 3 seconds. Locate two markers that encompass a 6-second period. Alternatively, count 30 large boxes horizontally.
Count the QRS Complexes: Count the number of R waves (the spikes representing ventricular contraction) that fall within these 6 seconds.
If a QRS complex falls exactly on the starting line, do not count it.
If a QRS complex falls exactly on the ending line, count it.
Multiply by 10: Since 6 seconds is one-tenth of a minute (60 seconds), multiply your count by 10 to get the Beats Per Minute (BPM).
Example Calculation
You are analyzing a rhythm strip of a patient with Atrial Fibrillation. The rhythm is irregularly irregular.
You mark off a 6-second strip.
You count 9 QRS complexes within that timeframe.
Calculation: 9 x 10 = 90 BPM.
Interpreting the Results
Once you have calculated the heart rate, classify it clinically:
Normal Sinus Rate: 60 to 100 BPM.
Bradycardia: Less than 60 BPM. This implies the heart is beating too slowly.
Tachycardia: Greater than 100 BPM. This implies the heart is beating too fast.
Alternative: The 10-Second Method
Sometimes a 12-lead ECG provides a 10-second rhythm strip at the bottom of the page. The math is similar but slightly adjusted:
Count the R waves in the entire 10-second strip.
Multiply by 6 (since 10 seconds x 6 = 60 seconds).
This method is arguably more accurate than the 6-second method because it averages the rate over a longer period, smoothing out the irregularities further.
Summary of Irregular Rhythm Formulas
Use these formulas based on the duration of your strip:
6-Second Strip: Count × 10
10-Second Strip: Count × 6
3-Second Strip: Count × 20 (Less accurate, not recommended for highly irregular rhythms)
General Formula: (Count ÷ Seconds) × 60
// Toggle input fields based on selected method
function toggleInputs() {
var method = document.getElementById('ecgMethod').value;
var customGroup = document.getElementById('customTimeGroup');
if (method === 'custom') {
customGroup.style.display = 'block';
} else {
customGroup.style.display = 'none';
}
}
function calculateHeartRate() {
// Get input values
var rWavesInput = document.getElementById('rWaves').value;
var method = document.getElementById('ecgMethod').value;
var durationInput = document.getElementById('stripDuration').value;
// Validate inputs
if (rWavesInput === "" || parseFloat(rWavesInput) < 0) {
alert("Please enter a valid number of R Waves.");
return;
}
var rWaves = parseFloat(rWavesInput);
var duration = 6; // Default to 6 seconds
// Determine duration based on method
if (method === '6sec') {
duration = 6;
} else if (method === '10sec') {
duration = 10;
} else if (method === 'custom') {
if (durationInput === "" || parseFloat(durationInput) <= 0) {
alert("Please enter a valid duration in seconds.");
return;
}
duration = parseFloat(durationInput);
}
// Core Calculation: (Count / Duration) * 60 seconds
var bpm = Math.round((rWaves / duration) * 60);
// Display Results
var resultContainer = document.getElementById('result-container');
var bpmDisplay = document.getElementById('bpmResult');
var classificationDisplay = document.getElementById('classificationResult');
var methodDisplay = document.getElementById('methodUsed');
resultContainer.style.display = 'block';
bpmDisplay.innerText = bpm + " BPM";
// Clinical Classification
var classificationText = "";
var classificationColor = "#333";
var classificationBg = "#eee";
if (bpm = 60 && bpm <= 100) {
classificationText = "Normal Resting Rate";
classificationColor = "#1b5e20";
classificationBg = "#c8e6c9";
} else {
classificationText = "Tachycardia (Fast)";
classificationColor = "#b71c1c";
classificationBg = "#ffcdd2";
}
classificationDisplay.innerText = classificationText;
classificationDisplay.style.color = classificationColor;
classificationDisplay.style.backgroundColor = classificationBg;
// Method Feedback
methodDisplay.innerText = "Calculation: (" + rWaves + " beats / " + duration + " sec) × 60";
}