Air routes and great circles
Great-circle distance, initial and final course, and midpoint between airports; multi-leg routes drawn on a map across the date line; a flight-time estimate by aircraft type; a per-passenger CO₂ estimate; and an airport lookup with runways and elevation.
Added
Works with
- Aviation weather: METAR and TAF decoder Aviationopens METAR and TAF for an airport on the route
How to use it
-
Route — type airport codes separated by
-or spaces:SFO-JFK-LHR,KPAO KMRY. IATA (SFO) and ICAO (KSFO) codes both work; Find an airport searches names and cities and adds the one you pick. For each leg you get the great-circle distance in nautical miles, kilometres or statute miles, the initial and final true course, the midpoint, a block-time estimate and a CO₂ estimate per passenger; with more than one leg, totals. Tap an airport code to look it up. -
Show map loads the map (Leaflet with OpenStreetMap tiles, darkened when your system is in dark mode) and draws each leg as a great circle. Routes over the Pacific are drawn across the date line rather than the long way round the map.
-
Airport lookup — name, ICAO and IATA codes, position, elevation, and runways (length, width, surface, true heading of the low-numbered end), with a link to the airport’s METAR and TAF in the aviation weather tool.
How the numbers are worked out
-
Distance and course use a spherical earth of mean radius 6371.0 km (3440.065 nm) and the formulas in Ed Williams' Aviation Formulary: haversine distance, initial course
atan2(sin Δλ·cos φ₂, cos φ₁·sin φ₂ − sin φ₁·cos φ₂·cos Δλ), the final course as the reverse of the course from the far end, and intermediate points for the midpoint and the map. The Formulary’s worked example, LAX to JFK, is 0.623585 radians — 2144 nm when one minute of arc is taken as one nautical mile, 2145 nm with the mean radius — at an initial course of 66°. On the WGS-84 ellipsoid distances differ by up to about 0.5 %. -
Block time is an estimate: the distance at the preset’s typical cruise true airspeed, plus or minus the wind component you enter, plus a fixed allowance for climb and descent and for taxi out and in (shown on each leg). Real flights follow airways and tracks, not great circles, and are usually 5–10 % longer.
-
CO₂ per passenger follows the myclimate flight emission calculator’s calculation principles (2019 documentation): fuel per passenger = (a·x² + b·x + c) / (seats × load factor) × (1 − cargo factor) × class weight, with x the great-circle distance plus 95 km for detours and holding; separate short-haul (≤ 1500 km) and long-haul (≥ 2500 km) parameter sets, interpolated in between. CO₂ from fuel multiplies by 3.15 kg CO₂ per kg of jet fuel. CO₂e is myclimate’s headline figure: it adds upstream fuel production (0.54 kg per kg of fuel), aircraft production and airport infrastructure, and multiplies the CO₂ by 2 for non-CO₂ effects at altitude (contrails, NOₓ) — the most uncertain part. It is an average-aircraft estimate, not your flight’s actual figure; ICAO’s calculator, which uses airline schedules and aircraft types, typically gives lower numbers because it counts only CO₂.
The airports come from OurAirports (public domain,
community-maintained): every open large and medium airport, and small ones with an IATA code and
scheduled service — about 6,100 airports with their open runways, loaded when the tool starts (about
260 KB compressed). The file is generated by scripts/gen-air-routes-data.py.
Limits
-
Not for navigation or flight planning. Distances are great circles on a sphere; courses are true, not magnetic; nothing accounts for airspace, airways, winds aloft, or performance.
-
Small private airfields, heliports and closed airports are not in the list; runway data is as good as OurAirports' community edits.
-
Flight times and CO₂ figures are rough estimates from typical values (see above).
-
The map needs the internet (Leaflet from cdnjs, tiles from OpenStreetMap — used lightly, per the OSM tile usage policy); everything else works offline once the page has loaded.
Linking to an example
Settings have short parameters and the tab comes from the # part of the address, for example
/tools/air-routes/?route=SFO-JFK-LHR&ac=b787#route.
| Tab | Parameter | Meaning | Example |
|---|---|---|---|
|
|
airport codes separated by |
|
|
|
aircraft preset: |
|
|
|
wind component in knots, + tailwind, − headwind |
|
|
|
distance units: |
|
|
|
cabin class for CO₂: |
|
|
|
airport to look up (opens that tab) |
|
|
one of the presets below (it also picks the tab); other parameters override it |
|
Presets:
-
lhr-jfk— London Heathrow to New York JFK -
sfo-nrt-dateline— San Francisco to Tokyo Narita; the great circle crosses the date line near the Aleutians -
syd-scl— Sydney to Santiago, across the date line and far south -
sea-anc— Seattle to Anchorage in a 737 -
lax-jfk-formulary— LAX to JFK, the Aviation Formulary worked example -
round-the-world— SFO–NRT–SIN–DXB–LHR–JFK–SFO -
c172-hop— a Cessna 172 from Palo Alto to Monterey into a 15 kt headwind -
kef-airport— Keflavík’s runways and elevation
Feedback is a gift. Something to improve, a feature to add, or a bug? Tell me.
Runs entirely in your browser — network requests go only to the services named on this page.