ADSB COLORADO
How we turned two years of public ADS-B broadcasts into evidence about the November 1, 2024 arrival change — no data-science background assumed. Hover or tap any dotted term for a plain-language explanation.
REPLAYany flight vs its published arrival — the raw truth of one flight, replayable on the map DASHBOARDthe aggregate story — every chart traces back to replayable flights STATUSdata coverage — which days are ingested, processed, and analyzed

The analysis, start to finish

Six steps, in the order we did them. Expand each card.
1Where the data comes from Every aircraft with ADS-B Out broadcasts its position in the clear; a volunteer network archives all of it — including FAA-blocked tail numbers.

Every aircraft with ADS-B Out broadcasts its position, altitude, and speed about once a second, in the clear, on 1090 MHz. Thousands of hobbyists around the country run little rooftop receivers that hear those broadcasts, and a volunteer network called adsb.lol pools them and publishes the whole thing — every flight, every day, free and public.

Two things make this source right for our purpose:

  • Blocked tail numbers are in it. FAA “LADD” blocking removes aircraft from FlightAware and FlightRadar24 because those companies agree to filter FAA-provided data. It cannot stop the airplane’s own radio broadcast. The hobbyist network hears everyone. We checked our data: over 99% of flights carry a readable registration. The operators reporting these reroutes are fully visible, blocked or not.
  • It’s history, not memory. The archive goes back years, second by second. We can replay any arrival into the Denver area since before the November 1, 2024 change and compare it to today.

The raw feed is enormous — about 3 gigabytes per day for the whole country — so the first job was carving out just Colorado. Try it: see which days are already in → STATUS

2How we filtered it Three sieves: Colorado only, then arrivals at the six airports we care about, then IFR traffic only — judged by behavior, never by aircraft type.

Think of it as three sieves, each finer than the last:

  1. Colorado only. Each day’s archive starts with a coarse “who was where” summary. We use it to keep only aircraft that touched Colorado that day — about 3,500 of 60,000+ aircraft — before downloading their detailed tracks.
  2. Arrivals we care about. From those, we reconstruct each flight and keep the ones that landed at (or departed) BJC, Centennial, Fort Collins, Denver International, Colorado Springs, or the Air & Space Port. Landings are verified three ways — position, altitude, and groundspeed — so a plane overflying Boulder doesn’t get counted as landing at Metro.
  3. IFR traffic only. This one matters for credibility. Flight plans aren’t broadcast, so we can’t see who filed IFR — but we can tell who was flying IFR from evidence: cruising in Class A (IFR-only airspace), flying a published STAR, holding a discrete squawk code. Sightseeing C-172s squawking 1200 in the practice area are excluded; a C-172 on an IFR plan with a discrete code stays in. We never exclude by aircraft type — only by behavior.

One correction that surprised us into being careful: altimeter settings. Denver pressure swings move raw ADS-B altitudes by up to ±500 feet, so every altitude in the analysis is corrected with that hour’s local altimeter — otherwise “level at 9,000” detection would be garbage.

3How we measured “a reroute” A rerouted flight usually flies its clearance perfectly — so we ask where it came from, which gate it entered, and how far it actually flew.

Here’s the key insight the whole analysis turns on. A rerouted flight usually flies its clearance perfectly. Since the DUN can’t be filed anymore, the reroute happens on the ground or from Kansas City/Albuquerque Center — by the time the airplane reaches Denver airspace, its track looks “clean.” So instead of asking “did the pilot wander off the route?” we ask two questions the reroute can’t hide from:

  • Which direction did you come from, and which gate did you enter? We note each flight’s compass direction 200 NM out, and which arrival gate it actually crossed at 80 NM. A flight approaching from the southeast that enters over Gunnison is the reroute — no matter how neatly it flew.
  • How far did you actually fly? Miles flown from the 200 NM ring to touchdown, compared before vs. after November 1, 2024, same direction, same airport.

When we do compare flights against the charted procedures, we compare against the actual published routes from the FAA’s own navigation database — the same data your FMS loads, edition-matched to each flight’s date — and record the ratio of miles flown to miles published (TMR), plus the break fix where a flight left the procedure partway. That matters because the legacy arrivals into BJC are legally circuitous (LARKS to Falcon VOR and back is 67 miles for a 40-mile trip); measuring against straight-line distance would falsely flag every normal arrival, and the FAA would rightly dismiss it.

We also detect: holds (circling with no progress, published missed-approach holds excluded), altitude caps (pinned under the Class B shelves — both the Class B rings and the MVA floors are toggleable layers on the replay map), and — using the transponderIFR cancellations: the moment a flight switches from its assigned code to 1200 is visible in the data, and we mark it on the map at the exact spot it happened. We’re careful with those: a visual approach can look similar, so cancellations are labeled likely, never proven. Try it: replay a flight against its published arrival → REPLAY

4How we tested it Verified against the FAA’s own sources, attacked adversarially, calibrated to 2024’s own normal, and honest about the holes.
  • Against the FAA’s own sources. Every waypoint we use was checked against the FAA fix database — all 110 matched to the sixth decimal. Procedure sequences were verified leg-by-leg against the current plates.
  • Adversarially. We ran a deliberate “prove this wrong” review on our own detection logic. It found five real bugs (for example, a flight could look 100% conformant because it flew a short entry segment perfectly before being vectored off). All five were fixed before any numbers were reported — and that history is documented, which is itself a credibility point with the FAA.
  • Against normal. Every threshold (how much extra distance counts as a deviation, etc.) is calibrated so that ~98% of pre-change traffic passes. “Deviated” means abnormal by 2024’s own standards — not by our opinion.
  • Honestly. The known holes are written down: filed routes aren’t observable, absent flights (trips never flown) are invisible, a handful of archive days are lost upstream, and cancellations are evidence-scored.

Try it: every threshold, live from the calibration file → HOW SCORING WORKS

5What we found The routing changed exactly as the pilots described, the cost lands on the killed flow, and Denver International — the control — didn’t move.

Across ~530 days analyzed so far — roughly 150,000 arrivals (live totals on the dashboard):

  1. The routing changed exactly as your pilots described, and it’s statistically unambiguous. Southern traffic’s use of the southeast gate fell by half; the southwest/Gunnison share jumped to over 50% (live values on the dashboard). Every major gate-share shift clears standard statistical significance tests. Try it → routing shift chart
  2. The cost lands on the killed flow, and almost nowhere else. Southeast-direction arrivals into BJC now fly roughly 40 extra nautical miles each (median) (live values on the dashboard). The same direction into Centennial — which kept its southern arrival — barely moved. Same days, same weather, different rule. That contrast is the causal argument, and it’s the difference-in-differences card on the dashboard. Try it → hotspots & natural experiments
  3. The mirror image is visible. APA’s north arrivals worsened while BJC’s north arrivals actually improved — “one airport from the north only, one from the south only,” in the data, from both directions. Try it → gate-level deviation delta
  4. Denver International didn’t move. DEN arrivals, run through identical detectors, stayed flat across the change date. Weather or congestion would have moved them too. This is the control that rules out the obvious counter-explanations. Try it → deviation rate by airport
  5. Cancellations are up and locatable. Likely IFR cancellations per 1,000 arrivals run visibly higher post-change, and each one is marked on the replay map at the point the transponder switched — including the COS/DEBARY-style escapes. Try it → cancellation trend
  6. It hasn’t gotten better. The 2026 sample weeks show the same pattern as December 2024 — two years with, as the group put it, nothing changed but a note. Try it → monthly trend

Every number above traces to individual flights you can replay on the map against the exact published procedure — nothing is an aggregate you have to take on faith. (Exact figures move slightly as the remaining history loads; the dashboard always shows the current values.) The dashboard also splits deviation by transient vs local operators — visiting crews take the hit hardest. Try it: the replay list opens sorted by severity → REPLAY

6What we need from the group Known incident dates and tail numbers, the cost-per-hour figure, and Heidi’s read on what the FAA responds to first.

The one thing the data can’t do alone is confirm it’s catching your events. The companion document (reports/QUESTIONS_working_group.md) lists what would sharpen it — the top three: dates and tail numbers from the form reports so we can verify the detector against known incidents, the group’s cost-per-hour figure to turn miles into dollars, and Heidi’s read on what the FAA responds to first.

Tools: the dashboard (one-page story), the replay map (any flight vs. its published arrival), and the data tracker — hover any ⓘ on screen for a plain-language explanation of what you’re looking at.