How are people collecting decent quality GPS tracks on a bike or on foot?

Editing to clarify:

I think my original question was worded poorly, which caused most of the answers to revolve around the inherent inaccuracy of GPS enabled smart phones, imagery offset, etc. I understand these concepts already. What I’m really looking for help from the community on is, is there anyone else out there who has recorded their tracks in their car and on their bike and noticed a considerable difference in accuracy between the two modes of transportation? I get the feeling the answer is, very few people have done this sort of thing (tested the same device with different modes of transportation), but even so, I’m wondering what could explain the difference between the two tracks. Same route, same device, different mode of transportation. I’ve already gotten a few good comments and answers specifically about this, although I think ultimately I may never know. Nonetheless, thanks to everyone who contributed!

Original question:

I’ve able to create high quality GPS tracks when driving around in my car with my iPhone X mounted to my windshield and OsmAnd recording.

Yesterday, with the weather turning rather pleasant in my hemisphere, I said gee wouldn’t it be nice to ride my bike and contribute to OSM at the same time! :exploding_head: So I mounted my phone to my bike, did a few laps around my neighborhood, got super hyped at burning calories and aligning the satellite images to the “on-the-ground truth” as they say. Got home, fired up JOSM, loaded my freshly minted GPS tracks, and… the tracks were very spread out, to the point that they are not really usable for what I wanted to do (screenshots are below).

From looking at the images, you’d think I was biking down the wrong side of the road, but I swear I was biking on the right side of the road in what would have been the biking lane if there were one. Just to make sure it wasn’t something about that particular street, a couple hours later I got in my car and did the same exact route, and the GPS tracks came back really high fidelity.

Today I reran the test on my bike and got the same result as yesterday (tracks are really spread out).

Screenshots are below (green = car tracks, pink = bike tracks). Not shown in the screenshots, but I’ve also tried recording GPS tracks while walking and holding my phone out in front of me, and gotten equally bad results.

I live in a flat area. There’s a little bit of tree cover, but it doesn’t seem to be a problem when I’m driving, so I’m not sure if that could explain the different outcomes between driving and biking.

Has anyone else had this problem and if so, how did you manage to resolve it? Is this just “oh haha those pesky smart phones lmao” or is there something else I’m missing? Thanks in advance.



Typical GPS in a smartphone is only accurate to within 5 meters in perfect conditions. Between that, the compass, and getting readings over time about what direction you’re moving, that’s good enough for navigation apps to know which road you’re on. It’s not good enough to know which lane you’re in.

OSM allows you to upload your GPS traces, in the hopes that if lots of people do so (or one person does so over multiple trips on different days and times), one would be able to see an “average” path and trace that.

If you’re particularly dedicated to getting accurate GPS traces, dedicated devices can do a little better, by using more satellite constellations (GLONASS/Galileo/etc.), and things like corrections for atmospheric disturbances (WAAS/EGNOS). I like my Garmin eTrex 22x for hiking and biking and have found its traces useful for mapping. But even then, you’re still going to off by at least a few meters, more in non-ideal conditions.

There are really advanced devices used for surveying (RTK), where you apply corrections after the fact that track where the GPS satellites actually were in orbit at that time (rather than just a predicted orbit), and how signals were received through the atmosphere at known locations, and things like that. But there’s not anything on that scale for regular hiking and biking that I know of.

Your best bet is to get a lot of traces over time and average them, combined with aerial imagery (which is hopefully already correctly georeferenced).

Was your phone mounted to your bike, or was it in your pocket/pack? GPS signals are very weak, and they can be blocked by water, such as wet clothing from sweat, and they can be blocked by your body. If it was mounted on your bike, what was the orientation? The orientation of the antenna may matter.

On my iPhone 11 Pro the GPX data from OsmAnd does not seem to be as good as from some other apps. The tracks I get from Avenza Maps seem to be better, I am not sure why but maybe Avenza Maps includes information from the phone’s inertial sensors. Anyway, the issue with using Avenza Maps is that it requires that you have a downloaded geo-referenced PDF map of the area before you can collect tracks. In my case that is not an issue as I generate my own geo-referenced PDF maps from OSM data. However for most people that would be a problem. If you are in the US you can “buy” the USGS topo maps for nearly all the US from the Avenza map store for free, so that might be an option.

Question on your car setup: Do you have CarPlay in your car? If so, are you connected to it? The reason I ask is the car GPS location could be better than the phone’s. I believe that in addition to having a larger/better GPS antenna the car can use “sensor fusion” with input from the wheels and steering to improve on location. I am not sure, but I believe when using CarPlay the phone can get that better location information.

Also bear in mind that we are currently experiencing a phase of high sunspot activity, probably just around the maximum. This not only causes northern lights even at latitudes where you normally never see them, but also interferes with satellite signals such as GPS. This can change by the minute, depending on whether such a solar storm is hitting the earth or not.

The sad truth is that you cannot use a phone for accurate measurements.

In summary, your purple tracks give what I’d expect from a phone that only has access to the L1 frequency.

First off, the green track is too straight or “good”. Something is separate is going on there. And I believe you haven’t considered imagery is likely to have an error? The imagery needs to be first checked and corrected using accurate data (eg property boundary maps)

A quick look suggests your phone is only able to pick the L1 frequency. Not being able to pick up the L5 frequency significantly reduces accuracy, and your results look reasonable. My phone (Huawei P30 Pro) has dual frequency and I find is typically accurate to 2.5m in the open.

GPS is the American system, but has become the default term we use to describe several different GNSS systems. These different GNSS systems generally can be considered to output information on several different frequencies. Phones commonly access one or two frequencies, commonly referred to as L1 & L5. The L5 is more recent and lots of older or cheaper phones can not receive the L5 data.

A single GPS track from a phone is not reliable but by repeating the same exact route over several journeys you can create a heat map track. You can import and combine several gpx tracks in josm, and the average track should be good.

In practice I rarely use gpx tracks for mapping as Bing imagery (in my location) allows more accuracy (after correcting imagery) Think this is the same for most people. I also have access to Lidar maps.

We’re moving to having access to way improve our GPS recording accuracy down to below 0.3m using extra data GPS receivers in fixed positions within 10km of your phone. Done live through RTK, and later on using PPK. I believe PPK is already possible with some phones that allow recording of all GPS data, but it’s a proper complex subject.

(edit - In initial post, I mistakenly use “L2” instead of “L5”)

Wondering if it’s a power supply issue?

When in the car, I assume that you’ve got it plugged in, so a constant 12V supply, but on the bike it’s only running on internal battery, so different amounts of “signal power”? (for want of a better term!).