Chris Collins

Tools · aviation

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

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

#route

route

airport codes separated by -

route=SFO-NRT

#route

ac

aircraft preset: c172, sr22, pc12, atr72, e175, a320, b787, a380

ac=pc12

#route

wind

wind component in knots, + tailwind, − headwind

wind=-20

#route

u

distance units: nm, km, mi

u=km

#route

cls

cabin class for CO₂: economy, business, first

cls=business

#airport

apt

airport to look up (opens that tab)

apt=BIKF

example

one of the presets below (it also picks the tab); other parameters override it

example=syd-scl

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

Runs entirely in your browser — network requests go only to the services named on this page.