How to make sense of your Apple Watch Heart Rate Variability (HRV) data

A theoretical and practical guide: updated to iOS 16 and WatchOS 9

Marco Altini
11 min readNov 10, 2018

If you are new to Heart Rate Variability, check out our Ultimate Guide covering measurements, data analysis, case studies, and misconceptions.

For any questions, feel free to reach me on Twitter.

The Apple Watch is the best-selling wearable sensor out there. It packs amazing technology but falls short when it comes to heart rate variability (HRV) analysis. As a result, it is of limited practical utility in this context.

In this blog, I’ll show you how you can make better use of the Watch data for your own analysis of physiological stress in response to training and lifestyle stressors.

Let’s start by considering a few important aspects in HRV analysis:

  • Context and protocol: measurements are often taken by the watch automatically at random times in the day or night, which provides meaningless data (as anyone that looked at their HRV data in Health has figured out already). Why is that? The autonomic nervous system (and therefore HRV) is affected by so many things that the only meaningful way to collect data actually representative of physiological stress is by measuring in a known, repeatable context, which means first thing in the morning. The only alternative to this protocol is to collect data during the entire night at high resolution. Unfortunately, sporadic night measurements provided by the watch are also ineffective, something I cover in greater detail here. The watch does not implement standard protocols and therefore cannot be linked to an app the way you’d link any other sensor for a morning measurement. However, below we’ll see how you can use a simple workaround to trigger a measurement systematically from the Watch, and read the data back in HRV4Training. To do so, you will need to use the Breathe app on the Apple Watch.
  • Metrics: in Health, Apple reports HRV as the SDNN feature. This feature has a long history and was used mostly in the context of 24-hour measurements in medical practice. The idea is that by looking at SDNN we could get an understanding of cardiac variability changes throughout the day, as a response to circadian rhythm and acute stressors. It was mainly about distinguishing no variability at all (the inability of the system to react to any stressor, as it can happen in case of severe chronic conditions / disease) vs a healthy cardiovascular system. It wasn’t really about within-individual changes in parasympathetic activity, something we now understand is the most meaningful way to use HRV. In this context, rMSSD, computed as the root mean square of successive differences between RR intervals, is the most useful feature. When computing rMSSD, we look at beat-to-beat differences, thus the rMSSD feature is associated with short-term changes in heart rhythm. Since parasympathetic activity impacts heart rhythm at a fast rate (e.g. < 1 second), rMSSD is considered a valid measure of vagal modulation and parasympathetic activity. Among the various features, rMSSD is the only one where mathematically we capture the physiological process we are interested in, but is not provided by the Apple Watch or in Health. Using HRV4Training, we can read the RR intervals in Health, and re-compute features, therefore reporting rMSSD as opposed to the SDNN data you find in Health.

How good is the data?

Recently, researchers at the University of Zaragoza in Spain published a paper showing that RR intervals extracted from the Apple Watch while using the Breathe app, are indeed very accurate (Hernando et al., “Validation of the Apple Watch for Heart Rate Variability Measurements during Relax and Mental Stress in Healthy Subjects”). This is great news as it shows that the basic unit of information (RR intervals) can be trusted.

Using the latest iOS and Watch OS version, we could replicate part of the analysis, reading RR intervals from Health and comparing them to what we recorded using Polar straps. For more details on this analysis, you can refer to this blog post.

During data acquisition, we collected data a few minutes while breathing freely, and a few minutes while deep breathing, to elicitate higher HRV due to RSA. You can see in the plots below visually the effect of deep breathing as we get greater swings in RR intervals:

What can we derive from these data? You can see clearly an almost perfect correlation between Polar H7 and Apple Watch for all conditions (relaxed vs paced breathing as highlighted by bigger oscillations in RR intervals or instantaneous heart rate), meaning that the Apple Watch works really well in this modality.

Heart Rate Variability: rMSSD

​As features, we will look at rMSSD. rMSSD is a clear marker of parasympathetic activity and the main feature we use for our analysis in HRV4Training, similarly to what other apps do as well. The sports science community seems to have settled on this feature for several reasons. First, because of the clear physiological link, as mathematically rMSSD captures fast changes that are due to how the vagus nerve modulates heart rhythm, and secondly for practical reasons, as it is easy to acquire, easy to compute, less dependent on breathing rate, and reliable over short time windows and less controlled conditions.

You can find a few examples of how rMSSD changes in response to various stressors (training, traveling, alcohol intake, getting sick, positive or negative adaptations to training, etc.), in part 3 of our guide. This is an effective way to capture how stress affects your body and how long it takes to get back to normal.

What we expect given the data above is to see extremely close values between the Polar H7 chest strap and Apple Watch data. For the plot below, I computed rMSSD for each time window:

Results are very good considering normal variation in physiology and limitations in data synchronization.

It’s all about context

To me, the main challenge for today’s practitioners is not using one feature or the other, or one sensor or the other, but following a few key guidelines to make sure data can be correctly interpreted. Context and the morning routine are by far more important than using one tool or feature over the other. Unfortunately, devices that claim to do HRV all day, often simply reporting random data points, are really making it harder to properly communicate these aspects, and this brings me to the final and most important point: reproducible context.

Measuring at the right time: the morning routine

Consider that what we try to measure is parasympathetic activity, so the branch of the autonomic nervous system (ANS) in charge of rest, recovery and relaxation. The ANS is affected by pretty much anything (food, alcohol, coffee, stress — just think about reading something online and getting some emotional reaction in no time), hence measuring throughout the day or at random time points during the night typically results in capturing transient stressors and telling us very little about our chronic physiological state.

Even when beat to beat data can be acquired with high accuracy in free living, one single measurement in a well known context (first thing in the morning) is more valuable than recording more data at random times during the day or night.

If you are interested in measuring underlying or chronic physiological stress to potentially make adjustments to your lifestyle or training plan, then you would end up missing that information or confounding it with whatever is happening in your day.

What about using data points automatically collected by the Apple Watch during the night?

While during the night we might think that being unconscious it’s an ideal moment to collect good data, this is not really the case unless we use the whole night of data (which is not possible with an Apple Watch). This is the case mostly because of two aspects:

  • The circadian rhythm: HRV tends to increase during the night, as you rest (while resting HR tends to decrease). If we use a data point collected at 1am one day, and at 4am another day, then we might have large variability between the scores simply because they are far apart. At that point, it is much better to take a morning measurement when you wake up, which is most likely happening every day in a narrower range.
  • Sleep stages: HRV changes between different sleep stages (which is exactly why it can be used to try to estimate sleep stages). It follows that of course if the sleep stage affects HRV, the HRV reported in the morning is also affected by when during the night it was measured.

Here is an example:

Example of 2 nights with different physiological stress levels. While the averages are clearly different, relying on single data points can easily confound the relationship, as there is much variability during a night, due to the circadian rhythm and different sleep stages

We can see quite clearly that the two averages are different. However, due to the circadian component (HRV increasing during the night) and sleep stages (large minute by minute variation in HRV), it would be foolish to pick a single data point (or just a few) and use those as something representative of the physiological stress level for this person.

Note that these problems are automatically removed by a morning measurement: you are awake (no sleep stage influence) and no circadian rhythm (you most likely wake up at similar times each day). And indeed for the case above, we have the following:

  • Morning HRV in the high stress day: 35 ms (39 ms was the night average shown above)
  • Morning HRV in the low stress day: 58 ms (56 ms was the night average shown above)

HRV is highly influenced by acute stressors (because your autonomic nervous system is!), hence the importance of the ‘morning routine’, measuring as soon as you wake up (or using the whole night of data, something that currently only the Oura ring does).

For more considerations on night HRV data, please refer to this article where I cover in-depth the aspects briefly mentioned above.

What should you do then?

Despite the fact that no third-party app can control the Apple Watch or take an HRV reading, the Breathe app that comes with the Watch, consistently pushes HRV data to Health every time you use it.

Hence, you can, as a matter of fact, trigger an HRV reading using the Breathe app first thing in the morning, and disregard the rest of the data that is automatically collected.

Below we report more practical tips on how to take your measurement and interpret it with respect to your historical data, using HRV4Training.

Interpreting your daily measurements

Once you’ve collected your daily measurements for a while, there is something more to discuss: interpreting them.

HRV analysis requires a mindset shift. First of all, we need to understand the nature of the data and the constant re-adjusting of the autonomous nervous system, and therefore take all the necessary steps to acquire a reliable measurement. As we just said, this is typically addressed by the morning routine: the importance of context, limiting external factors, measuring as soon as you wake up and in the same body position every day.

Secondly, we need to shift from a “higher is better” to a “normal is better” mentality, as physiologically speaking, being in a stable condition is typically a good sign. The inherent variability of HRV measurements is something that your app or software of choice, needs to deal with. This is something we have spent a lot of time researching and designing in HRV4Training, starting with the way the daily advice is built (more on this later).

An app or software that interprets any HRV increase as a good sign, or any HRV decrease as a bad sign, is failing to correctly represent the fact that there are normal variations in physiology, and that only variations outside of this normal range, should trigger concern or more attention or simply be interpreted as actual changes. This is why normally we build what we call ‘your normal values’ based on a month or two of historical data, so that we can compare daily measurements or your weekly baseline to your normal values, to determine when you are consistently more stressed than normal (that’s probably a good time to implement some changes!).

Since a picture is worth a thousand words:

Reduced HRV (higher stress) in response to two very different events: running the new york city marathon, and celebrating New Years. Stress = training + lifestyle.

If you are interested in learning more about how to interpret your daily scores, check out out the Ultimate Guide to Heart Rate Variability, parts 1 and 2:

Getting practical: what do you need to get it done?

We’ve assessed that the Apple Watch can record high-quality data, the RR intervals are accurate and can be used to compute rMSSD reliably (our marker of physiological stress) and finally, we have seen that night data automatically collected is of little use, and also that we can trigger a measurement first thing in the morning using the Breathe app.


The last thing that remains to be done is to correctly interpret that morning measurement.

What we do in the HRV4Training app, is to learn how your physiology changes over periods of several weeks, learn what is normal in your specific case, and then analyze significant changes from your normal values, so that we can provide you with meaningful advice based on high quality, contextualized measurements.

HRV4Training app + Breathe for the morning measurement

Here is a brief overview of how to use HRV4Training with the Apple Watch, so that you can take a contextualized and reproducible morning measurement, reflecting your baseline physiological stress level:

  1. Select Health as data source under Menu / Settings in the HRV4Training app, then authorize HRV4Training to read HRV data and RR intervals from Health, when automatically prompted
  2. When you wake up, take a measurement using the Breathe app on your Apple Watch
  3. Right after, open the HRV4Training app on your phone, tap ‘Read from Health’ from the main screen, and that’s it. We’ll be doing the math and prompting you with the usual Tags to fill in so that you can add context around your measurements.
Set default mode to Health instead of using the Camera or Bluetooth sensors, allow HRV4Training to read from Health, and you are good to go. In the morning, measurements will be taken using the Breathe app, which pushes RR intervals to Health, then you can read the data from HRV4Training, which will interpret it in the context of your historical data.

Once you do this for a few days, the app starts building your normal values and understand how your physiology changes in response to training and lifestyle stressors.

You’ll be able to understand for example when values are consistently lower than your normal, often highlighting a period of higher stress that might require prioritizing recovery, in order to improve performance (or wellbeing) in the long run. At the same time, the app will be able to disregard day-to-day changes that are just part of the typical oscillations seen in HRV.

I hope you found this write-up useful.


Marco holds a PhD cum laude in applied machine learning, a M.Sc. cum laude in computer science engineering, and a M.Sc. cum laude in human movement sciences and high-performance coaching.

He has published more than 50 papers and patents at the intersection between physiology, health, technology and human performance.

He is the co-founder of HRV4Training and loves running.

Twitter @altini_marco

New to HRV4Training?



Marco Altini

Founder, Data Science @ouraring Lecturer @VUamsterdam. PhD in Machine Learning, 2x MSc: Sport Science, Computer Science Engineering. Runner