The Freight Identifier Validator checks whether a freight identifier is well-formed by recomputing its check digit, and can parse an arbitrary string to find and validate every identifier inside it. It covers three schemes used across container, air and sea freight: the ISO 6346 shipping-container number, the IATA air waybill (AWB) number, and the IMO ship identification number. Each check-digit algorithm is implemented from the public scheme — no standard text is reproduced, and no external lookup is made.
This is structural validation: a valid check digit confirms the identifier is correctly constructed, not that the container, shipment or vessel actually exists or is active. Pass a single value with its type, or hand the endpoint a whole line of text and let it extract the identifiers.
Shipping container — ISO 6346
A container number is 4 letters (a 3-letter owner code + a 1-letter equipment category — U freight container, J detachable equipment, Z trailer/chassis) followed by a 6-digit serial and a check digit. Each letter is valued 10, 11, 12, … skipping every multiple of 11; each digit keeps its value; each is multiplied by 2position (1, 2, 4, …, 512), summed, then taken modulo 11 (a remainder of 10 becomes 0).
GET /api/validate?value=CSQU3054383&type=container → valid: true (check digit 3)
GET /api/validate?value=CSQU3054384&type=container → valid: false (expected 3, got 4)Air waybill — IATA modulus 7
An AWB is 11 digits: a 3-digit airline prefix plus an 8-digit serial. The final serial digit is the check digit, equal to the first 7 serial digits (as a number) modulo 7. The validator also names the operating airline from the prefix, reusing the existing airline dataset. Because the modulus is 7, a valid AWB never ends in 7, 8 or 9.
GET /api/validate?value=020-58717481&type=awb → valid: true (Lufthansa, check digit 1)
GET /api/validate?value=020-58717483&type=awb → valid: false (expected 1, got 3)IMO ship number — modulus 10
An IMO number is the letters “IMO” plus 7 digits. The first six digits are multiplied by 7, 6, 5, 4, 3 and 2 respectively; the sum, modulo 10, is the seventh (check) digit.
GET /api/validate?value=IMO9074729&type=imo → valid: true (check digit 9)
GET /api/validate?value=IMO9074720&type=imo → valid: false (expected 9, got 0)Parse a string
Pass text= with any string and the validator finds every container, AWB and IMO identifier in it, validating each — handy for screening a booking email or a messy reference field. Identifiers are returned in the order they appear.
GET /api/validate?text=Box CSQU3054383 on AWB 020-58717481 to vessel IMO9074729
→ found: 3 identifiers (container ✓, awb ✓, imo ✓)Every response carries a _source citing the relevant scheme (ISO 6346 / IATA AWB / IMO) and is computed deterministically by freightutils.com. A string with no recognisable identifier returns an empty found list with a note.
Frequently asked questions
What does “valid” actually mean here?
Why can’t an AWB end in 7, 8 or 9?
Does it resolve the container’s owner company?
Structural validation only — a valid check digit means the identifier is well-formed, not that the container, shipment or vessel exists or is active. Not a registry lookup, and not legal or compliance advice.