Carry-on size checker
A 55 × 40 × 20 cm bag fits a 56 × 45 × 25 cm allowance with 1 cm to spare on the longest side, and the checker turns the bag the way a gate sizer would before comparing. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Bag length
- 55
- Bag width
- 40
- Bag exterior height
- 20
- Max length
- 56
- Max width
- 45
- Airline maximum allowed height
- 25
- Status
- fits
- Status label
- Bag fits within airline carry-on limits
- Linear slack
- 11
This carry-on size checker tells you whether a bag’s exterior length, width, and height fit an airline’s published maximum carry-on box before you reach the gate. Enter the three bag edges and the three allowance edges in the same unit—centimetres or inches—and the engine sorts the edges when rotation is allowed so a soft shell can be reoriented the way a rectangular sizer actually works. It also reports the linear sum of the three sides, per-axis slack, and a clear fits or does-not-fit status so packing lists and travel apps share one deterministic answer. The path uses only finite arithmetic with no airline lookups, no sampling, and no date-dependent shortcuts.
Where carry-on checks fit in packing, teams, and software
Leisure travelers meet this calculation when a new soft-shell roller is advertised as cabin-friendly and the only remaining step is comparing the product’s exterior centimetres with the airline card in the booking email. Families packing multiple cabin bags can run the same numbers for each person before checking luggage fees. Corporate travel desks batch the checker across policy templates so a fifty-five by thirty-five by twenty standard can be validated against regional partner airline limits without opening a spreadsheet of maxes by hand.
E-commerce product pages and marketplace sellers use the contract from scripts when a shopper selects an airline preset and the storefront must show fits or exceeds before checkout. Students and travel-education workshops use the rotation versus fixed-axis modes to connect the idea of a rectangular bounding box with the practical sizer at the gate, including classic near-miss examples where one edge is a centimetre over the largest allowance.
Pair it with unit converters when you only need centimetres versus inches, and with other travel helpers when you are building a small lab of free, deterministic planning tools for trips, fuel, recovery, and cabin bags.
What you can do with it
Pre-flight packing check
Compare your roller’s exterior L×W×H with the airline’s published carry-on box before you leave for the airport.
Corporate cabin-bag policy
Validate staff bags against a standard 55×40×20 or partner-airline max triple with a transparent fits flag and per-axis slack.
FAQ
What does the carry-on size checker cost?
It is free in your browser on this page.
How does the fit decision work?
With rotation false, length, width, and height are compared in the order you supplied.
What happens if a dimension is zero or negative?
Non-positive dimensions are not valid exterior bag or allowance sizes.
Does this tool look up my airline’s current policy?
No. You enter the maximum allowances yourself (or from your booking). The checker only compares the numbers you provide.
Should I measure my bag with the wheels and handle?
Yes. Measure the outside of the bag, including wheels, handle and pockets, in one unit. Even when the numbers fit, a soft bag or a wheel or handle that sticks out can still fail a rigid sizer at the gate.
Related tools
For developers — API access
Everything on this page is available programmatically. This section is for teams who want to wire it into their own systems; everyone else can just use the tool above.
API endpoint
Prefer to automate it? One authenticated POST creates the task; the result comes back by webhook or a signed link. The same capability also runs here on the web, by email and from Telegram — and soon from our app too.
Call it from your stack
curl -X POST https://api.kit.forhosting.com/travel/carry-on-check \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"bag_length":55,"bag_width":40,"bag_height":20,"max_length":56,"max_width":45,"max_height":25}'const res = await fetch("https://api.kit.forhosting.com/travel/carry-on-check", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"bag_length": 55,
"bag_width": 40,
"bag_height": 20,
"max_length": 56,
"max_width": 45,
"max_height": 25
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/travel/carry-on-check",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"bag_length": 55,
"bag_width": 40,
"bag_height": 20,
"max_length": 56,
"max_width": 45,
"max_height": 25
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/travel/carry-on-check", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"bag_length":55,"bag_width":40,"bag_height":20,"max_length":56,"max_width":45,"max_height":25}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"bag_length":55,"bag_width":40,"bag_height":20,"max_length":56,"max_width":45,"max_height":25}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/travel/carry-on-check", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"bag_length": 55,
"bag_width": 40,
"bag_height": 20,
"max_length": 56,
"max_width": 45,
"max_height": 25
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "travel.carry_on_check",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}The API is asynchronous: the call returns a task_id immediately and the result arrives by webhook. Polling is capped at 1 req/s per task.
Pricing
Published price — no tokens, no invented credits. A failed task is never charged.
Limits
max_dimension | 1000000 |
Errors
| HTTP | Code | Meaning |
|---|---|---|
401 | unauthorized | Missing or invalid API key. |
402 | insufficient_balance | Your balance doesn't cover the task price. |
404 | unknown_type | That task type doesn't exist. |
429 | rate_limited | Too many requests. Use the webhook instead of polling. |
Technical notes
Non-positive dimensions are rejected with invalid_input because a zero or negative edge is not a physical bag measurement.
What a carry-on fit check means and what the response contains
Airlines publish a maximum rectangular volume for cabin bags, usually as three exterior dimensions that must fit inside a rigid or semi-rigid sizer at the gate or counter. Travelers care about a yes-or-no answer plus a little diagnostic detail: which edge is tight, whether rotating the bag helps, and whether the linear sum of length plus width plus height still sits under a published linear limit. This checker answers that planning question with transparent geometry. When rotation is disabled, length is compared to max length, width to max width, and height to max height exactly as supplied, which matches labels printed on some hard-shell cases. When allow_rotation is true, the default, both the bag triple and the airline triple are sorted from smallest edge to largest edge, then each ordered bag edge is compared with the matching ordered limit; the bag fits only if every bag edge is less than or equal to its partner. That models free reorientation inside a rectangular sizer without inventing diagonal or soft-compression tricks. The response includes a boolean fits flag, a status token of fits or does_not_fit, a human-readable status_label, the unit label you passed, the allow_rotation flag used, bag and max objects with each edge and the linear sum, an axes array with bag, max, fits, and slack for each ordered axis, fits_linear and linear_slack for the L plus W plus H rule, a method tag carry_on_check, a formula string for audits, and a short note that wheels and handles can still fail a physical gauge. There is no live airline database and no random sampling: the engine either builds a finite comparison inside the supported range or rejects the input with invalid_input. Rejected cases include missing edges, non-finite values, magnitudes above the documented ceiling, and any non-positive bag or allowance dimension, because zero and negative lengths are not valid exterior sizes.
How bag and airline dimensions are read and how results stay reproducible
Optional unit is only a label—default centimetres—and never converts numbers; you must already express bag and limits in one unit. Optional leading plus signs and scientific notation on numeric strings are allowed when they parse as finite decimals; embedded spaces, hex prefixes, and non-numeric tokens are rejected with a clear message so a bad cell does not become a wrong fit decision. Slack on each ordered axis is max edge minus bag edge, so negative slack means that axis alone would fail. Linear sum is the sum of the three raw bag edges compared with the sum of the three raw max edges without reordering, because published linear limits are usually stated on the unordered exterior measurements. The preferred bag fields are bag_length, bag_width, and bag_height, with aliases such as length, width, height, depth, L, W, and H so spreadsheets and typed forms can reuse the same contract. Airline limits use max_length, max_width, and max_height, with aliases like airline_length, limit_width, and allowance_height. Optional allow_rotation accepts boolean true or false and common string forms; it defaults to true so typical soft bags get the sorted comparison. All six required edges must be strictly greater than zero: a zero height or a negative width fails with invalid_input and is not charged through the API path. Pair the free browser run on this page with the priced API when you need the identical geometric result inside an automated pipeline without re-implementing sorted pairwise checks yourself.
Where carry-on checks fit in packing, teams, and software
On this page the work runs entirely in your browser; through the API each successful lookup costs $0.002, failed validation is not charged, and nothing is stored after the response returns. That split—free interactive exploration and a priced, identical API—matches the rest of the KIT tier-A catalog and lets you move from a packing demo to an automated pipeline without changing the geometric result.
Integration use cases
Retail and marketplace listings
Let shoppers test product dimensions against airline presets and show fits or exceeds with deterministic API results.
Technical questions
What is the linear sum?
Linear dimensions are L+W+H for the bag and for the airline max. fits_linear is true when the bag sum is less than or equal to the max sum; some carriers publish both a box and a linear limit.