Skip to content
CONTAINER SALES & LEASING · NPSA ASSOCIATE MEMBER SINCE 2005
Toll-Free · 1-888-590-2699
— ISO 6346

ISO 6346

The international standard for identifying and marking freight containers. ISO 6346 sets the 11-character number format, the check-digit algorithm, the size & type codes, and the legal markings every container carries on its sides and doors. Current revision: ISO 6346:2022.

What ISO 6346 actually covers

There are two ISO standards every freight container operator runs into. They get confused constantly. They cover different things:

  • ISO 1496 — physical specification. Dimensions, racking strength, stacking loads, test methods. This is what container manufacturers build to.
  • ISO 6346identification and marking. The 11-character ID, the check digit, the size & type code, the operational and safety stencils. This is what’s painted on the doors and side panels.

Both apply to every standard ISO container. If you’re inspecting equipment, ISO 1496 is the one that tells you whether the box is structurally sound; ISO 6346 is the one that tells you what to write down. This guide is about the second.

Anatomy of a container number

Every ISO container carries an 11-character identifier, painted in block stencil on both door panels and on at least one side. Here’s a real OWLU® container broken apart:

OWL U 209148 8
OWL Owner code (BIC-registered)
U Equipment category
209148 Serial (owner-assigned)
8 Check digit (computed)

The first three letters are the owner’s BIC-registered identifier — see the BIC Codes guide. The fourth letter is the equipment category: U for freight containers (which is almost everything), J for detachable equipment, Z for trailers and chassis. The six-digit serial is whatever the owner has assigned, sequential per fleet. The final digit is computed.

The check digit

ISO 6346 specifies a modulo-11 algorithm that produces a single check digit from the first 10 characters. The point isn’t security — it’s catching transcription errors when someone reads a container number off a worn door panel or types it into a manifest. The math is straightforward but the letter values are not.

The algorithm

  1. Convert each of the first 10 characters to its numeric value. Digits are themselves; letters use a special table (next section).
  2. Multiply each value by 2 to the power of its position — that’s weights 1, 2, 4, 8, 16, 32, 64, 128, 256, 512 from left to right.
  3. Sum the ten products.
  4. Take the sum modulo 11. The result is the check digit.
  5. Edge case: if the remainder is 10, it’s printed as 0. ISO 6346 recommends not allocating those serials, since single-character errors can mutate one valid number into another without detection.

Letter values — the table that bites people

Letters start at A = 10 and skip every multiple of 11 (so 11, 22, 33 are unused). The skips fall before L and before V. This is the part most amateur implementations get wrong:

ABCDEFGHIJ
10121314151617181920
KLMNOPQRST
21232425262728293031
UVWXYZ
323435363738

The skips exist for a real reason. The algorithm divides by 11 at the end, so any two characters with values congruent mod 11 would contribute identically — meaning a single-character substitution between them would slip past the check digit. Skipping the multiples guarantees every letter is unique mod 11. Implementations that compute letter_value = ord(c) - ord('A') + 10 without skipping silently produce wrong check digits for any container with L, V, W, X, Y, or Z in it. This is the classic bug.

Worked example

The same OWLU® container from the anatomy section above — OWLU209148 — run through the algorithm:

PosCharValue×Weight=Product
0O26×1=26
1W35×2=70
2L23×4=92
3U32×8=256
422×16=32
500×32=0
699×64=576
711×128=128
844×256=1024
988×512=4096
Sum6300
6300 mod 118

Check digit = 8. The full number OWLU2091488 validates — and note the letter values at work: O, W, and L are 26, 35, and 23, with L landing past the first skipped multiple of 11. Try it yourself in the check-digit calculator.

Common transcription errors

Worn or dirty stencils cause specific predictable swaps: O0, I1, S5, B8, Z2. ISO 6346 does not ban ambiguous letters (I, O, and Q are all valid), so the check digit is what catches the error.

Size & type codes

Below the container number you’ll see another four-character code — usually painted smaller. That’s the size and type code, also defined in ISO 6346. It tells you, in four characters, what kind of container you’re looking at.

Structure:

Position What it encodes
1Length
2Width × Height (combined)
3Primary container type
4Subtype / detail

Decode one as you scroll

The most common code in the OWLU® fleet, taken apart one position at a time — 45G1:

Size & type code POSITION 0 / 4
4Length 5Width × Height GType 1Subtype

4 Length code — 40ʹ

5 Width × height — 8ʹ wide × 9ʹ6ʺ — the 5 is what marks a high cube

G Primary type — general purpose, no ventilation

1 Subtype — GP detail variant, by far the most common

= 40ʹ high cube, general purpose

Length codes (position 1)

220ʹ
440ʹ
L45ʹ
M48ʹ
N49ʹ

Width × Height codes (position 2)

08ʹ wide × 8ʹ high
28ʹ × 8ʹ6ʺ (standard)
58ʹ × 9ʹ6ʺ (high cube)
68ʹ × >9ʹ6ʺ

Primary type codes (position 3)

GGeneral purpose, no ventilation
VGeneral purpose with ventilation
BDry bulk
SNamed cargo (livestock, autos, fish)
RReefer (integrated refrigeration)
HReefer or heated, removable equipment
UOpen top
TTank
PPlatform or flat rack

Common full codes you’ll see at a depot

CodeWhat it is
22G120ʹ standard GP
25G120ʹ high cube GP
42G140ʹ standard GP
45G140ʹ high cube GP
L5G145ʹ high cube GP
22R120ʹ reefer
42R140ʹ reefer
45R140ʹ high cube reefer
22U120ʹ open top
42U140ʹ open top
22P120ʹ flat rack, fixed ends
22P320ʹ flat rack, collapsible
22T0–T620ʹ tank, varying pressure ratings
22B020ʹ dry bulk

For the full historical lookup, BIC publishes the size & type code reference ↗ reflecting ISO 6346:2022.

The other markings on a container

ISO 6346 also specifies a set of legal and operational stencils that must appear alongside the container number on every box. The most important:

  • Max Gross Weight — the maximum allowed combined weight of the container plus contents. Typically around 30,480 kg / 67,200 lbs for a standard 20ʹ or 40ʹ.
  • Tare — the empty weight of the container itself. Typically 2,200 kg (~4,850 lbs) for a 20ʹ GP, 3,800 kg (~8,380 lbs) for a 40ʹ GP.
  • Net / Payload — Max Gross minus Tare. The cargo the container can actually carry.
  • Cubic Capacity — interior volume in cubic feet or cubic meters.
  • CSC Safety Approval Plate — a separate ISO/CSC requirement (not ISO 6346 itself) but mounted alongside. Indicates the container has passed the structural inspection required by the Convention for Safe Containers and lists the next inspection due date.
  • Owner’s logo or brand stencil — Maersk’s "Maersk," Hapag-Lloyd’s "HL," etc. Convention, not requirement.

Why this matters for operators

ISO 6346 is the thread that runs through every system that touches a container:

  • Bills of lading use the 11-character ID as the primary key.
  • Terminal and depot management systems (Navis, CRM 1Stop, every TOS in the industry) index everything off the same number.
  • Equipment interchange receipts (EIR) — the documents that handle handoffs between depots, truckers, and shippers — carry the ID and the size/type code as the only two facts that matter for legal liability.
  • Customs filings, CSC records, OCR systems on terminal gates — everything that processes containers at scale assumes ISO 6346 is intact and validates the check digit.

A container without a valid ISO 6346 identifier is, operationally, invisible. It can’t be tracked, can’t be insured, can’t be moved through a major port. The standard is mundane — eleven characters, a modulo-11 algorithm — but it’s the operational backbone of the entire industry.