Manual Count (1 Hz)
Low Power (30 Hz)
Standard PPG (100 Hz)
High Precision (500 Hz)
Apple Watch uses hundreds of Hz (flashes per second) to detect peaks.
Heart Rate: — BPM
How Does Apple Watch Calculate Heart Rate?
The Apple Watch calculates heart rate using a technology known as Photoplethysmography (PPG). While the name is complex, the underlying concept is based on a simple physical fact: blood is red because it reflects red light and absorbs green light.
The Mechanism: Green Lights and Photodiodes
The optical heart sensor on the back of the Apple Watch utilizes green LED lights paired with light-sensitive photodiodes. Here is the step-by-step process of how it converts light into a heart rate number:
Emission: The green LEDs flash hundreds of times per second.
Absorption: When your heart beats, blood flow in your wrist increases. More blood means more green light is absorbed and less is reflected back.
Refraction: Between heartbeats, blood flow decreases, meaning less green light is absorbed and more is reflected.
Detection: The photodiodes measure the varying amount of green light reflected.
Calculation: The watch's processor analyzes these light oscillations to detect the pulse peaks and calculates the Beats Per Minute (BPM).
Infrared vs. Green Light
The Apple Watch actually uses two different modes to measure your heart rate depending on your activity level:
Sensor Mode
Light Color
Usage Context
Sampling Rate
Background Mode
Infrared (Invisible)
Resting, Walking, Sleeping
Every few minutes
Active Mode
Green LEDs
Workouts, Breath, "Heart Rate" App
Hundreds of times per second
Signal Processing and Accuracy
Calculating heart rate from light sensors involves heavy mathematical signal processing. The raw data often contains "noise" caused by arm movements, skin perfusion, or loose fitting bands. To combat this, the Apple Watch employs:
Motion Compensation: Using the accelerometer to correlate physical movement with signal noise.
High Sampling Rate: As demonstrated in the calculator above, flashing the LEDs at a higher frequency (Hz) allows the device to construct a more accurate waveform of your blood flow, reducing the margin of error.
Brightness Adjustment: The LEDs can increase brightness and sampling rate automatically if the signal is weak (e.g., darker skin tones or tattoos which might block light).
Why the "Calculation" Matters
Unlike an Electrocardiogram (ECG) which measures electrical signals directly (available on Series 4 and later via the Digital Crown), the optical sensor is an estimator based on volume changes in blood vessels. The math formula used by the watch is essentially what our tool above simulates: counting the distinct peaks (beats) over a specific time window and normalizing it to a 60-second minute.
Factors That Affect Calculation
Fit: If the band is loose, ambient light interferes with the photodiodes.
Perfusion: Blood flow through the skin varies by person and temperature. In cold weather, perfusion is lower, making calculation harder.
Rhythmic Irregularities: Conditions like Atrial Fibrillation causing irregular beats can make the simple (Beats / Time) calculation less consistent.
function calculateBPM() {
// 1. Get input values
var pulseCount = document.getElementById('pulseCount').value;
var duration = document.getElementById('duration').value;
var frequency = document.getElementById('sensorFreq').value;
var resultDiv = document.getElementById('result');
var bpmValueSpan = document.getElementById('bpmValue');
var calcLogicDiv = document.getElementById('calcLogic');
var samplingDataDiv = document.getElementById('samplingData');
var appleContextDiv = document.getElementById('appleContext');
// 2. Validate inputs
if (pulseCount === "" || pulseCount < 0) {
alert("Please enter a valid number of beats.");
return;
}
pulseCount = parseFloat(pulseCount);
duration = parseFloat(duration);
frequency = parseFloat(frequency);
// 3. Perform Calculation: (Beats / Duration) * 60
var bpm = Math.round((pulseCount / duration) * 60);
// Calculate simulated data points
var totalSamples = duration * frequency;
// 4. Update UI
resultDiv.style.display = "block";
bpmValueSpan.innerText = bpm;
// Explanation of the math
calcLogicDiv.innerHTML = "The Math: (" + pulseCount + " beats ÷ " + duration + " seconds) × 60 seconds = " + bpm + " BPM";
// Explanation of sampling
samplingDataDiv.innerHTML = "Sensor Logic: At " + frequency + " Hz, the sensor analyzed roughly " + totalSamples.toLocaleString() + " data points to find those " + pulseCount + " peaks.";
// Topic specific context
var contextText = "";
if (bpm < 60) {
contextText = "Insight: This is a resting heart rate. The Apple Watch likely used Infrared sensors for this measurement to save battery.";
} else if (bpm > 100) {
contextText = "Insight: High heart rate detected. The Apple Watch would switch to high-intensity Green LEDs flashing hundreds of times per second to track these rapid changes accurately.";
} else {
contextText = "Insight: Normal range. The Apple Watch combines accelerometer data with optical readings to ensure this count isn't affected by arm movement.";
}
appleContextDiv.innerHTML = contextText;
}