Why ADS-B Altitude Differs from GPS Altitude

The Short Answer Most Sites Skip

ADS-B altitude has gotten complicated with all the conflicting explanations flying around. As someone who spent an embarrassing amount of time debugging a 150-foot discrepancy on my home receiver, I learned everything there is to know about why these numbers never quite match. Today, I will share it all with you.

But what is ADS-B altitude, really? In essence, it’s a barometric pressure reading dressed up as an altitude number. But it’s much more than that — it’s a completely separate measurement system from GPS, anchored to a completely different reference point, which is exactly why the two figures never agree.

Here’s the version nobody bothers to explain clearly: ADS-B broadcasts pressure altitude. Your aircraft’s transponder reads outside air pressure and corrects it against a fixed standard of 29.92 inches of mercury. GPS, meanwhile, measures geometric height above the WGS-84 ellipsoid — basically straight-line distance from a mathematical model of Earth’s shape. Same aircraft. Same sky. Two entirely different numbers. And that’s normal.

I watched a Cessna 172 one afternoon — pilot cruising at what he believed was a clean 10,000 feet indicated — show up as 10,340 feet on my GPS receiver. Not a glitch. Not a malfunction. Just two valid measurements of height using two different yardsticks.

That’s what makes this topic endearing to us aviation nerds — it looks like a bug until you understand it, and then it looks elegant. So, without further ado, let’s dive in.

How ADS-B Altitude Is Actually Measured

ADS-B Out doesn’t generate its own altitude data. It pulls directly from your Mode C transponder, which connects to the aircraft’s static pressure port — a small opening on the fuselage that reads atmospheric pressure outside the plane.

The altimeter, or the air data computer on anything built after about 2005, reads that pressure and converts it to altitude using a standard atmosphere model. The reference is always 29.92 inHg. Always. Doesn’t matter what the actual pressure is outside. That fixed standard is called ISA — International Standard Atmosphere — and it is not what the pilot reads on their altimeter dial.

Pilots dial in QNH — the local barometric pressure corrected to sea level at their destination airport. When a pilot says they’re at 5,000 feet, they mean indicated altitude based on whatever QNH they’ve set. When ADS-B broadcasts that same aircraft, it ignores the QNH entirely and uses the fixed 29.92 standard. So the numbers drift.

Above 18,000 feet in the U.S., everyone flies “flight levels” — all aircraft standardize to 29.92, so indicated altitude and ADS-B altitude align. Below that, they separate. A plane at 3,000 feet indicated on a high-pressure day — say, 30.12 inHg — might broadcast closer to 2,900 feet on ADS-B. Roughly 100 feet of difference from a single digit of pressure variation.

The static port itself is a vulnerability worth mentioning. Ice, mud daubers, a stray piece of tape left on during a wash — any of it can block the port and send the transponder completely wrong altitude data. I’ve gone down forum rabbit holes at midnight reading about ADS-B altitude errors that turned out to be wasp nests in static ports. The system broadcasts exactly what the pressure sensor feeds it. Nothing more.

How GPS Altitude Works and Why It Is Different

GPS altitude is geometric. Satellites. Triangulation. Distance straight up from the WGS-84 ellipsoid. Probably should have opened with this section, honestly, because the ellipsoid part is where most people’s eyes glaze over — and it matters.

The WGS-84 ellipsoid is a smooth mathematical model of Earth. Earth is not smooth. The actual gravitational surface — the geoid — lumps and dips in ways the ellipsoid can’t capture. That gap between the two is called geoid undulation, and it varies wildly by location. Around 15 feet in parts of Kansas. Nearly 50 feet along coastal Oregon. Close to 70 feet below the ellipsoid near Denver. That discrepancy alone explains a significant chunk of the difference between GPS altitude and mean sea level altitude.

Some modern glass cockpits pull GPS altitude into the flight management system. But here’s the thing — even when the avionics know the GPS altitude, ADS-B still broadcasts pressure altitude from the Mode C transponder. Those are two separate data channels. The system isn’t grabbing the GPS figure and rebroadcasting it. Never has been.

GPS altitude also wobbles based on satellite geometry at any given moment, plus atmospheric refraction bending the signals slightly. Under good conditions — clear sky, solid constellation geometry — errors typically stay within 30 to 50 feet. Under less ideal conditions, they stack up faster.

When the Discrepancy Is Normal vs. When It Is a Problem

Differences between 100 and 300 feet between ADS-B pressure altitude and GPS geometric altitude are completely normal. Don’t debug this. Seriously.

I’m apparently someone who spent four months convinced my RTL-SDR setup was misconfigured before a stranger on an aviation forum typed roughly eight words at me: “That’s fine. Stop looking at it.” Don’t make my mistake. The discrepancy isn’t a symptom of anything. It’s the system working correctly.

That said, some numbers do warrant attention. Watch for these:

  • Discrepancies consistently larger than 500 feet
  • Ground-based aircraft reporting altitudes like 15,000 feet
  • Sudden altitude jumps without any corresponding climb
  • An aircraft’s ADS-B altitude reading below the airport’s ground elevation

Those patterns point toward a blocked static port, a miscalibrated altimeter, a misconfigured ADS-B unit, or a decoding error on the receiver end. Each of those is an actual problem worth chasing down.

The quickest sanity check: find a commercial airliner cruising at FL350 — that’s 35,000 feet — and confirm your receiver shows it at 35,000 feet. If it does, your setup is fine. The small deltas you see elsewhere are expected. That was always going to be the answer.

What This Means for Flight Tracker Accuracy

Open Flightradar24 right now. Every altitude figure you see is pressure altitude — not GPS, not geometric, not corrected for geoid undulation. That’s a deliberate design decision, and it’s the right one.

Air traffic control separates aircraft using pressure altitude. Every plane in the national airspace is flying a pressure-based number. So if you’re watching a flight and you want the altitude that actually matters to the pilots and controllers working that aircraft, pressure altitude is the one. GPS altitude would just confuse the picture.

Flightradar24 does surface GNSS altitude in the detailed flight view when an aircraft transmits it — labeled separately as “GNSS Altitude” versus plain “Altitude.” The pressure figure typically reads higher. That’s fine. Expected. Not a data error.

Lower altitudes amplify the effect noticeably. A small aircraft at 2,000 feet indicated can show a meaningful-looking GPS difference because the percentage gap is larger at low altitude. At FL350, a 200-foot discrepancy is just noise against a 35,000-foot baseline — nobody flying the plane cares, and neither should you watching it from the ground.

Once you understand the gap between barometric and geometric altitude, what looked like a confusing data error becomes a clean technical distinction. Your flight tracker isn’t broken. It’s showing you two different, equally valid answers to the question “how high is that airplane?” — and each answer was built for a different purpose.

David Park

David Park

Author & Expert

Air traffic management specialist and aviation technology writer. 20+ years in ATM systems development, currently focused on NextGen implementation and airspace modernization. Contributor to multiple FAA research initiatives.

244 Articles
View All Posts

Stay in the loop

Get the latest aerodata updates delivered to your inbox.