Vote Charlie!

In flat suburbs with clear skies, Garmin 67i GPS far more accurate than Pixel 6 Pro, Fitbit Charge 6

Posted at age 36.

I recently picked up a Garmin GPSMAP 67i off eBay to compare the GPS accuracy to that of my phone and my Fitbit Charge 6. Long story short, the results have been so wonderful I will henceforth carry an extra device heavier than my phone on every run and hike.

For my running every street project, I need the the GPS tracklogs of my runs to be accurate enough to at least correctly identify the streets. Since I’m a bit anal about data sometimes, ideally it’d be accurate down to the sidewalk and look fairly smooth.

When I started tracking runs with my phone using the app Runkeeper in 2010, GPS was reasonably good enough in Madison, Wisconsin. Once I started running in San Francisco, though, often the lines were very jagged. This situation has gotten better and worse over time, with new phones and satellite connectivity, but it’s still pretty bad overall.

Thankfully Runkeeper has an activity editing feature that allows editing the GPS points. This has been a blessing despite the feature breaking a bunch of times over the years. Nonetheless, I am currently in the habit of spending 5 to 15 minutes after each long run fixing the GPS points in the Runkeeper web UI. This is tedious and problematic. I need to be careful to not end up with overly stretched sections, as once imported into Strava, it would think I ran really fast for that segment, and I want it to be accurate. Also, resaving the activity changes the stats, and I can have issues with my phone app saving over my changes or creating duplicate activities. Then I need to make sure this all syncs correctly to CityStrides so my lifemap is accurate.

The Runkeeper editor has been pretty stable lately, but Runkeeper itself has been neglected for years now. They haven’t even let new developers use their APIs to access data since at least 2020. Frankly I would not be surprised if they shut down tomorrow, and I have been exporting my data weekly via their website-triggered offline batch process for some time now. I am thus aiming to switch to Strava, but I need to figure out transfering all my data. This will be a separate project as the best bet service I found, Tapiriik, has been failing for me after importing just a few dozen activities.

That brings me to fixing the data at the source. I searched for existing comparisons folks may have done across various GPS devices. I found plenty of comparisons across Fitness trackers, though not much comparing a watch to a phone to a handheld GPS device. The thing that convinced me to try a standalone GPS was the video Grand Canyon GPS Test - Garmin vs Apple and some of the comments, where people reported the Garmin tracks being much better than their iPhones. I spent some time deciding which Garmins would be acceptable, and decided on the newly released 67 series since it has vastly better battery life than the 66 series, probably due to sharing circuitry with their Fenix watches. So I found a cheap-ish one on eBay and ordered. It arrived last week, and I’ve now used it on four activities.

Test 1: 30 minute walk

I first did a short test to make sure I could use all three devices and get familiar with exporting the GPX file from the Garmin. The stats associated with that were as follows:

  • Garmin 67i
    32:18, 1.36mi, 164ft up, 180ft down
    1938 points
  • Pixel 6 Pro Runkeeper
    31:39, 1.33mi, 115ft up, 115ft down
    221 points, 8.59 seconds per point, 166 points per mile
  • Fitbit Charge 6
    32:04, 1.33mi, 656ft up, 525ft down
    1877 points

Test 2: 10 mile run

June 27, I went for a 10 mile run in San Leandro, California, tracking the GPS with all three devices.

Raising another benefit of a standalone GPS, my Runkeeper tracking mysteriously stopped partway through the run. I’ve struggled with this many times, often relying on my Fitbit as a backup, and then needing to stitch together GPX files, after converting the Fitbit’s TCX file to GPX — and this may not even be possible anymore after Google shut down Fitbit’s website.

The stats associated with each device are as follows:

  • Garmin 67i
    1:42:44h, 10.7mi, 49ft up, 66ft down
    6156 points
  • Pixel 6 Pro Runkeeper
    1:11:32, 7.17mi, 0ft up, 16ft down
    1104 points, 3.89 seconds per point, 154 points per mile
  • Fitbit Charge 6
    1:42:45h, 10.6mi, 2067ft up, 2051ft down
    6163 points

I created a custom Google Map with these three tracks, images of which follow. The Fitbit is in teal, the Pixel phone in orange, and the Garmin in purple. The Garmin is the only line that does not cut corners through houses, and is generally very smooth.

Overview

Overview

2024-06-27 Sample A

2024-06-27 Sample A

2024-06-27 Sample B

2024-06-27 Sample B

2024-06-27 Sample C

2024-06-27 Sample C

2024-06-27 Sample D

2024-06-27 Sample D

Test 3: 4 mile run

Another run in Oakland showed similar results. The Pixel 6 Pro was closer to the Garmin this time, whereas the Fitbit was lagging around every curve.

2024-07-01

2024-07-01

Test 4: 8 mile run

Another run in Oakland yielded a corrupted Fitbit file that is therefore not shown, but a Pixel 6 Pro line in orange that’s not too bad this time, but still cuts corners through houses.

2024-07-02

2024-07-02

Observations

Overall, the Garmin 67i tracks were nearly perfect. There were a few cases they did deviate 10-20 feet from the sidewalk I was running on, but the lines were most accurate by far. Both the other devices had serious deficiencies and multiple cases of veering hundreds of feet off the street, especially after turns.

One factor in this is each device’s GPS chip, which dictates what capabilities it has — the satellites it can connect to, whether it can receive multiple bands per satellite for added accuracy, etc. I don’t have the details on what the Fitbit Charge 6 or the Pixel 6 Pro can do. The Garmin 67i definitely is multiband and can connect to a wide range of satellite types. In this test, I believe only “GPS” satellites were used, so that’s not relevant. But multiband could have played a role. According to Reddit, though, the Pixel 6 Pro does support multiband:

Thanks to some GPSTest users and the GPSTest Database, looks like the #Pixel6 and #Pixel6Pro are both sporting a u/Broadcom BCM4776 for #GNSS hardware and support dual-frequency (L1/L5, B1/B2a, E1/E5a) - see the data in the spreadsheet at https://docs.google.com/spreadsheets/d/1jXtRCoEnnFNWj6_oFlVWflsf-b0jkfZpyhN-BXsv7uo/edit?usp=sharing.

Another factor to consider is the frequency the device records GPS points. The Garmin allows configuring this to record a point every specific number of seconds or a specific number of thousandths (or maybe hundredths) of a mile or kilometer. I set it to one point per second. The Fitbit Charge 6 seems to also record one point per second, so its lines were much smoother than the Pixel 6 Pro lines. Runkeeper does not have settings for this, but I can tell from the walk and the run comparison that it records one point every roughly 0.01 kilometers. I did not know this until this test, and this explains why my prior strategy of waiting a few seconds at the corners of turns, especially in cul-de-sacs, did not yield notably better tracks. I was waiting, but not moving, so it was not recording more points.

I’m eager to see how the Garmin performs in dense tall buildings such as downtown San Francisco, as well as in canyons and mountains. I’ll post a followup once I’ve been able to do more such tests.