Here's a fact that surprises most people: GPS satellites have no idea how fast you're going. They don't transmit speed. Every satellite just broadcasts the same thing on a loop — a precise timestamp and its own orbital position. Your phone's GPS chip receives that from several satellites at once and has to work everything else out itself, speed included. There are two different ways it does that.
Method 1: Doppler shift (the fast, direct way)
You've heard a Doppler shift before, even if you didn't know the name — it's why an ambulance siren sounds higher-pitched as it approaches you and lower-pitched as it drives away. The siren's frequency hasn't changed; your motion relative to the sound source compresses or stretches the sound waves you receive.
The exact same physics applies to the radio signals GPS satellites broadcast. As you move toward or away from a satellite (and satellites themselves are constantly moving too), the frequency of the signal your phone receives shifts by a tiny, precisely measurable amount. Your GPS chip measures that shift across several satellites simultaneously and, by combining the shifts with known satellite positions and velocities, computes your velocity vector directly — speed and heading, in one calculation, without needing to know your two most recent positions first.
This is the method behind the coords.speed value many phones and browsers report directly via the Web Geolocation API — when it's available, it's usually the more responsive and accurate of the two methods, because it doesn't depend on comparing two separate position fixes.
Method 2: Position over time (the fallback)
Not every device or browser reliably reports a Doppler-derived speed value — on some hardware it's missing, null, or unsupported. When that happens, the fallback is the more intuitive method: take two GPS position fixes a known time apart, calculate the distance between them, and divide by the elapsed time. Speed equals distance over time, the same formula from school.
The tricky part is the "distance between two GPS coordinates" calculation. Latitude and longitude are angles on a sphere, not flat x/y coordinates, so you can't just subtract them. Over short distances, the standard approach is the Haversine formula, which accounts for the Earth's curvature to give an accurate straight-line distance between two lat/lon points. It looks intimidating written out in full trigonometry, but conceptually it's simple: it converts the angular difference between two points into an actual ground distance in meters, the same way you'd measure two pins on a globe.
Why the two methods can disagree slightly
Doppler-derived speed reflects your instantaneous velocity at that exact moment. Position-over-time speed reflects your average velocity across the whole interval between two fixes — typically about a second. If you accelerated, braked, or turned during that second, the two numbers won't match exactly, and the position-over-time method will lag slightly behind reality. Neither is "wrong" — they're answering a subtly different question.
What actually limits GPS accuracy
Both methods inherit the same underlying constraints:
- Satellites in view. More visible satellites with good geometric spread means a more precise fix. Tall buildings, mountains, and dense tree cover block signals and degrade this.
- Multipath interference. Signals bouncing off buildings or terrain before reaching your phone create small timing errors — this is the main reason GPS gets noisy in cities.
- Update rate. Most consumer devices refresh a GPS fix about once per second, so very rapid speed changes are smoothed over rather than captured instantly.
- Receiver quality. A phone's GPS chip is smaller and less precise than dedicated survey or automotive-grade hardware.
This is also why a naive position-over-time calculation can report false movement when you're standing still — tiny fluctuations in your GPS fix (positioning "noise") can look like a few meters of travel between readings even with zero real motion. A robust implementation needs to treat movement smaller than the GPS fix's own uncertainty as noise, not speed — which is exactly the kind of fix we built into this site's speedometer after noticing it could otherwise show a false reading at a standstill.
The takeaway
GPS speed is a calculated value, not a sensor reading off a wheel or radar gun — that's precisely why it's free of the deliberate over-reading built into car speedometers (see our companion piece on GPS speed vs. car speedometers), but it comes with its own, different set of error sources tied to satellite visibility and signal quality. Understanding both halves is the key to knowing when to trust the number on your screen.