The Apple Watch tracks your respiratory rate (breaths per minute) primarily while you sleep. This metric is crucial for understanding your respiratory health and sleep quality. While the Apple Watch uses its accelerometer to detect micro-movements of your chest, you can use this calculator to manually verify your rate or calculate your Breaths Per Minute (BrPM) from a manual count to compare against your Health app data.
Manual Respiratory Rate Calculator
Use this tool to calculate your BrPM based on a manual count (e.g., counting breaths for 30 seconds) and check if it falls within the standard healthy range tracked by Apple Health.
15 Seconds
30 Seconds
60 Seconds (1 Minute)
How Does Apple Watch Calculate Respiratory Rate?
Unlike a pulse oximeter that uses light to detect blood oxygen, the Apple Watch calculates respiratory rate using the accelerometer. Here is the technical breakdown of the process:
1. Accelerometry and Micro-Movements
When you are in a state of deep relaxation or sleep, your body is relatively still. However, your chest expands and contracts with every breath. The Apple Watch's accelerometer is sensitive enough to detect these rhythmic micro-movements of your wrist, which correspond to the rise and fall of your thoracic cavity.
2. Signal Processing and Sleep Mode
The calculation only occurs when the Sleep Focus is active. The watch collects raw motion data and applies signal processing algorithms to filter out "noise" (like tossing and turning) and isolate the specific frequency of respiration. This is why you must wear your watch to bed and have Sleep Tracking enabled to get this data.
3. Data Aggregation in Health App
The watch does not show a real-time number on the screen like it does for heart rate. Instead, it aggregates the data throughout the night and presents an average "Breaths Per Minute" (BrPM) in the Health app under the Respiratory section. It also tracks the range (min/max) during the sleep session.
Normal Ranges and Variability
For most healthy adults, a normal respiratory rate while sleeping is between 12 and 20 breaths per minute. The Apple Watch tracks trends over time. A significant increase in your nightly average can be an early indicator of:
Respiratory infections (like flu or COVID-19)
Sleep Apnea
Changes in cardiovascular health
High altitude adaptation
Note: This calculator is for informational purposes only. Always consult a medical professional for health concerns.
function calculateRespiratoryRate() {
// 1. Get input values
var breathCountInput = document.getElementById('breathCount');
var durationInput = document.getElementById('countDuration');
var ageInput = document.getElementById('userAge');
var resultDiv = document.getElementById('result');
var breaths = parseFloat(breathCountInput.value);
var seconds = parseFloat(durationInput.value);
var age = parseFloat(ageInput.value);
// 2. Validate inputs
if (isNaN(breaths) || breaths <= 0) {
alert("Please enter a valid number of breaths counted.");
return;
}
if (isNaN(age) || age <= 0) {
alert("Please enter a valid age.");
return;
}
// 3. Calculate BrPM (Breaths Per Minute)
// Formula: (Breaths / Seconds) * 60
var brpm = (breaths / seconds) * 60;
// Round to 1 decimal place
brpm = Math.round(brpm * 10) / 10;
// 4. Determine Health Status based on Age and Rate
// Logic adapted from medical standards for resting respiratory rate
var status = "";
var statusClass = "";
var message = "";
// Ranges (Lower limit, Upper limit)
var lowLimit, highLimit;
if (age < 1) {
lowLimit = 30; highLimit = 60; // Infant
} else if (age < 3) {
lowLimit = 24; highLimit = 40; // Toddler
} else if (age < 6) {
lowLimit = 22; highLimit = 34; // Preschooler
} else if (age = lowLimit && brpm <= highLimit) {
status = "Normal Range";
statusClass = "status-normal";
message = "This falls within the typical resting respiratory rate for your age group.";
} else if (brpm = 18) {
watchContext = "Apple Watch Comparison: Most healthy adults see a nightly average between 12-20 BrPM in the Health app. If your manual count matches your watch data, your device is tracking accurately.";
}
// 5. Build Result HTML
var outputHTML =
'