The two most common HRV metrics measure different things, use different math, and come from different devices. They are not directly comparable.
SDNN — Standard Deviation of N-N intervals
What it measures: Standard deviation of all beat-to-beat (N-N) intervals in a time window
Captures: Total HRV — sympathetic + parasympathetic + circadian + other influences
Frequency content: VLF + LF + HF (whole spectrum)
Time domain: Sensitive to both short-term (parasympathetic) and long-term (sympathetic, thermoregulation, others) variability
Used by: Apple Watch (HealthKit heartRateVariabilitySDNN), some Garmin watches
Typical range: 20-100 ms for healthy adults at rest
Window: Apple Watch samples over ~60-90 seconds during quiet moments; aggregated nightly
RMSSD — Root Mean Square of Successive Differences
What it measures: Square root of the mean of squared differences between successive N-N intervals
Captures: Short-term, high-frequency variability → primarily parasympathetic (vagal) tone
Frequency content: HF only (high frequency, ~0.15-0.4 Hz)
Time domain: Sensitive to beat-to-beat changes driven by respiration (RSA — respiratory sinus arrhythmia)
Used by: Morpheus (Joel Jamieson, normalized to 100-point scale), Whoop, Oura, Fitbit, Garmin (most), Polar, Empatica
Typical range: 20-100 ms
Window: Typically 1-5 minutes for a measurement; Morpheus uses ~3-minute morning reading
Why the mismatch matters
Aspect
SDNN
RMSSD
Frequency content
VLF + LF + HF
HF only
Sympathetic contribution
Yes
No (vagal only)
Breathing dependency
Less
High (RSA-coupled)
Window sensitivity
Long windows shift meaning
Short windows shift meaning
Apple Watch ≠ Morpheus
YES — different math
YES — different math
A user's Apple Watch SDNN might read 45 ms while their Polar H10 RMSSD reads 60 ms in the same hour — those numbers don't disagree; they're measuring different aspects of the same ANS signal. Treating them as one number is a category error.
Empirical validation (Doherty et al., Sep 2024)
Apple Watch HRV vs gold-standard Polar H10 + Kubios: Apple Watch SDNN measurements show moderate-to-strong correlation with Polar H10 RMSSD at the same time of day, but higher absolute values and higher day-to-day variability. Apple Watch's measurement is valid for personal-trend tracking (your own day-to-day changes), less reliable for absolute values.
Morpheus M7 (chest strap, ECG) → raw R-R intervals → compute RMSSD (and SDNN, from same data)
Apple Watch (HealthKit) → SDNN samples → use as-is
The architectural choice:
Option
Pros
Cons
A. Single metric (RMSSD from M7)
Simpler, consistent math
Loses Apple's full biometric picture (RHR, sleep, weight, etc.)
B. Dual metrics, cross-correlate
Uses each source's strength
More math; need to handle the mismatch carefully
C. M7 as gold standard, derive both metrics from it
Same source, both metrics, internal consistency
M7 not always worn (overnight, during day)
D. M7 as gold standard + Apple Watch SDNN as continuous cross-check
M7 for primary, Watch for continuity
Two sources, two sets of numbers, user must understand
Recommended: Option C with fallback to Option D.
When M7 is connected → compute RMSSD AND SDNN from the same R-R intervals (consistent math, both metrics, no mismatch)
When M7 is not connected (overnight, day) → use Apple Watch SDNN as continuous cross-check
In the insight engine → treat RMSSD as the primary HRV metric (matches Joel's framework, matches Galpin's σ-deviation rule), SDNN as the cross-source validation signal
Insight thresholds (per Galpin, verified from gbrain)
Andy Galpin's rule (verified in brain chunks 6472, 6475): once established your normal standard deviation, when you start exceeding one, especially two standard deviations for more than a couple of days, something is happening.
Application for Parasym:
Compute the personal baseline as the rolling 30-day mean of morning RMSSD
Compute the personal baseline σ as the rolling 30-day standard deviation
Flag a day when (daily_RMSSD - baseline) / baseline_σ > 1 (yellow)
Flag a day when (daily_RMSSD - baseline) / baseline_σ > 2 (red)
Anomalies that persist 2+ days become notification-worthy
Practical implementation notes
vDSP / Accelerate framework — Swift implementation of RMSSD/SDNN should use Accelerate for SIMD-accelerated array math (5-min window of R-R intervals = ~300-400 values; trivial workload, but the framework is the right pattern)
Decimation — when M7 sends RR intervals at high frequency (per Breath Ball docs, M7 transmits "RR intervals (the time between heartbeats) too frequently"), downsample to consistent 1Hz time series before computing
Cross-validation — when both Apple Watch SDNN and M7-derived SDNN are available, log the delta. Large delta = sensor disagreement, investigate.
Linked concepts
Morpheus M7 — the chest strap that gives Parasym its raw data
Joel Jamieson — RMSSD methodology author
Andy Galpin — σ-deviation rule (verified in brain chunks 6472, 6475)