Pick up to six airplanes and put every number side by side — 81 specifications per type, drawn to a common scale, with the ratios worked out for you. Built to answer CRJ vs ERJ vs 777, and then to keep answering when you swap any of the three out.
Any of the 81 rows, as bars. Bars start at zero — the length is the value.
The whole fleet on two axes; your selection is labelled and filled. Log scales, because a 172 and a 777-9 do not share a linear axis.
Load the maximum structural payload (MZFW − OEW) first, then pour in every kilo of fuel that still fits under MTOW. On most of these the tanks hold far more than what is left over — that shortfall is the payload-range trade, in one bar. Where no MZFW is published, payload is what fits with full tanks instead.
One row per certified variant, not per family — a CRJ900 and a CRJ1000 are different airplanes with different certificates, and averaging them would hide exactly the differences you came here for. Each variant is one common configuration, named in full under its name; almost every weight here has an optional higher or lower certified version.
Everything lives in one file, data/aircraft.json: a field registry plus a specs object per
aircraft. Adding a measurement is one entry in fields; adding an airplane is one entry in
aircraft. The table, the charts, the unit switch and the search all read the registry, so nothing
needs a code change to grow.
How much of the registry each aircraft actually fills. Blanks are blanks — the tool never interpolates one airplane's number from another's.
The silhouettes are generated from the numbers in the table, not traced from drawings: span, length, wing area, quarter-chord sweep, fuselage width, tail height and fan diameter fix the geometry, and a taper ratio and engine mounting position per type fill in the rest. That makes every drawing honestly to scale against every other one, and it means they are schematics — the fillets, the airfoil, the exact tail shape and the gear are indicative. Where an airplane looks wrong, the fix is a number, not a path.