How PlaneRange Calculates Aircraft Range

By Daniel Gauthier·

Every range ring, runway limit and fuel figure on PlaneRange comes from one model, fitted to the payload-range charts Boeing and Airbus publish for airport planners. This page covers where the data comes from, how I turned the charts into numbers, the equations, and how far off the result is for each aircraft. If something here is wrong, I want to know.

Who built this

I'm Daniel Gauthier, and PlaneRange is a one-person project. I've worked as a software engineer for five years and have a Master's in Computer Science, focused on CS education and cybersecurity. I've run an ADS-B receiver since 2018, feeding FlightAware, Flightradar24 and adsb.lol, and I upload aircraft photos to FlightAware. The aircraft photos on this site are mine.

The source: ACAP documents

Boeing calls them Airplane Characteristics for Airport Planning (ACAP). Airbus calls them Aircraft Characteristics. Airports use them to plan gates, taxiways and runways, and I use two sections of each:

The first version of PlaneRange started from brochure ranges instead, and that was a mistake. A brochure range is quoted for a typical cabin, but the old model treated it as the range at maximum payload. For the Boeing 737 MAX 8 it used 3,550 nm where the ACAP chart shows about 2,500 nm at MZFW, so a full aircraft could reach up to 40% farther on the map than it really can.

Digitizing the charts

The charts are pictures in a PDF, so the first job is turning lines back into numbers. There are two kinds of page:

Boeing plots zero fuel weight directly. Airbus plots payload, so I convert it using the chart's own empty weight: MZFW from the weight table minus the chart's maximum payload.

I trace the reduced takeoff weight lines as well as the outer envelope. On the envelope alone, a more efficient aircraft and one with smaller fuel reserves push the curve out by about the same amount, so the fit can't tell them apart. The reduced-weight lines separate the two, and they are also what a departure from a short runway uses.

So far that is 42 charts, 143 lines and 11,445 points. Some types have one chart per engine.

The model

Specific range, the distance an aircraft flies per kilogram of fuel, falls as the aircraft gets heavier. I model it as:

SR(W) = K / W × (W / Wref)1 − n

W is the current weight and Wref is the chart's MTOW. With n = 1 this is the Breguet range equation. The charts don't follow Breguet exactly, so n is fitted as well. For the 787-9 it comes out at 0.92.

Range is the distance flown while the weight falls from takeoff to landing:

ZFW = OEW + payload
TOW = min(MTOW, runway limit, ZFW + fuel capacity)
landing weight = ZFW + reserve fuel + unburned contingency

Reserves follow the chart's own rules. I model them as a distance flown at landing weight (the diversion, hold and approach allowance) plus contingency fuel of 5% of trip fuel that is carried but not burned. The 747-400 chart uses FAR international rules, so its contingency is 10%.

That leaves three constants per chart: K, n and the reserve distance. I fit them by least squares across every traced point on the chart. Points more than four times the RMS error off the curve (100 nm at minimum) are dropped once and the fit is run again. Those are tracing mistakes, usually a trace that snapped onto a label.

The fit runs in Python. The map runs the same equations in TypeScript, and the test suite replays every traced point through the TypeScript version, so a data change that moves an aircraft off its chart fails the tests. Because it is one model, passengers, bags, cargo, fuel capacity and runway length always trade against each other the same way, and flying the ring's full range burns exactly the fuel that fits in the tanks.

02,0004,0006,0008,00010,000120130140150160170180190 MTOW envelope218 t takeoff weight191 t takeoff weight Range (nm) Zero fuel weight (1,000 kg)
Boeing 787-9, Payload/Range for Long-Range Cruise: Model 787-9 (ACAP p. 37). Grey dots are every third point I traced off the chart; blue lines are the fitted model. RMS error 29 nm, worst point 58 nm.

How close the fit is

RMS is the typical miss across all of a chart's points, and "worst" is the single biggest miss. 31 of the 42 fits below are within 30 nm RMS, and all are within 59 nm. The A330 family and the A340-600 are the loosest. Their charts have a kink near maximum payload, where the initial cruise altitude limit takes over, and a smooth curve can't follow it. That costs up to about 3% of range right at MZFW. The biggest single misses are mostly at the ends of a line, where the curve turns sharply.

AircraftACAP chartRMSWorst
Airbus A220-100Figure 1 Zero Fuel Weight (ZFW) vs Range ISA (A220-100), p. 16119 nm58 nm
Airbus A220-300Figure 1 Zero Fuel Weight (ZFW) vs Range ISA (A220-300), p. 17516 nm66 nm
Airbus A319-100Payload/Range - ISA Conditions (A319-100), p. 1486 nm15 nm
Airbus A320-200Payload/Range - ISA Conditions (A320-200), p. 1616 nm22 nm
Airbus A320neoPayload/Range - ISA Conditions (A320neo), p. 16323 nm88 nm
Airbus A321-200Payload/Range - ISA Conditions (A321-100/-200), p. 1725 nm17 nm
Airbus A321neoPayload/Range - ISA Conditions (A321neo), p. 17435 nm90 nm
Airbus A330-200 (CF6-80E1)Payload / Range - ISA Conditions, GE CF6-80E1 (A330-200), p. 26640 nm145 nm
Airbus A330-200 (PW4000)Payload / Range - ISA Conditions, PW 4000 (A330-200), p. 26444 nm174 nm
Airbus A330-200 (Trent 700)Payload / Range - ISA Conditions, RR Trent 700 (A330-200), p. 26541 nm146 nm
Airbus A330-300 (CF6-80E1)Payload / Range - ISA Conditions, GE CF6-80E1 (A330-300), p. 27159 nm172 nm
Airbus A330-300 (PW4000)Payload / Range - ISA Conditions, PW 4000 (A330-300), p. 26956 nm168 nm
Airbus A330-300 (Trent 700)Payload / Range - ISA Conditions, RR Trent 700 (A330-300), p. 27056 nm170 nm
Airbus A330-900Payload / Range - ISA Conditions, RR Trent 7000 (A330-900), p. 27346 nm174 nm
Airbus A340-300Payload / Range - ISA Conditions, CFM56-5C4, 257 t MTOW (A340-300), p. 16828 nm73 nm
Airbus A340-600Payload / Range - ISA Conditions, RB211 Trent 556 (A340-600), p. 17557 nm103 nm
Airbus A350-900Payload/Range - ISA Conditions (A350-900), p. 22840 nm134 nm
Airbus A350-1000Payload/Range - ISA Conditions (A350-1000), p. 22936 nm93 nm
Airbus A380-800 (GP7200)Payload/Range - ISA Conditions, GP7200 (A380-800), p. 12722 nm65 nm
Airbus A380-800 (Trent 900)Payload/Range - ISA Conditions, Trent 900 (A380-800), p. 12620 nm63 nm
Boeing 717-200payload-range capability, p. 714 nm36 nm
Boeing 737-700Payload/Range for Long Range Cruise: Model 737-700, -700W, p. 6312 nm50 nm
Boeing 737-800Payload/Range for Long Range Cruise: Model 737-800, -800W, p. 6512 nm86 nm
Boeing 737-900Payload/Range for Long Range Cruise: Model 737-900, -900W, p. 669 nm46 nm
Boeing 737-900ERPayload/Range for Long Range Cruise: Model 737-900ER, -900ERW, p. 679 nm64 nm
Boeing 737 MAX 8Payload/Range for Long Range Cruise: Model 737-8, p. 4113 nm82 nm
Boeing 737 MAX 9Payload/Range for Long Range Cruise: Model 737-9, p. 4310 nm61 nm
Boeing 757-200 (PW2037/PW2040)Payload/Range for Long-Range Cruise: Model 757-200 (PW2037, PW2040), p. 4029 nm228 nm
Boeing 757-200 (RB211-535E4/E4B)Payload/Range for Long-Range Cruise: Model 757-200 (RB211-535E4, -535E4B), p. 3929 nm130 nm
Boeing 757-300Payload/Range for 0.80 Mach Cruise: Model 757-300 (PW2040, PW2043), p. 4210 nm28 nm
Boeing 767-300ER (CF6-80C2B7F1)Payload/Range: Model 767-300ER, Long-Range Cruise (CF6-80C2B7F1), p. 6120 nm86 nm
Boeing 767-300ER (PW4060/PW4062)Payload/Range: Model 767-300ER, Long-Range Cruise (PW4062), p. 6223 nm84 nm
Boeing 767-400ERPayload/Range: Model 767-400ER, Long-Range Cruise (CF6-80C2B8), p. 6516 nm69 nm
Boeing 777-200ERPayload/Range for 0.84 Mach Cruise: Model 777-200 (High Gross Weight), p. 4513 nm69 nm
Boeing 777-200LRPayload/Range for 0.84 Mach Cruise: Model 777-200LR, p. 4314 nm91 nm
Boeing 777-300ERPayload/Range for 0.84 Mach Cruise: Model 777-300ER, p. 4412 nm77 nm
Boeing 787-8Payload/Range for Long-Range Cruise: Model 787-8, p. 3617 nm40 nm
Boeing 787-9Payload/Range for Long-Range Cruise: Model 787-9, p. 3729 nm58 nm
Boeing 787-10Payload/Range for Long-Range Cruise: Model 787-10, p. 3811 nm48 nm
Boeing 747-400 (CF6-80C2B1F)Payload/Range: Model 747-400, 0.85 Mach Cruise (CF6-80C2B1F), p. 6319 nm55 nm
Boeing 747-400 (RB211-524G/H)Payload/Range: Model 747-400, 0.85 Mach Cruise (RB211-524G), p. 6510 nm50 nm
Boeing 747-8 IntercontinentalPayload/Range: Model 747-8, p. 3522 nm87 nm

Borrowed charts

These aircraft have no chart of their own but share a wing and engines with one that does. They use that aircraft's fitted constants with their own weights.

AircraftUses the chart of
Airbus A321neo LRAirbus A321neo
Airbus A321XLRAirbus A321neo
Boeing 737 MAX 7Boeing 737 MAX 8
Boeing 737 MAX 10Boeing 737 MAX 9

No chart available

I don't have a payload-range chart for these aircraft yet: Boeing 727-200, Boeing 707-120B, Douglas DC-8-63, McDonnell Douglas MD-80, Boeing 777X-9, Embraer E170, Embraer E175, Embraer E175-E2, Embraer E190, Embraer E195, Embraer E190-E2, Embraer E195-E2, Bombardier CRJ-700, Bombardier CRJ-900, ATR 72-600, Fokker 70, Fokker 100, Gulfstream G280, Gulfstream G650ER, Bombardier Challenger 650, Bombardier Global 7500, Cessna Citation XLS+, Embraer Phenom 300E, Dassault Falcon 8X, Aérospatiale/BAC Concorde, Ryan Aircraft Spirit of St. Louis, Douglas DC-3, Boeing 314 Clipper. They are calibrated on their published range figures, using the median exponent and reserve distance from the charted fleet. Treat their numbers as less certain than the ones above.

The general aviation aircraft (Cessna 172 Skyhawk, Cessna 208B Grand Caravan, Piper PA-28 Cherokee, Cirrus SR22, Beechcraft Bonanza G36) are calibrated on the full-fuel range from their Pilot's Operating Handbook, with n = 1 and no contingency. They have no zero fuel weight limit, so payload trades directly against fuel up to MTOW.

A few novelty entries have no weight data at all and use a simple curve through their published ranges: Wright Brothers Wright Flyer, Wright Brothers Wright Flyer III, Blériot XI, Goodyear GZ-20A Blimp, Boeing / NASA 747 Shuttle Carrier, Boeing VC-25A (Air Force One), Apple MacBook Neo, Aero Spacelines Super Guppy Turbine.

What the map adds on top

Known limits

PlaneRange is for exploring how aircraft performance works. It is not a flight planning or dispatch tool.

Corrections

If you have an ACAP chart or POH page I'm missing, or a number here looks wrong, email me at [email protected]. The aircraft in the "no chart available" list are the ones I'd most like to move onto real charts.

Try it on the map →

Routes & Range

New routes pushed to their limits, new aircraft, and features as they land.