Garmin is Broken – Firstbeat Stats Are Simply Wrong

Garmin is Broken – Firstbeat Stats


Since the Garmin Forerunner 955 launched I’ve let it automatically determine every Firstbeat physiology. The bottom line is that it is often producing nonsensical results for me.

It seems that my problems lie in 3 areas

  • Cycling FTP Detection with a calibrated power meter (it’s wrong)
  • Lactate heart rate determination with an HRM-PRO (it’s wrong)
  • Overnight HRV collection (it’s wrong)

Because that relatively low-level data is wrong, everything that comes from it is wrong. That’s a lot of wrong.


Some Wrong Data

It’s easy to capture screenshots on a Garmin and here are some of mine from this morning.



You can see my Training readiness 😉 as “1”, which is about as low as it can be. I would admit I had a hard workout last night but not super hard by any means. I probably should also have a day off today but I’ll be firing on all cylinders tomorrow despite Garmin saying I need 64 hours of recovery (I don’t).

Last Night’s Ride

Let’s start with yesterday evening’s ride which was a one-hour TT-effort at about 93% of my true FTP.

My heart rate track was recorded correctly and the 955 failed to connect to my Power2Max Power meter even though it was paired and even though my Wahoo Bolt 2 managed to connect perfectly fine.

You can see that my average HR was 147bpm for the entire ride but for the hour effort, it averaged about 156bpm and was a solid Z3/Z4 effort as my real HR threshold lies somewhere in the low 160s. The 171bpm at the end is not a maximal cycling HR for me and, indeed, Garmin thinks my cycling HRmax is about 184bpm which is plausible.



Garmin has determined my cycling LTHR to be 135bpm and my FTP to be about 8% below what it really is.

I just can’t explain that. My source HR and Watts data are over 99% correct and I have performed numerous maximal or near-maximal rides for a variety of durations from 1-minute to 30-minutes over the last month. Every other sports data platform I use makes plausible FTP And LTHR calculations. Not Garmin.

Note: I did a Kickr-based FTP test a couple of days ago with a complete 20-minute hard effort!

You can see in the image above that if my thresholds are too low (which they are) then the result is a massively high and incorrect training load. If it had said Aerobic TE=3.5 & AnTE=1.5 I would have believed it.


Last Night’s Sleep

Garmin seems to get the sleep time correct. Mainly because it recognises the time I wake up simply because I press keys and look at my readiness report! 

The sleep stages are also plausible when I compare them to Oura.

However, I would bet, along with Training Load, that it’s Garmin’s overnight HRV track that has the biggest weight in the calculation of the readiness metrics. It’s wrong.

Check out the table below where I compare raw nightly HRV data and waking HRV data. Even though Garmin, Oura & WHOOP all collect overnight averages of some sort they should infer the same meaning as the waking HRV I take with a Polar H10 and HRV4Training. Garmin’s baseline (column 2) does correlate (0.25) to HRV4T’s baseline.


Correlation of HRV Readings to Polar H10/HRV4Training (Not Readiness Score) – day-to-day (1) and baseline (2) correlations


What’s Wrong?

The FTP & LTHR algorithms are wrong and, for me, the overnight HRV data capture is inaccurate.

Garmin seems to calculate LTHR and FTP in a strange way and unlike every other company’s sports data platforms. It’s 2022 and numerous companies have shown that you can get a half-decent estimate of FTP from shorter durations than 20 minutes.

Garmin should determine HR correctly at resting levels for everyone. However, that’s not the same as getting the correct HRV at resting levels like when sleeping. Noise reduction algorithms play a key role in getting correct HRV and, at least for me, Garmin seems to get this wrong even when on the same hand as Oura.

Maybe it works for you?





Reader-Powered Content

This content is not sponsored. It’s mostly me behind the labour of love which is this site and I appreciate everyone who follows, subscribes or Buys Me A Coffee ❤️ Alternatively please buy the reviewed product from my partners. Thank you! FTC: Affiliate Disclosure: Links pay commission. As an Amazon Associate, I earn from qualifying purchases.

25 thoughts on “Garmin is Broken – Firstbeat Stats Are Simply Wrong

  1. I’ve always thought the threshold numbers and recovery durations are nonsense on my Fenix 5 Plus so kinda glad it is not just me.

  2. For me with Epix2 beta, the LTHR for running is correct (yesterday’s run was 181 and yesterday it detected 180..My MHR is 196 so Ok) but the beta has completely broken the race predictor values.
    For example, my best 5k is 15:47. Right now a Z4 5k is usually 19:30-20:30 , but after the installation of the beta it shows me 57:34 and almost 11 hours to run a marathon🙈. Apart from that it changes ever tim my HR zones according to my age (it depends on LTHR=180bpm detected by Garmin yesterday but as my age is 49 it changes z5 from 160 to 175).
    I have had to change them manually 3 times since yesterday.

    1. I have found significant problems when setting a manual LTHR. it seems very hard to get rid of it to revert back to automatic.
      Readers who correctly set manual HR zones (as Ihave done for years) should find Firstbeat stuff to be much more accurate than I describe in this article

      1. Yes, but it’s automatically detected. I just change my HR zones and Garmin changes them after every run. Last time I found Z5 (%100 – %93) just an impossible interval that I cannot select manually

  3. As a 6X Pro Solar owner, signed up to the Beta Program, my impression is that Garmin has far too many balls in the air at once and nowhere near enough hands to keep them there.

    We’ve had three Alphas in quick succession, followed by the current Beta, and the same bugs are being reported with every release. Garmin is fixing nothing, but ploughs on pretending that progress is being made.

    For example, we now have the new HRV Status feature, which is great except….
    – It thinks you’re still sleeping when your sleep metrics have already been signed off for the night.
    – When you click to end HRV sleep (what’s that even about – we already have a sleep widget that works) there is no visible outcome to the action.
    – HRV Status does not sync via Garmin Connect Mobile (Android at least)
    – Sync via WiFi fails at (almost) every attempt.
    – Sync via Garmin Express is the only way to get HRV Status synced into the ecosystem and back out to GCM.
    – Even once synced, sometimes you just get the status, but no graph or average for last night. Sometimes you do.
    – On top of all that, what use is HRV Status when it is not an input to Training Readiness, which we do not have (yet at least)?

    There are countless other errors as well, including dodgy MHR detection, which of course effs up other calculations and needs manual correction, DAILY.

    Yes, it’s Alpha, OK, Beta now, but it’s about as useful as a chocolate teapot. AND THEY’RE NOT FIXING THE MAJORITY OF REPORTED BUGS OR ACKNOWLEDGING THEM OR ENGAGING IN ANY WAY WITH THEIR UNPAID TEST TEAM. They must really have the blinkers on.

    1. I don’t think it is sensible by any means to complain about bugs of a beta or alpha build which brings new features for a many years old device which already has a successor.
      I have an Instinct 2, which is not a flagship device, but newest generation of it’s own league and after a little bit buggy alpha they gradually polished every build till it came out basically bugless as a stable.
      Just be patient, and if you decide to join the beta program, think about yourself as a beta tester, not a user because that’s what you agreed to by enrolling it. And one more thing: they didn’t promise those things to make their way to the Fenix 6 line, this is basically an optional gift, which you can accept if you want, but if not you still have a watch which got years of new features already
      Still, I understand your frustrations, and I really suggest you to go back to stable builds, because it causes way less hassle during day-to-day use.

      1. Edit: I mostly meant this to the hrv status problems, for the built in functions your complaint I find totally legit too.

  4. I gave up on running LTHR years ago when I had my 935, it became useless after an update. Will wear my HRM Run on a hard cycling outing to see what happens.
    Other metrics on my 955 appear plausible overall except maybe the HRV value that should be low after very hard workouts…not so in many cases for me which is confusing., especially since TR is correctly very low. On my Ignite it correlated rather well, what they call ANS recharge I think.

    1. hrv is not a measure of how knackered you are. it’s more of a measure of how well you cope with the training. so, yes, a high hrv after a hard workout means you coped with it well. i would expect it to fall a few hours later (that’s what happens to me)

      1. Right, I wasn’t referring to (useless/unactionnabke) spot HRV values you’d get with the health test or whatever it’s called but the HRV status widget.

        Normally the night after a hard workout should see some high recovery needs and low HRV numbers. ANS recovery on the Ignite never failed to let me know I was over extending or had a (rare!) too festive evening!

        I guess here we have Training Readiness to sound an alert, still it’s a bit hard to understand what HRV status is showing exactly for “last night HRV”…

  5. I noticed one problem on my 255, but corrected it manually and – so far – it’s fine. For some reason watch detected my maxHR as 198 after one easy run… And my real maxHR is about 215 which makes a bit of a difference when calculating zones, doesn’t it?

    1. it sure does! tho you can set zones based on lthr or %Hrmax (HRreserve)
      i’ve had my HRmax recalculated several times. they are all plausible values tho.

  6. Regarding the HRV I did a correlation between HRV4training (single morning reading) versus Garmin 955 (night average).

    I know they are not the same, not directly comparable, but I expect to see a medium-high correlation between those two.

    Been using the 955 for a little more than a month now, so the sample it’s still a bit small, but looking at the results we can see the correlation is very low.

    Anyway, the interesting part is that generally both plataforms agree on the daily recommendations, and even when there was a difference (about 2 days out of more than 30), what happened is that Garmin gave an average training readiness but told me to look out for acumulated fatigue (because HRV was slightly out of normal range), while HRV4 gave me the go ahead because the subjective measuments looked good. Then 2 days later the average caught up and they matched again.

    So even though I can’t vouch for the accuracy of the numbers, the recommendations so far are solid and I specially like the fact that the training readiness is updated during the day. So right out of bed I might have a 60 for example (moderate, normal training), but if the day is particularly stressful or relaxing, it will go down or up accordingly (and usually keeps going slightly up beause the recovery hours go down).

    YMMV (and it will I’m sure)

    1. I also did the correlation with Garmin maxHRV for the night, but the numbers stayed the same, R2 is very low.

    2. “I know they are not the same, not directly comparable” – yes but they both purport to measure the same thing (HRV) albeit in a slightly different way (nightly average vs 1-3minutes). because they are measuring the same thing there should be a good correlation.
      so you get similar correlation to me. others are the same
      that said i know other people DO get good correlations.

      the recommendations CAN’T be solid…just lucky.

      1. I wonder if the “whole night” HRV readings aren’t too long and just averaging out the data too much. When you look at the (tiny) chart you can see the data points are all over the place.
        There must be a reason for Polar to only be using 4 hours…I’d need to dig out my Ignite to see how things correlate.

      2. Marcoaltini and others say that an all-night reading is valid.
        its downside is that recovery will typically improve through the night and the going-to-sleep HRV is too much affected by other things like eating late or alcohol.
        so a morning reading is best (IMHO)
        polar do 4 hours, whoop choose a mysterious period, apple does a reading every 2 hours if it can. i don’t think there is any science for any of that. At least Garmin is doing one of the accepted methods but it seems that its sensor/sensor algorithm for resting hrv is pants (in my experience)

      3. It would be interesting to compare HRV data from a chest strap worn while sleeping to the data that the watch provides. I’ve seen some complaints around the data quality from Whoop/Oura OHR sensors, which makes me somewhat hesitant to trust their data.

        FWIW, I have been sleeping with a F7 & F6 on my wrists to compare the data outputs, and they generally agree within a reasonable margin of error on the nightly HRV outputs (as well as other things like RHR, sleep duration, etc). So I have a high degree of confidence in the repeatability. I have not taken it to the next step with the chest strap.

    1. hi
      thanks that’s an interesting thread.
      to answer some of the points there
      1. rmssd and sdnn and mathematical calculations are based on the cleaned HRV readings in MSecs.
      2. my understanding is that those calculations can ‘behave’ differently depending on the person. for example if you have a heart irregularity and hence outlier values
      3. I seem to remember @marcoaltini statistically compared elitehrv to hrv4training and the results are not identical even with the same strap. again i think it comes down to how good the software is a cleaning the signals.
      4. there will be variations in hrv based on exactly when and how the reading is taken. you give the example of reading taken a few minutes apart being different. i wouldn’t necessarily expect that to happen but
      – a) doing it all in the morning eliminates the effects of many other factors
      – b) simply fiddling around with a chest strap and opening up new software or standing up between those readings could cause a difference (I take all my morning readings simultaneously if practical). I would be interested, as a control, to see how your heart rate min or heart rate varied from those two sample periods. i would bet that your resting hr changed and we can all agree that that would probably be measured correctly by a chest strap. ie if your HRmin/HRrest changes then that kinda proves that the HRV should also change. (HRrest and rMSSD seemsuperfically to be inverse proxies for each other….visually at least, they’re not in reality)
      – c) 1 minute readings are supposed to be ok but i always take 2-minute readings…just in case. 3-5 minute readings are better still and allow other HRV calculations to be made (as you have seen in hrv4training)

  7. I’m seeing very good correlation between my overnight HRV from my Oura V3 and my Garmin Epix 2 (beta).

    The correlation coefficient for my data from July 13 to Aug 4 is 0.96

  8. I think I found a bug in the Training Readiness on the 955 where consistently after recording a ride on an Edge 530 the Training Readiness shows 1 on the 955 after successful TrueUp sync.

    I’m going to post on 955 forums but first wanted to check with folks here.

    Been using 945 + Extended Display (on Edge 130) for years with the 945 where I record all runs and rides.
    Replaced with 955 in June and been using it since – multiple rides and runs weekly and Training Readiness rarely went to 1 (maybe once).
    Recently got a Edge 530 and started recording rides with the 530 and syncing with TrueUp to 955; it updates Load and everything else BUT it makes Training Readiness 1 after the Ride on the Edge.
    In my opinion, this is a bug. My assumption is that the activity on the Edge does not sync over and impact Training Readiness on the 955 but it does update everything else using TrueUp, this could be because of lack of Stamina on the Edge.

    1. seems like a bug
      what they are trying to do is a quite complex calculation (that will be even more complex under the hood than it appears).
      it’s just going to have bugs.

  9. I usually get a 1 in the morning and an average sleep score of 48. I still go out on the bike each day and ride 20k at least. It’s what I have always done. If I obeyed my 965 and did diddly squat I would end up going barking, although I believe the correct term is SMI. Something is broke but unlike the author I have no idea it’s just a gut feeling.

Comments are closed.