All four HRV fields are only populated when the scan’s
qualityTier is .accepted (iOS) or QualityTier.ACCEPTED (Android). Do not read HRV values from rejected or low-quality scans.RMSSD
RMSSD — root mean square of successive differences — is the square root of the mean of the squared differences between consecutive RR (beat-to-beat) intervals. It is the dominant short-term HRV metric in both research literature and consumer wearables: WHOOP, Oura Ring, Polar, and Fitbit all report RMSSD as their primary HRV figure. Higher RMSSD values reflect stronger parasympathetic tone, which is generally associated with recovery, readiness, and low physiological stress. Lower values tend to appear during periods of fatigue, illness, or high sympathetic activation.SDK Field
rmssd: Double — expressed in milliseconds (ms) on the VitalsResult object.
Validated Accuracy
SDNN
SDNN — standard deviation of normal-to-normal intervals — is the standard deviation of all RR intervals recorded during the 60-second scan window. Unlike RMSSD, which isolates high-frequency beat-to-beat changes, SDNN integrates variability across both high and low frequency bands, giving a broader view of total autonomic regulation. SDNN and RMSSD tend to move together for most users in most conditions, but they diverge when low-frequency autonomic influences (such as blood pressure regulation or thermoregulation) are prominent. Providing both gives your application richer context for wellness and recovery features.SDK Field
sdnn: Double — expressed in milliseconds (ms) on the VitalsResult object.
Validated Accuracy
Baevsky Stress Index
The Baevsky stress index (also called the stress index or SI) is a time-domain HRV measure originally developed in Russian aerospace medicine to quantify autonomic nervous system strain. It is derived from the shape of the RR interval histogram and is sensitive to shifts toward sympathetic dominance. The SDK returns it on a natural-logarithm (ln) scale to normalise its skewed distribution and make changes more linear. Higher ln(Baevsky) values indicate greater sympathetic activation — physiological stress, alertness, or arousal. Lower values indicate a more relaxed, parasympathetically dominant state. Because it is computed differently from RMSSD and SDNN, it can surface stress signatures that the other two metrics miss.SDK Field
baevsky: Double — dimensionless, on the ln scale, on the VitalsResult object.
Validated Accuracy
Poincaré SD2:SD1
The Poincaré plot is a non-linear HRV analysis technique in which each RR interval is plotted against the interval that immediately follows it, producing a characteristic elliptical cloud of points. The short-axis standard deviation (SD1) captures beat-to-beat variability; the long-axis standard deviation (SD2) captures longer-timescale variability. Their ratio — SD2:SD1 — reflects the relative balance between these two timescales. A higher ratio means longer-timescale autonomic influences dominate; a ratio near 1 suggests a more homogenous beat-to-beat pattern. Together with RMSSD and SDNN, the Poincaré ratio gives your application a non-linear dimension of HRV that is particularly useful for distinguishing arousal states with similar RMSSD profiles.SDK Field
poincareSD2SD1: Double — dimensionless ratio on the VitalsResult object.
Validated Accuracy
Reading All Four HRV Metrics
- Swift (iOS)
- Kotlin (Android)
Choosing Which Metrics to Display
Which metric should I show to end users?
Which metric should I show to end users?
For general consumer wellness applications, RMSSD is the recommended primary display metric because it has the richest normative dataset, the most research backing in the consumer context, and the most intuitive interpretation (higher = more recovered). Most users are already familiar with RMSSD if they use a fitness wearable.SDNN is a good secondary metric for users who want more depth, or for applications that track cardiovascular wellness more broadly.Baevsky and Poincaré SD2:SD1 are best surfaced in “advanced” or “detailed” views for users interested in the science behind their scores, or used as inputs to composite scoring algorithms rather than displayed directly.
How should I handle day-to-day variability in HRV?
How should I handle day-to-day variability in HRV?
HRV is highly individual and highly variable. A single reading can shift significantly based on alcohol consumption the night before, hydration, sleep quality, and even time of day. For most wellness applications, tracking the trend over many days — rather than reacting to any single value — provides the most actionable signal. Consider displaying a rolling 7- or 30-day baseline alongside each daily reading.
