Why do my heart rate numbers sometimes seem incorrect?

Created by Nitin Nair, Modified on Fri, 13 Dec, 2024 at 3:07 PM by David ten Have

The heart rate metric on EmotiBit is derived from PPG (photoplethysmography) raw data. If the heart rate number you get from EmotiBit doesn't seem to match your expectation (e.g. from checking your pulse), looking at the raw PPG data can help figure out why. Ideal raw PPG data should have clearly defined peaks every time your heart beats and a pulse-wave of oxygenated blood reaches the sensor.



PPG works by shining different wavelengths of light (EmotiBit uses red, infrared, and green light) into your body and measuring how much light is reflected back (vs absorbed). The light reflecting back to the sensor changes depending on the volume of oxygenated blood in the underlying flesh and leads to the observable peaks and valleys accompanying the beating of your heart.


There are some common Signal Acquisition reasons that raw PPG can appear less than ideal:

  1. PPG signal is strongest on "fleshy" body parts that are highly vascularized like the finger or upper arm. The wrist, while a common place to wear a watch, is often not an ideal place to sense PPG because it's mostly bones and connective tissue. Sometimes adjusting the sensor position just slightly will substantially improve the signal as it moves over a more vascularized area. Check out this blog post for more discussion of body locations to wear EmotiBit https://www.emotibit.com/sensing-bio-metrics-from-anywhere-on-the-body/
  2. If the sensor is strapped on too tightly, it can actually squeeze the blood out of your flesh and lead to a signal that is flatlined or very noisy. Similarly, if you are cold, your body can reduce blood flow to your extremities to conserve heat and this will reduce the quality of the PPG signal.

  3. Because PPG senses light, anything that blocks light can degrade the PPG signal. Hair, for example, can partially block, bend or reflect the light, so it's best to put EmotiBit on a relatively hair-free patch of skin. Dark skin pigments can also affect the PPG signal in a wavelength-specific manner.

  4. PPG is susceptible to movement artifacts and it's important to look at how movement affects the signals when choosing body locations, behavioral activities, and signal processing pipelines. Movement artifacts can be exaggerated if the sensor flops around because it isn't snug enough against the skin.



Assuming the raw PPG signals are reasonably optimized, the Signal Processing Algorithms are another opportunity to get more accurate measurements of heart rate (HR). The EmotiBit heart rate algorithm presently built into the device firmware uses simple bandpass filters, followed by a peak/trough detector to calculate inter-beat intervals (IBIs) and heart rate. Algorithms for calculating HR can range from simple approaches like this to much more complicated artifact rejection and "self-aware" signal-quality assessment systems, including a hot area of research combining sensor fusion of PPG data with accelerometer/IMU data and machine learning to clean the data.


Many consumer-grade devices employ more heavy-handed and/or sophisticated HR algorithms than EmotiBit. These are intended to give you more correct (or at least correct-seeming) numbers for HR even if the underlying PPG may have excessive noise. For consumer-grade goals of getting an HR number while jogging this can be a very handy feature, but it can also create problems for more in-depth biometric research. As discussed in this Frontiers in Computer Science paper, heavy-handed HR algorithms can distort scientific results and make calculating derivatives like heart rate variability (HRV) unreliable/uninterpretable. Because the algorithms that calculate HR on consumer-grade devices are usually closed-source, it can be impossible to know how these heavy-handed algorithms may be distorting the results and whether that changes over time.


EmotiBit provides:

  1. access to the raw PPG data and 
  2. access to the algorithm source code so that users can assess when the HR numbers are accurate and adjust either the Signal Acquisition or the Signal Processing Algorithms to meet the goals of a specific study design.


There are an ever-growing number of HR algorithms available on the internet, but here are some that have surfaced previously in this forum in posts and comments that may be helpful:



If you find a handy algorithm, please add it as a comment on this post, and if you modify the EmotiBit HR algorithm and wish to share it with the community, please submit a pull request in the EmotiBit FeatherWing or EmotiBit MAX30101 repositories on github.

Was this article helpful?

That’s Great!

Thank you for your feedback

Sorry! We couldn't be helpful

Thank you for your feedback

Let us know how can we improve this article!

Select at least one of the reasons
CAPTCHA verification is required.

Feedback sent

We appreciate your effort and will try to fix the article