Container Number Check Digit: How ISO 6346 Validation Works
The last digit of an ISO 6346 container number is a check digit calculated from the other ten characters: each character gets a number, each number is weighted by a power of two, and the total is divided by 11. A valid check digit shows the number was recorded consistently. It does not show that the container exists, that its owner code is registered, or that it is the box at your door.
The last digit of a shipping container number is not part of the serial. It is a check digit, calculated from the ten characters in front of it, and it exists so that a mistyped or misread number can be caught before it reaches a receiving record, a customs filing or a yard check. You can calculate it by hand with a calculator, or paste the number into the freightID container number validator and get the answer straight away.
This post covers how the calculation works, a worked example you can check yourself, and a point worth stating plainly: a valid check digit proves the arithmetic, not the container. It can also miss some mistakes.
What do the 11 characters of a container number mean?
A container number under ISO 6346 has four parts. BIC (the Bureau International des Containers, which ISO lists as the registration authority for the standard) describes them like this:
Part | Characters | What it is |
|---|---|---|
Owner code | 3 letters | "three capital letters of the Latin alphabet to indicate the owner or principal operator of the container" |
Equipment category identifier | 1 letter | U for freight containers, J for detachable equipment related to freight containers, Z for trailers and chassis |
Serial number | 6 digits | "six Arabic numerals, left at owner's or operator's choosing" |
Check digit | 1 digit | "a means of validating the recording and transmission accuracies of the owner code and serial number" |
So in a number such as SUDU 307007 9, "SUD" is the owner code, "U" says it is a freight container, "307007" is the serial and "9" is the check digit.
The current edition of the standard is ISO 6346:2022, "Freight containers — Coding, identification and marking". ISO's catalogue page also says that "containers marked according to previous editions of ISO 6346 need not be re-marked", so a box marked under an older edition is not wrong just because of its age. (ISO lists the 2022 edition as under revision.)
How is the check digit calculated?
The full method sits in the standard itself, which is sold by ISO. BIC's public pages offer a calculator but do not print the formula. The method below is the one published in the Container Handbook, an industry reference that cites the standard. Both of the handbook's worked examples come out right with it, which is the check we ran.
Step 1. Turn each letter into a number. Start at A = 10 and count up, skipping 11, 22 and 33:
A | B | C | D | E | F | G | H | I | J | K | L | M |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
10 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 23 | 24 |
N | O | P | Q | R | S | T | U | V | W | X | Y | Z |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 34 | 35 | 36 | 37 | 38 |
Digits keep their own value.
Step 2. Weight each position by a power of two. The first character is multiplied by 1, the second by 2, the third by 4, and so on, doubling each time, up to 512 for the tenth character.
Step 3. Add the ten products.
Step 4. Divide the total by 11 and keep the remainder. That remainder is the check digit.
Step 5. If the remainder is 10, write 0. The handbook puts it this way: "The check digit 0 may occur twice, since it arises where the final difference is 0 and where it is 10."
One warning if you read the handbook yourself: its sentence on the weights says the third number is multiplied "by 3". The sequence is powers of two, so the third weight is 4. Both of the handbook's own examples only come out right with 4.
Worked example: SUDU 307007
Position | Character | Value | Weight | Product |
|---|---|---|---|---|
1 | S | 30 | 1 | 30 |
2 | U | 32 | 2 | 64 |
3 | D | 14 | 4 | 56 |
4 | U | 32 | 8 | 256 |
5 | 3 | 3 | 16 | 48 |
6 | 0 | 0 | 32 | 0 |
7 | 7 | 7 | 64 | 448 |
8 | 0 | 0 | 128 | 0 |
9 | 0 | 0 | 256 | 0 |
10 | 7 | 7 | 512 | 3,584 |
The total is 4,486. Eleven goes into 4,486 a total of 407 times (4,477), leaving 9. The check digit is 9, so the full number is SUDU 307007 9, which matches the handbook's example. Its second example, TEXU 452149, gives a total of 6,573 and a check digit of 6.
What does a valid check digit actually prove?
BIC describes the purpose narrowly: it lets "operators, terminals, depots and other parties in the supply chain" automatically validate numbers and "easily identify incorrect container numbers introduced through a data-entry error or an erroneous OCR (optical character recognition) reading."
That is all it does. It does not prove two things a receiving team may assume it proves, and it sets one trap.
It does not prove the owner code is registered. Registration is a separate system. BIC keeps the register of owner codes and states that registration is what "guarantees that the identification of the container is unique", and that only codes registered with BIC "may be used as unique identity marking of containers in all international transport and customs declaration documents." A made-up prefix with a correctly calculated last digit passes the arithmetic. The register's own lookup tool is the check for that.
It does not prove it is the right box. A number copied correctly from the wrong bill of lading, or read off the container parked beside yours, is a perfectly valid number. The check digit compares the number with itself, never with the door.
A re-marked box can fail for a reason that is not a misread. Because the check digit is calculated from the owner code as well as the serial, BIC says "it is imperative that the check digit be modified when containers are re-marked with a different BIC code." A box re-marked under a new prefix without a new check digit will usually fail, even though nobody misread anything.
Which mistakes can a check digit miss?
A check digit does not catch every single wrong character. Worked through with the published method, there are two gaps, and they are worth knowing if your team keys numbers by hand or takes them over the phone.
The 10-becomes-0 rule. Take SUDU 101064. Its total leaves a remainder of 0, so its check digit is 0. Key the third serial digit as a 7 instead of a 1, and SUDU 107064 leaves a remainder of 10, which is also written as 0. Both numbers end in 0, so a 1 keyed as a 7 in that position passes the check. Any error that moves the remainder between 0 and 10 slips through the same way.
Owner-code letters 11 or 22 apart. Because the remainder is taken after dividing by 11, substituting one letter for another whose value differs by exactly 11 or 22 changes the total by a multiple of 11 and leaves the check digit unchanged. This only affects the three-letter owner code; the category letter is limited to U, J or Z, and none of those pairs up this way. The pair a receiving team will recognise is B (12) and V (34), the classic mishearing over a phone or radio: BBBU 123456 and BVBU 123456 both give a check digit of 9.
These are our own workings from the published method, and you can repeat them with the tables above. Because no weight is a multiple of 11, every other single wrong digit or letter does change the remainder; these two routes are the only ways a single wrong character gets through. Two neighbouring digits swapped are caught the same way, except where the swap lands on the 0-and-10 collision. When several characters are wrong at once, the check digit can match by chance. None of this makes the check digit weak. It does mean "the check digit passed" is not the same sentence as "the number was keyed correctly."
Where do container numbers matter at your receiving door?
The container and seal numbers on your inbound paperwork should match what the carrier reported to customs. For US imports, the inward manifest rule in 19 CFR 4.7a requires the carrier's cargo declaration to state "container numbers (for containerized shipments)" and "the seal numbers for all seals affixed to containers". You will not see that filing at the dock, but the bill of lading and delivery documents you do hold carry the same numbers, and a number mistyped in your system will not match them when you need to trace a shipment, file a claim or answer a question about a delivery.
A short routine:
- Validate when the number is first keyed, at appointment booking or when the advance notice arrives, not when the box is already on the dock.
- Read the number off the container itself and compare it with the paperwork, character by character, not only the last four digits.
- Check the seal in the same step. Confirm it is intact and its number matches the paperwork, photograph it and record it before the doors are opened, and escalate a mismatch before anyone unloads.
- If the check digit fails, re-read the marking. Do not "fix" the last digit to make it pass; that hides the real error, which may be anywhere in the number, including the check digit itself.
- If it passes but the owner code is unfamiliar, look it up in the BIC register before you treat the number as confirmed.
The identifiers on your own outbound cartons carry a check digit too, calculated a different way; the company prefix explainer covers how those numbers are built.
How do you check a container number quickly?
For one number, the tables above and a calculator are enough. For a few numbers at a time, paste each one into the freightID validator: it checks the structure, the equipment category and the full check-digit calculation, and shows whether the number passes. Use the BIC register when you need to know who owns the box, and your own eyes on the door when you need to know it is the box you were expecting.
Frequently asked questions
How do you calculate a container number check digit?
Give each letter of the owner code and category letter its number (A is 10, B is 12, and so on, skipping 11, 22 and 33), keep the six serial digits as they are, multiply the ten values by 1, 2, 4 and so on up to 512, add the products, and divide by 11. The remainder is the check digit, except that a remainder of 10 is written as 0.
Can a container number with a valid check digit still be wrong?
Yes. The check digit only shows that the eleven characters agree with each other. A number copied correctly from the wrong paperwork, or read off the box next door, passes. Some single-character mistakes pass too, because a remainder of 10 is written as 0 and some owner-code letters differ by 11 or 22. Whether the owner code is registered is a separate question, answered by the BIC register.
What do the U, J and Z in a container number mean?
The fourth character is the equipment category identifier. Under the scheme BIC publishes for ISO 6346, U marks freight containers, J marks detachable equipment related to freight containers, and Z marks trailers and chassis. The three letters before it are the owner code, and the category letter is part of the ten characters the check digit is calculated from.
Plan the route. We deliver the rest.
See how Binlogic powers last-mile logistics — routing, tracking, and the platform that turns the plan into the package on the doorstep.
Book a callback