September 30, 2026 · 13 min read · Sugam Budhraja

How Wearable Stress Scores Are Calculated: Garmin, WHOOP, Oura, Samsung and Fitbit Compared

Nearly every wearable stress score is built from heart rate and heart rate variability, measured while you are still and compared with your own baseline. They differ in window, scale and direction: Garmin reports 0 to 100 every three minutes, WHOOP 0 to 3 against 14 days, Oura four states every 15 minutes, Google replaced Fitbit's 1 to 100 score with three labels, and Apple has no stress score at all. What each measures, what the evidence says, and where the data is available to developers.

Short answer: almost every wearable stress score is heart rate and heart rate variability, measured while you are still and compared with your own recent baseline. What differs is everything around that core: how often it is measured, how long the baseline is, what scale it lands on, which direction is good, and what the product calls it.

That makes stress the clearest example of a pattern that runs through consumer health scores. The readiness scores share inputs and hide weights. Stress scores share even more of their inputs and disagree even more on presentation. A Garmin 60, a WHOOP 2.1 and an Oura “Engaged” can describe the same afternoon.

This post covers what the signal is, how each vendor turns it into a score, what the evidence says those scores track, and the part developers usually discover late: most of this data is not in HealthKit or Health Connect at all.


What does a stress score actually measure?

Autonomic arousal, not psychological stress. The heart is paced by the balance between the sympathetic nervous system, which speeds it up, and the parasympathetic, which slows it and adds beat-to-beat variation. Under acute stress, heart rate tends to rise and heart rate variability (HRV) tends to fall. Wearables read both from the optical sensor.

Two constraints shape every product built on that signal.

  • Movement swamps it. Exercise raises heart rate and lowers HRV for reasons that have nothing to do with stress. Every vendor below measures only during stillness or discards periods of motion.
  • People differ more than moments do. A healthy HRV for one adult can be a worrying one for another, which is why population HRV norms and app norms disagree. So stress scores are almost always relative to a personal baseline rather than a fixed threshold.

Oura states the limit plainly in its own documentation: its stress feature cannot differentiate the source of stress physiologically [4]. The same is true of every product here.


How does each vendor calculate stress?

ProductInputsWindowScaleBaseline
Garmin Stress [1][2]HRV while inactive (Firstbeat algorithm)Three-minute averages0 to 100: rest 0 to 25, low 26 to 50, medium 51 to 75, high 76 to 100Personal
Garmin Body Battery [1]Stress, activity, sleepContinuous5 to 100 energy reservePersonal
WHOOP Stress Monitor [3]Heart rate and HRV, motion-awareIn the moment0 to 3Last 14 days
Oura Daytime Stress [4]Heart rate, HRV, motion, temperatureEvery 15 minutes, awake and relatively stillStressed, Engaged, Relaxed, RestoredPersonal, 5 to 7 days to establish
Oura Resilience [5]Daytime stress, daytime recovery, sleep recoveryRecent weeksLimited, Adequate, Solid, Strong, ExceptionalPersonal
Google Health Resilience [6][7]Responsiveness (heart rate, HRV, electrodermal activity), exertion balance, sleep patternsDailyOptimal, Balanced, LowPrevious day and week
Samsung Health Stress [8]Heart rate and other factorsOn demand or continuousNot published on Samsung’s support pageNot published
AppleNo stress score

A few details in that table matter more than they look.

Garmin’s score is a fast signal. Three-minute averages make it responsive to a tense meeting, and noisy for the same reason. Body Battery is the slow integral of the same physiology, which is why products that read Garmin often want both.

WHOOP, Oura and Google are explicitly relative. WHOOP compares you with your last 14 days [3]. Oura says its zones are personalized rather than fixed thresholds [4]. A new user’s scores are least trustworthy in the first week, exactly when they are most likely to be looking.

Google dropped the number. When the Fitbit app became the Google Health app on 19 May 2026, the 1 to 100 Stress Management Score was replaced by Resilience, reported as Optimal, Balanced or Low [7]. On Fitbit’s old scale, higher meant less stress. On Garmin’s, WHOOP’s and Oura’s, higher or further right means more. Anyone who stored Fitbit scores alongside Garmin scores without inverting one of them has a corrupted series.

Google also measures acute events separately. Pixel Watch 2 and later and the Fitbit Sense series use a continuous electrodermal activity sensor, which detects small changes in skin sweat, to send Body Responses notifications about ten minutes after a sudden rise in autonomic activity [6]. Google’s own help page is clear that this tracks acute fight-or-flight activation, not overall perceived stress [6].

Apple has none. As of September 2026 there is no stress score in Apple’s Health app or in HealthKit. The closest object is State of Mind, a self-reported mood log that apps can read and write through HealthKit from iOS 18 [9]. It is the opposite design: what the person says, not what the heart does.


What does the evidence say stress scores track?

Less validation exists for stress scores than for almost any other wearable metric, and what exists is instructive.

Garmin’s score follows heart rate more closely than HRV. In a 2025 preprint, Rosenbach and colleagues compared Garmin’s stress score from a Vívosmart 4 with chest-strap ECG in 60 adults through rest, a mental arithmetic stressor and recovery [10]. The score correlated strongly with heart rate (r of 0.74 to 0.85) and only moderately with RMSSD, the standard short-term HRV measure (r of -0.41 to -0.63). The score did respond to the stressor, which supports it as an indicator of acute mental stress. The authors note the limits, including a single lab stressor and no cortisol measure; the sample was also young, with a mean age of 27.5, and individual differences were large.

Exercise looks like stress for hours. Using free-living data from WHOOP members, Presby and colleagues found that heart rate measured while motionless stayed elevated for up to about three and a half hours after moderate or vigorous runs, and HRV stayed lower for at least five hours [11]. High-stress work produced a shorter heart rate rise, and HRV was lower 90 to 300 minutes afterward. Garmin’s own data format has a code for exactly this, marking samples as recovering from exercise rather than scoring them [12].

Alcohol looks like stress overnight. In 4,098 Finnish employees with beat-to-beat recordings, alcohol intake was associated with a dose-dependent fall in an HRV-derived recovery measure during the first three hours of sleep: about 9, 24 and 39 percentage points at low, moderate and high intake [13]. A stress or resilience score the next morning is partly a drinking log.

What to take from the evidence. Stress scores are credible as a measure of physiological arousal relative to a person’s own baseline. They are not a measure of psychological stress, they cannot tell a deadline from a hangover, and they have not been validated against clinical stress or anxiety outcomes. Present them as “your body’s stress response,” not as “how stressed you are.”

Why do five devices give five answers?

Because they differ on every design choice after the shared input.

  1. Window. Three minutes, fifteen minutes, in the moment, or a whole day. A short window catches spikes; a long one catches load.
  2. Baseline. Fourteen days, five to seven days to establish, or an unpublished personal model. Two devices on the same wrist can disagree simply because one has seen less of you.
  3. Exclusions. What counts as too much motion, and how long after exercise the score is suppressed.
  4. Scale and direction. Continuous numbers, discrete states or three labels, with “good” at the top on some and the bottom on others.
  5. Summary. Time in a zone, the state right now, or a daily verdict.

None of these vendors publishes its formula. That is the same finding the 2025 review of composite scores made for readiness and recovery [14]. The practical conclusion is also the same: do not average across vendors, do not rescale one onto another, and do not compare two users on different devices.


Can a developer read stress data?

This is where most product plans change. Neither HealthKit nor Health Connect has a stress data type.

  • Health Connect’s wellness category contains a mindfulness session type and nothing else in this area [15].
  • HealthKit has State of Mind, which is self-reported, and HRV. It has no vendor stress score [9].
  • The raw input is available on both platforms: HealthKit records HRV as SDNN [16] and adds RMSSD in iOS 27, covered in Apple’s September health announcements, and Health Connect has an HRV RMSSD record [15].

So stress scores are only available through the vendor, where the vendor offers them at all.

VendorStress data via APIShape
OuraYes: daily_stress and daily_resilience [17]Seconds in high stress and high recovery per day, defined as the top and bottom quartile of that day’s data; a day summary of restored, normal or stressful; resilience level with sleep recovery, daytime recovery and stress contributors from 0 to 100
GarminYes, for Health API partners: stress details [12]Three-minute stress values from 1 to 100 plus Body Battery values, with negative codes: -1 off wrist, -2 large motion, -3 not enough data, -4 recovering from exercise, -5 unidentified
WHOOPNo stress endpoint in the public API [18]Recovery, sleep, cycles and workouts only
SamsungStress is not among the documented data types of the Samsung Health Data SDK [19]Heart rate and related vitals only
GoogleNot covered here; check the Google Health API data types before planning on it

Two details deserve a warning. Oura’s app shows four states, but its API exposes a three-value day summary and time in quartile zones, so the app and the API do not describe a day in the same terms [4][17]. And Garmin’s negative codes must be treated as missing data, not as very low stress; a pipeline that averages them in will report calm wearers who were actually running. Garmin’s Health API is also closed to new applicants while its developer program is paused; see what Garmin’s pause means.


What should a product show instead?

  • Show the physiology, labeled honestly. HRV and resting heart rate against the user’s own baseline are available on both platforms and are the inputs every vendor uses. The HRV guide covers how to present them.
  • Keep vendor scores as vendor scores. If a user has a Garmin, show Garmin’s stress with Garmin’s bands and name. Do not blend it with an Oura day summary.
  • Suppress what the vendors suppress. Do not score periods of motion or the hours after a hard workout, and treat missing-data codes as gaps.
  • Stay on the wellness side of the line. “Your stress response was higher than usual this afternoon” is a wellness statement. Anything that names anxiety or depression is a disease claim; see whether your health app is a medical device.
  • Add context the wearable cannot see. Sleep timing, routine and activity patterns explain a lot of what a stress score only detects. Behavioral signals from the phone are covered in digital mental health beyond self-report.
Where Sahha sits. Sahha does not compute a physiological stress score. Its Mental Wellbeing Score measures something different: routine, activity patterns and sleep timing, from phone data alone, so it works for users with no wearable. HRV and resting heart rate from Apple Health, Health Connect and connected wearables are available as biomarkers for teams that want to build a stress view of their own.

The short version

Wearable stress scores are heart rate and HRV, measured at rest and compared with your own baseline [1][3][4]. Garmin reports 0 to 100 every three minutes, WHOOP 0 to 3 against 14 days, Oura four states every 15 minutes, Google three Resilience labels since May 2026, and Apple nothing. They respond to real stressors, and just as much to exercise and alcohol [10][11][13]. None publishes its formula. For developers, none of it is in HealthKit or Health Connect: Oura and Garmin expose stress through their APIs, WHOOP does not, and the raw HRV underneath is the only stress signal every platform shares.

References

  1. Garmin. Heart Rate Variability and Stress Level; and Body Battery. Owner’s manuals. https://www8.garmin.com/manuals/webhelp/GUID-CB71AAE9-99E6-47B4-AB7F-F14BA316E7C6/EN-US/GUID-9282196F-D969-404D-B678-F48A13D8D0CB.html and https://www8.garmin.com/manuals/webhelp/GUID-5D183A14-BB43-4A9B-B441-5F824214CE40/EN-US/GUID-87E1392B-2C55-40B7-A1FF-3AB9252DA0A0.html
  2. Digital Trends. How does Garmin measure stress, and is it really accurate? Firstbeat HRV algorithm, activity excluded. https://www.digitaltrends.com/mobile/how-does-garmin-measure-stress/
  3. WHOOP. Introducing Stress Monitor: A New Way to Monitor and Manage Stress. https://www.whoop.com/us/en/thelocker/introducing-stress-monitor-a-new-way-to-monitor-manage-stress/
  4. Oura Member Care. Daytime Stress. Inputs, 15-minute updates while awake and inactive, five to seven days to establish a baseline, cannot differentiate stress sources. https://support.ouraring.com/hc/en-us/articles/21205822135315-Daytime-Stress
  5. Oura Member Care. Resilience. https://support.ouraring.com/hc/en-us/articles/25358829055251-Resilience
  6. Google Health Help Center. Manage stress and mindfulness in Google Health. Resilience components; Body Responses on Pixel Watch 2 and later and Fitbit Sense. https://support.google.com/googlehealth/answer/14237928
  7. Google Health Help Center. What is new with the redesigned Google Health app. Resilience replaces Stress score; the Fitbit app becomes the Google Health app from 19 May 2026. https://support.google.com/googlehealth/answer/17068213
  8. Samsung US Support. Measure your stress level with Samsung Health. https://www.samsung.com/us/support/answer/ANS10001394/
  9. Apple Developer. HKStateOfMind. iOS 18.0 and later. https://developer.apple.com/documentation/healthkit/hkstateofmind
  10. Rosenbach, Itzkovith, Gidron, & Schonberg. (2025). Assessing Garmin’s Stress Level Score Against Heart Rate Variability Measurements. bioRxiv preprint. https://doi.org/10.1101/2025.01.06.630177
  11. Presby, D. M., Jasinski, S. R., & Capodilupo, E. R. (2023). Wearable derived cardiovascular responses to stressors in free-living conditions. PLOS ONE, 18(6), e0285332. https://doi.org/10.1371/journal.pone.0285332
  12. MyDataHelps. Garmin Stress Detail Summary Export Format. Three-minute averages; codes for off wrist, large motion, not enough data, recovering from exercise and unidentified. https://support.mydatahelps.org/hc/en-us/articles/14882643959315-Garmin-Stress-Detail-Summary-Export-Format
  13. Pietilä, J., Helander, E., Korhonen, I., Myllymäki, T., Kujala, U. M., & Lindholm, H. (2018). Acute Effect of Alcohol Intake on Cardiovascular Autonomic Regulation During the First Hours of Sleep in a Large Real-World Sample of Finnish Employees. JMIR Mental Health, 5(1), e23. https://doi.org/10.2196/mental.9519
  14. Doherty, C., Baldwin, M., Lambe, R., Burke, D., & Altini, M. (2025). Readiness, recovery, and strain: an evaluation of composite health scores in consumer wearables. Translational Exercise Biomedicine, 2(2). https://doi.org/10.1515/teb-2025-0001
  15. Android Developers. Health Connect data types. https://developer.android.com/health-and-fitness/health-connect/data-types
  16. Apple Developer. HKQuantityTypeIdentifier.heartRateVariabilitySDNN. https://developer.apple.com/documentation/healthkit/hkquantitytypeidentifier/heartratevariabilitysdnn
  17. Oura. Oura API v2 documentation: daily_stress and daily_resilience. Retrieved 27 September 2026. https://cloud.ouraring.com/v2/docs
  18. WHOOP for Developers. WHOOP API documentation. Retrieved 27 September 2026. https://developer.whoop.com/api/
  19. Samsung Developer. Samsung Health Data SDK overview. https://developer.samsung.com/health/data/overview.html

Related