Build Notes

How Overhead's live flight radar actually works

Published 2026-07-21. ADS-B broadcasts, a free public feed, and the tradeoffs behind a 45-second refresh.

The data: ADS-B, not radar

Despite the name, the Flight Radar page isn't radar at all — it's ADS-B (Automatic Dependent Surveillance–Broadcast). Most aircraft carry a transponder that broadcasts their own GPS-derived position, altitude, ground speed, and heading over radio, unencrypted, roughly once or twice a second. Volunteers around the world run cheap receivers that pick up that broadcast and forward it to aggregators — which is what makes a hobbyist project able to show live air traffic at all, with no relationship to any airline or air traffic control system.

The feed: airplanes.live

Overhead reads that aggregated data from airplanes.live, a free, no-signup public API built on exactly that volunteer receiver network. The request is about as simple as an API gets — a point, and a radius:

GET https://api.airplanes.live/v2/point/{lat}/{lon}/{radiusNm}

The response is a list of aircraft with position, altitude, speed, and track (heading in degrees). Overhead sorts that list by straight-line distance from you — computed client-side with the haversine formula — so the closest aircraft always sit at the top of the panel, and rotates each map marker to match its actual heading rather than showing every plane pointing the same way.

Why every 45 seconds, not "live" live

The radar re-polls the feed every 45 seconds. That's a deliberate tradeoff, not a limitation: airplanes.live is a free service run for the community, and a page that's honest about "positions from the last update" rather than pretending to stream every second is both kinder to that free API and about as fast as a human actually watching a map needs. Aircraft don't move far enough in 45 seconds at typical cruise speeds for the difference to be visible at the zoom levels the radar uses.

Radius, location, and the default fallback

The three radius chips — Nearby (50 nm), Regional (150 nm), Wide (250 nm) — do two things at once when clicked: they change the radius sent to the API, and they set the map's Leaflet zoom level to roughly match, so a wider radius doesn't just fetch more data, it also zooms the view out to fit it. If you haven't granted location, the radar centers on a default location (New York City) rather than failing — click "Use my location" or enter coordinates manually to see aircraft actually near you instead.

More build notes are coming roughly monthly — next up: the night sky map's Sun/Moon/planet projection math, and how the news pages merge multiple RSS feeds into one carousel. ← Back to all notes