This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Instant pace is not accurate and has bias towards slower than actual pace

It appears instant pace on my Fenix 6X Sapphire has a consistent bias towards a slower than actual pace, often by 0:30-1:00 min/mile. 
That makes it more difficult to pace accurately, for example during races. It seems the bias is worse on more challenging terrain, for example on trails or under tree cover.

To understand this better I wrote a python script that parses a run activity that I export in TCX format (for easier parsing because TCX is a text based format).

Here are some examples of my script output. This is from a faster paced trail run on moderate tree covered trails:

Mile 1.00: Split: 8:42, Avg Pace: 10:04
Mile 2.00: Split: 8:52, Avg Pace: 9:22
Mile 3.00: Split: 8:37, Avg Pace: 9:17
Mile 4.00: Split: 8:04, Avg Pace: 8:31
Mile 4.53: Split: 8:03, Avg Pace: 8:03
----------
Overall pace 8:30, Avg Pace: 9:08

In this example Split time is produced every mile based on elapsed time from the beginning.
Avg Pace is produced by looking at the instant speed reported each second in each sample, averaging it over all samples of that split, and then converting that average speed to pace format (in minutes per mile). Basically Avg Pace represents the averaged result of what the watch was showing me during the run.

If anyone questions that approach, it should be OK to average the speed because it is sampled at even intervals every second (it wouldn't be OK in the case of smart recording).

As you can see there is quite a bit of discrepancy, especially in the beginning, although it gets better towards the end. Overall, after averaging, the watch reported 0:38/mile slower instant pace than what I actually ran, so there is a strong bias towards slower pace.

Here is another example - this is from a mix of road and suburban trails on more open terrain:

Mile 1.00: Split: 9:07, Avg Pace: 9:22
Mile 2.00: Split: 8:04, Avg Pace: 8:09
Mile 3.00: Split: 10:49, Avg Pace: 10:43
Mile 4.00: Split: 10:35, Avg Pace: 11:30
Mile 5.00: Split: 8:23, Avg Pace: 8:18
Mile 6.00: Split: 13:05, Avg Pace: 13:39
Mile 7.00: Split: 7:58, Avg Pace: 7:56
Mile 8.00: Split: 9:08, Avg Pace: 9:34
Mile 9.00: Split: 8:11, Avg Pace: 8:44
Mile 10.00: Split: 8:43, Avg Pace: 8:46
Mile 11.00: Split: 10:08, Avg Pace: 10:13
Mile 12.00: Split: 8:22, Avg Pace: 8:32
Mile 13.00: Split: 8:29, Avg Pace: 8:30
Mile 13.76: Split: 10:02, Avg Pace: 10:00
----------
Overall pace: 9:21, Avg Pace: 9:32

Even though this is much better overall, during some miles the discrepancy between the split times and the averaged instant pace was still up to 1 min/mile.

One more example - this is from a much slower mountainous trail run on steep terrain with a good amount of walking:
Mile 1.00: Split: 9:44, Avg Pace: 10:17
Mile 2.00: Split: 11:44, Avg Pace: 12:15
Mile 3.00: Split: 14:14, Avg Pace: 14:08
Mile 4.00: Split: 29:14, Avg Pace: 27:51
Mile 5.00: Split: 17:40, Avg Pace: 20:02
Mile 6.00: Split: 12:23, Avg Pace: 12:43
Mile 7.00: Split: 12:36, Avg Pace: 13:46
Mile 8.00: Split: 11:53, Avg Pace: 12:34
Mile 9.00: Split: 14:34, Avg Pace: 15:07
Mile 10.00: Split: 24:11, Avg Pace: 23:23
Mile 11.00: Split: 8:50, Avg Pace: 8:46
Mile 12.00: Split: 12:23, Avg Pace: 13:31
Mile 13.00: Split: 10:46, Avg Pace: 11:50
Mile 14.00: Split: 16:09, Avg Pace: 16:42
Mile 15.00: Split: 17:20, Avg Pace: 17:51
Mile 16.00: Split: 13:23, Avg Pace: 13:32
Mile 16.68: Split: 11:14, Avg Pace: 12:32
----------
Overall pace: 14:40, Avg Pace: 15:15

In this case the instant pace was faster than actual in a couple of splits, mostly in very slow ones where I walked or stopped. But the overall pattern is the same - there is a clear bias towards a slower pace.

I should add that today I installed a Rolling Average Pace Garmin IQ field that averages pace over the last 100 yards. I placed that field next to Garmin's Instant Pace and watched them side by side during an easy run. One thing was clear, every time I reached a steady pace and cruised for a while to let the rolling pace stabilize, the rolling average pace was always a bit faster than Garmin's Instant pace, which confirmed the same bias that I discovered from the post-analysis of the runs with my script.

Has anyone had similar observations?

12/05/21 EDIT: I changed the title of the post since Garmin seems to have improved the pace. It is more stable and precise than before, meaning that the values are closer together, but it is still not accurate - there is still a significant bias towards slower than actual pace

  • My suspicion is that whatever algorithm Garmin is using for the instant pace, that does take cadence into account but it doesn't consider that the stride length might change depending on grade and terrain, or at least the stride length doesn't adapt quick enough and Garmin puts too much weight into factoring the stride length into the calculation of instant pace.

    I was recently running with two watches at the same time - Fenix 6X and Ambit3 Peak. Ambit3 Peak is actually very good with instant pace - thanks to better GPS accuracy and their FusedSpeed algorithm. My observation was that when running steady on flats, once instant pace stabilized, it was the same between the two watches. But the minute I start running downhill, F6X's instant pace would always fall significantly behind Ambit's instant pace. That's because the cadence remains the same but the stride length lengthens on downhills, which F6X doesn't seem to account for.

    Similarly, on uphills stride length tends to shorten, so F6X seems to have a tendency to show a slightly faster than actual stride length. 

    That is probably only one of the factors, but it clearly shows that Garmin does some processing of the GPS pace and likely fusing it with the cadence data, and that isn't just the straight GPS data. I also think the algorithm above likely depends on the quality of GPS data. On the open Garmin seems to trust the GPS data much more because it considers it to be more accurate - internally it has a metric that shows strength of GPS signal. But under the dense tree cover the quality of GPS data drops and seems to be putting more weight into the cadence derived pace, which causes the issue I described above.

  • OMG, I knew it wasn't me just being crazy.  I run on the Hike & Bike trail in downtown Austin and face this issue daily.  I think this somehow also affects step pace.  When I'm doing a workout, a lot of the times the instant pace is different than the step pace, which I'd imagine should be the same.

  • I also swtiched from a 245 Music to a Fenix 6X Pro, and it feels like the 6X Pro is less accurante.

  • Here is a good example of the issue. This is a segment of my recent run where I ran with a steady pace on a flat dirt road. The graph shows pace (gray), my heart rate (red), and my cadence (orange). As you can see my effort was steady because both the heart rate and the cadence remain nearly the same. Yet the pace fluctuates between 10 min/mile and 13 min/mile in the first half, then suddenly goes 7:50/mile where it remains pretty steady for a few minutes. Then, at the end I actually started to slow down a bit - you can see my HR slowly dropping.

    I can tell you for sure that the pace was actually roughly the same in the first half of the graph as in the second half. The actual difference is that there were trees lining the sides of the road in the first half, and in the second half I ran in the open! That's it!

    What kind of running watch is that?! Other brands have long figured out how to fuse accelerometer data (cadence) with the less reliable GPS data to get a good pace. See Suunto's Fused Speed for example. Yet Garmin can't be bothered to implement the same for their flagship watch that costs nearly $1000.

    Basically, cadence based speed is precise (repeatable) but not accurate (meaning the absolute values are off). On the other hand GPS based pace is quite accurate if averaged over a longer distance but not precise (the values jump all over the place). But there is a well known algorithm for fusing the two that would make the fused pace both more accurate and more precise than either cadence based pace or GPS based pace. That isn't exactly a rocket science. And I think Garmin already attempts to do something like that because the pace reacts on cadence pretty quickly. But whatever Garmin has implemented is clearly not working correctly when the GPS signal strength isn't the best.


  • If only Garmin people were reading the forum posts... 

    This has been discussed forever and every time I see a GPS update on my watch I have hope, but alas... I run the same route all the time, some electric lines but just residential stuff, low wooden houses, so no big deal for satellite reception. And I run a super steady pace, no sprinting. Still, the pace goes all over the place, although lap data and total average are correct.

    If anyone at Garmin gives a damn, please reply to this thread. 

  • Yeah I'm pretty much on your opinion

  • I know I keep beating a dead horse, but here is some data that corresponds to the graph I pasted above.
    This is an output of a script I wrote to analyze the activity data, and below is an example of how wrong instant pace can be.

    Columns are the following:
    dist - distance from the beginning (in meters because how it is produced by the watch)
    pace - instant pace as stored in the activity, converted to min/mile
    1_sec_pace - instant pace based on the increase of distance from the previous sample (typically the delta is 1 second). This is obviously unfiltered so the 1_sec_pace jumps around quite a bit, but that should give you a sense of the correct range, because that is how fast the watch adds the distance
    60_sec_pace - similar to 1 sec pace but averaged over the last 60 samples (typically 1 minute). This is perhaps the best representation of the actual pace that I ran at that moment. Obviously that would be incorrect if I stopped, but in this particular example there weren't any stops.

    Now take a look below and see how much slower the pace recorded by the watch than the 60-sec average pace based on the distance and time. This roughly corresponds to the left side of the graph above.

    dist: 10861.58  pace: 13:22  1_sec_pace:  7:48 60_sec_pace:  8:51 spm: 86
    dist: 10865.22  pace: 13:22  1_sec_pace:  7:22 60_sec_pace:  8:44 spm: 86
    dist: 10869.01  pace: 13:22  1_sec_pace:  7:05 60_sec_pace:  8:37 spm: 86
    dist: 10872.25  pace: 13:26  1_sec_pace:  8:17 60_sec_pace:  8:29 spm: 86
    dist: 10875.77  pace: 13:26  1_sec_pace:  7:37 60_sec_pace:  8:24 spm: 86
    dist: 10879.99  pace: 13:04  1_sec_pace:  6:21 60_sec_pace:  8:19 spm: 86
    dist: 10883.44  pace: 12:50  1_sec_pace:  7:46 60_sec_pace:  8:15 spm: 86
    dist: 10886.32  pace: 12:20  1_sec_pace:  9:19 60_sec_pace:  8:13 spm: 87
    dist: 10889.23  pace: 12:20  1_sec_pace:  9:13 60_sec_pace:  8:14 spm: 87
    dist: 10892.66  pace: 12:30  1_sec_pace:  7:49 60_sec_pace:  8:14 spm: 87
    dist: 10896.02  pace: 12:43  1_sec_pace:  7:59 60_sec_pace:  8:17 spm: 87
    dist: 10899.53  pace: 12:43  1_sec_pace:  7:38 60_sec_pace:  8:20 spm: 87
    dist: 10902.77  pace: 12:37  1_sec_pace:  8:17 60_sec_pace:  8:24 spm: 87
    dist: 10905.38  pace: 12:23  1_sec_pace: 10:17 60_sec_pace:  8:29 spm: 87
    dist: 10908.81  pace: 12:17  1_sec_pace:  7:49 60_sec_pace:  8:28 spm: 87
    dist: 10912.19  pace: 12:17  1_sec_pace:  7:56 60_sec_pace:  8:26 spm: 86
    dist: 10915.39  pace: 12:20  1_sec_pace:  8:23 60_sec_pace:  8:27 spm: 86
    dist: 10918.71  pace: 12:27  1_sec_pace:  8:05 60_sec_pace:  8:28 spm: 86
    dist: 10921.63  pace: 12:27  1_sec_pace:  9:11 60_sec_pace:  8:31 spm: 86
    dist: 10924.27  pace: 12:30  1_sec_pace: 10:10 60_sec_pace:  8:32 spm: 86
    dist: 10927.58  pace: 12:30  1_sec_pace:  8:06 60_sec_pace:  8:32 spm: 86
    dist: 10930.66  pace: 12:30  1_sec_pace:  8:43 60_sec_pace:  8:33 spm: 86
    dist: 10934.37  pace: 12:30  1_sec_pace:  7:14 60_sec_pace:  8:32 spm: 86
    dist: 10937.37  pace: 12:27  1_sec_pace:  8:56 60_sec_pace:  8:35 spm: 86
    dist: 10940.24  pace: 12:17  1_sec_pace:  9:21 60_sec_pace:  8:36 spm: 86
    dist: 10942.69  pace: 12:14  1_sec_pace: 10:57 60_sec_pace:  8:39 spm: 86
    dist: 10944.94  pace: 11:59  1_sec_pace: 11:55 60_sec_pace:  8:44 spm: 86
    dist: 10947.62  pace: 11:53  1_sec_pace: 10:01 60_sec_pace:  8:48 spm: 86
    dist: 10950.08  pace: 11:53  1_sec_pace: 10:54 60_sec_pace:  8:46 spm: 86
    dist: 10952.16  pace: 11:56  1_sec_pace: 12:54 60_sec_pace:  8:45 spm: 87
    dist: 10954.09  pace: 12:08  1_sec_pace: 13:54 60_sec_pace:  8:44 spm: 87
    dist: 10956.25  pace: 12:14  1_sec_pace: 12:25 60_sec_pace:  8:42 spm: 87
    dist: 10959.08  pace: 12:33  1_sec_pace:  9:29 60_sec_pace:  8:42 spm: 87
    dist: 10962.71  pace: 12:33  1_sec_pace:  7:23 60_sec_pace:  8:37 spm: 87
    dist: 10967.07  pace: 12:27  1_sec_pace:  6:09 60_sec_pace:  8:28 spm: 87
    dist: 10972.16  pace: 12:14  1_sec_pace:  5:16 60_sec_pace:  8:20 spm: 87
    dist: 10975.81  pace: 11:19  1_sec_pace:  7:21 60_sec_pace:  8:18 spm: 87
    dist: 10979.56  pace: 11:03  1_sec_pace:  7:09 60_sec_pace:  8:18 spm: 87
    dist: 10983.36  pace: 11:03  1_sec_pace:  7:03 60_sec_pace:  8:19 spm: 87
    dist: 10987.01  pace: 11:03  1_sec_pace:  7:21 60_sec_pace:  8:15 spm: 87
    dist: 10989.14  pace: 10:46  1_sec_pace: 12:36 60_sec_pace:  8:17 spm: 87
    dist: 10992.00  pace: 10:25  1_sec_pace:  9:23 60_sec_pace:  8:16 spm: 87
    dist: 10994.64  pace: 10:25  1_sec_pace: 10:10 60_sec_pace:  8:17 spm: 87
    dist: 10997.72  pace: 10:34  1_sec_pace:  8:43 60_sec_pace:  8:16 spm: 87
    dist: 11000.36  pace: 10:34  1_sec_pace: 10:09 60_sec_pace:  8:20 spm: 87
    dist: 11002.99  pace: 10:23  1_sec_pace: 10:12 60_sec_pace:  8:24 spm: 87
    dist: 11006.47  pace: 10:23  1_sec_pace:  7:43 60_sec_pace:  8:25 spm: 86
    dist: 11009.26  pace: 10:25  1_sec_pace:  9:37 60_sec_pace:  8:26 spm: 86
    dist: 11012.01  pace: 10:36  1_sec_pace:  9:45 60_sec_pace:  8:26 spm: 87
    dist: 11014.57  pace: 10:41  1_sec_pace: 10:29 60_sec_pace:  8:27 spm: 87
    dist: 11017.46  pace: 10:43  1_sec_pace:  9:17 60_sec_pace:  8:29 spm: 87
    dist: 11020.40  pace: 10:46  1_sec_pace:  9:07 60_sec_pace:  8:30 spm: 86
    dist: 11024.04  pace: 10:53  1_sec_pace:  7:22 60_sec_pace:  8:28 spm: 86
    dist: 11026.77  pace: 10:56  1_sec_pace:  9:50 60_sec_pace:  8:27 spm: 86
    dist: 11029.66  pace: 10:58  1_sec_pace:  9:17 60_sec_pace:  8:27 spm: 86
    dist: 11032.05  pace: 10:58  1_sec_pace: 11:13 60_sec_pace:  8:31 spm: 85
    dist: 11034.82  pace: 10:58  1_sec_pace:  9:41 60_sec_pace:  8:32 spm: 85
    dist: 11036.70  pace: 11:01  1_sec_pace: 14:16 60_sec_pace:  8:37 spm: 86
    dist: 11038.56  pace: 11:01  1_sec_pace: 14:26 60_sec_pace:  8:44 spm: 86
    dist: 11040.77  pace: 11:03  1_sec_pace: 12:08 60_sec_pace:  8:49 spm: 87
    dist: 11043.49  pace: 11:06  1_sec_pace:  9:52 60_sec_pace:  8:51 spm: 87
    dist: 11046.23  pace: 11:06  1_sec_pace:  9:47 60_sec_pace:  8:53 spm: 87
    dist: 11049.12  pace: 11:09  1_sec_pace:  9:17 60_sec_pace:  8:56 spm: 87
    dist: 11051.71  pace: 11:14  1_sec_pace: 10:21 60_sec_pace:  8:58 spm: 87
    dist: 11054.12  pace: 11:22  1_sec_pace: 11:08 60_sec_pace:  9:01 spm: 87
    dist: 11056.19  pace: 11:33  1_sec_pace: 12:57 60_sec_pace:  9:08 spm: 87
    dist: 11058.08  pace: 11:41  1_sec_pace: 14:12 60_sec_pace:  9:13 spm: 87
    dist: 11060.05  pace: 11:53  1_sec_pace: 13:37 60_sec_pace:  9:16 spm: 86
    dist: 11062.96  pace: 12:05  1_sec_pace:  9:13 60_sec_pace:  9:16 spm: 86
    dist: 11065.89  pace: 12:17  1_sec_pace:  9:09 60_sec_pace:  9:17 spm: 86
    dist: 11068.43  pace: 12:23  1_sec_pace: 10:34 60_sec_pace:  9:20 spm: 86
    dist: 11070.77  pace: 12:27  1_sec_pace: 11:28 60_sec_pace:  9:24 spm: 86
    dist: 11073.49  pace: 12:33  1_sec_pace:  9:52 60_sec_pace:  9:26 spm: 86
    dist: 11076.33  pace: 12:33  1_sec_pace:  9:27 60_sec_pace:  9:25 spm: 86
    dist: 11079.41  pace: 12:33  1_sec_pace:  8:43 60_sec_pace:  9:26 spm: 86
    dist: 11083.30  pace: 12:30  1_sec_pace:  6:54 60_sec_pace:  9:24 spm: 85
    dist: 11087.42  pace: 12:02  1_sec_pace:  6:31 60_sec_pace:  9:21 spm: 85
    dist: 11090.77  pace: 11:47  1_sec_pace:  8:00 60_sec_pace:  9:21 spm: 85
    dist: 11093.71  pace: 10:27  1_sec_pace:  9:07 60_sec_pace:  9:21 spm: 85
    dist: 11097.10  pace: 10:27  1_sec_pace:  7:55 60_sec_pace:  9:19 spm: 85
    dist: 11101.19  pace: 10:39  1_sec_pace:  6:33 60_sec_pace:  9:16 spm: 85
    dist: 11105.11  pace: 10:39  1_sec_pace:  6:51 60_sec_pace:  9:14 spm: 86
    dist: 11108.65  pace: 10:34  1_sec_pace:  7:35 60_sec_pace:  9:14 spm: 86
    dist: 11111.55  pace: 10:27  1_sec_pace:  9:15 60_sec_pace:  9:14 spm: 87
    dist: 11114.23  pace: 10:20  1_sec_pace: 10:00 60_sec_pace:  9:15 spm: 87
    

  • Having the same issue with watch when tree cover is present - thinking about returning and looking at the Suunto you recommended. Thank you.

  • It has been 9 months since the questions were asked but there is still no solution in sight. This is my pace and just look at how at some point the pace drops below 7min / km. Can Garmin fix this through an update? Unfortunately, the forunner 245 displays much more accurately than my fenix 6x.

  • Here's an experiment I've done many times when running because it is short and easy to do. I check how long it took to run 0.1 mile and compare that to the pace.on the watch. For example, when the distance field changes to let's say 3.1 miles, I remember the time, then see what time it was at 3.2 miles, get the total number of seconds. Multiplying that by 10 gives me the average pace for that 0.1 mile segment.

    My experience is that that average pace is almost always faster than the pace shown by the watch anytime during that segment, at least when running on trails. For example, my watch would show me pace ranging from 9:30/mile to 10:20/mile, but then I finish 0.1 mile in 50 seconds, which translates to 500 seconds or 8:20 per mile. 

    I should add that I complained to customer support about this issue and they agreed that it was a known issue that other users have also reported. Let's see if it get addressed any time soon. Until then I wouldn't spend money on another Garmin device.