Why 60 of 155 Airlines Cannot Be Answered Yet
One 55 × 40 × 20 cm bag, checked against every airline in our data, returns four kinds of answer: it fits, it does not fit, the data cannot say yet, or there is no rule to apply. The largest of the four is the one we will not turn into a yes or a no.
Published · Updated
What four answers look like
A size check reads like a yes-or-no question. This one ends in one of four places instead, and three of them are not a yes or a no.
The input is a single bag: 55 × 40 × 20 cm. No weight was entered, no piece count, and no cabin, fare or route was selected. Run against all 155 airlines in our data, tested against the cabin carry-on tier only, that one bag produced:
| Answer | What the answer actually says | Airlines (of 155) |
|---|---|---|
| compliant | A rule applied to this bag, and the bag is inside it | 48 |
| non_compliant | A rule applied to this bag, and the bag is outside it | 47 |
| insufficient_information | A rule exists for this airline, but only under a condition that was not supplied | 60 |
| rule_not_found | No rule in our data applies at all | 0 |
These are not three shades of compliance with a fourth one bolted on. They answer different questions. The first two answer whether this bag falls inside the rule that applies. The third answers that we do not have the input the rule depends on. The fourth answers that there is nothing to test against. Collapsing the last two into either of the first two is not a simplification; it is a different claim.
The numbers add up in a way worth stating, because it is what makes the four states a partition rather than four overlapping labels: the 48 and the 47 are exactly the airlines that publish at least one unconditional cabin carry-on allowance, and the 60 are the ones that publish none.
The zero in the last row is not an empty category. Every airline in the set has at least one cabin carry-on allowance on record, so there is something to test against for all 155 of them. Each number in the table counts airlines — not rules, not bags, not passengers — and a count of airlines is a count of what our dataset records, which is a weaker thing than a verified fact.
The airlines that cannot be answered yet
"We cannot say" sounds like a defect in the tool. Here it is a property of the rules.
A condition is not an edge case. 38 of these 60 airlines publish their carry-on allowance per cabin and 14 per fare brand; the axes are counted separately and one airline can have several, so those two do not sum to the total. A smaller number turn on route (3), aircraft type (4), region (3), whether the fare includes a bag (2), or how the ticket was bought (2). Take cabin as the example: the same airline is recorded with one allowance for economy and a different one for business, each with its own source. Neither is "the" rule. Without knowing which cabin you are flying, a yes is a guess and a no is also a guess, and the guess that is right for one passenger is wrong for the other.
These airlines are not airlines without rules. Each has a carry-on allowance recorded, with a source and a date; the allowance carries a condition, and with no condition supplied there is no recorded row that is specifically the one that applies to you. They are rules with a missing input.
Answering from the roomiest conditional tier is the shortcut available here, and it converts "we do not know" into "yes" at the moment someone is packing. Answering from the tightest tier is the same error pointed the other way: it sends someone to leave behind a bag they could have carried. Each is a choice of which mistake to hand to the reader — and when two tiers differ by a few centimetres, that choice is exactly the few centimetres that decide the case.
What the refusal buys is a more useful answer, not a vaguer one. insufficient_information names
the thing that is missing: supply the cabin and the rows that turn on cabin become decidable, because the
check can then select the allowances that apply and compare against them. It is a placeholder for one input,
not a permanent hole — and where a rule turns on cabin and fare at once, or on one of the other axes, a second
answer may still be needed before a verdict is available.
Where the bag runs out of room
For the 47 airlines that returned non_compliant, the useful question
is not which ones — that would be a ranking — but where the bag runs out of room. The check sorts both the bag
and the recorded limits longest to shortest before comparing them side by side, so the order an airline prints
its three numbers in does not matter. This bag sorts to 55, 40 and 20.
| What stopped the bag | Airlines (of 47) |
|---|---|
| The middle side after sorting — for this bag, the 40 cm side | 41 |
| The longest side — for this bag, the 55 cm side | 5 |
| The total of the sides rather than a single one — one airline publishes no per-side limits at all, only a total for the three sides together | 1 |
The middle side is where 41 of the 47 lose. The bag's length is not the problem; the side that fails is the second-longest one, which is the dimension this shape has least room for — the recorded limit is 36 cm for 24 of them and 35 cm for 13 , against this bag's 40 cm.
| Overage | Airlines (of 46) |
|---|---|
| Up to 2 cm | 2 |
| Over 2 to 5 cm | 40 |
| Over 5 to 10 cm | 0 |
| More than 10 cm | 4 |
This table counts only the 46 airlines stopped by a single side; the one stopped by the total of the sides has no per-side overage to plot. Its bag measures 115 cm in all, against a published total that is shorter — a different kind of limit, not a smaller one. The median overage in the table is 4 cm.
None of this orders, scores or grades an airline, and it does not show that these 47 are stricter than the rest. It shows that within our recorded data a 55 × 40 × 20 cm bag — a common carry-on size — sits just outside a large number of recorded limits, and that those misses cluster tightly: 40 of the 46 are over by more than 2 cm and at most 5 cm, with a median of 4 cm. A pattern that narrow is a statement about the shape and about the recorded limits, in that order.
What an overage of a few centimetres means in practice is the part our data cannot settle: in that range the material starts to matter, a soft-sided bag gives under a press and a hard shell does not, and nothing in our rows records which kind you are carrying. We record what airlines publish, not how a bag behaves when someone leans on it.
How this was produced
This is not a hand count. At build time the site runs the same judgment function that answers a single check in the browser, once per airline, on the same data the rest of the site reads, with the input fixed at 55 × 40 × 20 cm, no weight, no pieces, no conditions.
- Collect the cabin carry-on allowances recorded for that airline.
- If none can be reached at all, the answer is
rule_not_found. -
If allowances exist but every one of them is published under a condition, and no condition was supplied,
the answer is
insufficient_information. -
Otherwise compare the bag against the applicable allowances — each side, plus any limit on the total of the
sides — and return
compliantornon_compliant.
There is no randomness and no model in this path, so the same input returns the same counts on every build. Where a cell is blank because the airline does not publish that figure, the constraint is skipped rather than read as zero. Reading a blank as zero would fail every bag against every airline that stays quiet, which is a data error that superficially looks like a strict rule.
The rows are in the download, one per recorded allowance, with the condition on each row in an applies_to column — /data/airlines.csv. To reproduce the third row of the first table: filter to tier = carryOn, keep the rows whose
applies_to is empty, and count the airlines that have none of them. For the second table, sort
length_cm, width_cm and height_cm on each remaining row longest to
shortest, sort the bag the same way, and compare side by side. Leaving the conditional rows in is the step
not to skip: they turn the third row into a yes or a no taken from whichever tier happened to be listed.
Every row also carries a review flag, and here it is set against us: all 155 airlines still
have needs_review = true, and 0 have been checked line by line against
their own published page. The figures describe what our dataset records, not what has been confirmed.
What this does not say
- It is not a ranking. No airline is scored, ordered or graded, and no table is sorted by anything except the mechanism described. A larger number in a row is not a judgement about an airline.
- No airline here has been verified. Of the 155 airlines covered, 0 have been checked against the airline's own page, and every airline still
carries
needs_review = true. Read this as a description of our recorded data. - A blank is not a zero. Where an airline does not publish a figure, the cell is empty and the constraint is skipped. We never substitute another airline's number, an average or an estimate.
- It does not answer "will my bag get on the plane". The recorded limit is one input among several. How a bag is measured at a gate, by whom, with what, and with how much tolerance, is not in our data: a bag inside a limit can still be questioned, and a bag outside one can still be accepted.
- It says nothing about enforcement at any airport, by any airline's staff, on any given day.
- It covers neither weight nor piece limits, because neither was entered. Not entering a value is not the same as there being no limit; the check had nothing to compare.
Corrections
If a figure here does not match an airline's published page, the page wins. Tell us through the contact page and we correct the data row rather than the count: the article is recomputed from the rows at every build, so a corrected row moves the figures by itself and nothing is adjusted by hand to keep a number stable. How we handle corrections is set out in the editorial policy.