
Bin location codes: from zone and row to level
A bin code should tell a person where to walk and let a scanner read it reliably. Zone, row, bay and level in one code, and how long such a code should be.
Walk into a warehouse where bins are called "by the door", "left of the red shelf" or "the top one at the back" and you will find that only two people can locate anything. A new picker is lost, a counter cannot say which bin a scan belongs to, and the stock table has no way to show where the gaps are. A bin code fixes this: one short, structured reference for every place where goods can sit.
Four levels are usually enough
Most storage can be described by four levels, from large to small:
- Zone: a hall, a room, a yard or a block of racking, for example A for the main hall.
- Row: an aisle or a line of shelving inside the zone.
- Bay: a section along the row, numbered in the direction you walk.
- Level: the shelf height, counted from the floor upwards.
A bin on the second level of bay 12 in row 3 of zone A becomes A-03-12-2. A person can read it as directions, and a scanner reads it as an ordinary string of characters.
Keep the code short and the same shape everywhere
A few rules keep codes readable:
- Use a fixed number of digits for each level, with leading zeros: two for row and bay, one for level. Then Excel sorts A-03-02-1 before A-03-12-1, which a plain "A-3-2-1" would not.
- Use letters for zones only, and leave out O and I, which are easily mistaken for 0 and 1.
- Number bays in the walking direction. If shelves stand on both sides of an aisle, give odd numbers to one side and even numbers to the other.
- Stay under about ten characters including the dashes. Longer codes are harder to print large enough to read from a distance.
Add a fifth level, such as a position on the shelf, only if one shelf really holds several pallets or boxes that must be told apart. Otherwise the extra part just gives people one more thing to get wrong.
Do not put the product, the supplier or the date into the code. Goods move; bins do not.
Give the places that are not shelves a code too
Real warehouses have stacks on the floor, a mezzanine, a receiving bay and a corner for returns. If these have no code they become the "other" place where gaps hide. Give them codes of the same shape:
- Floor positions: F-01-05 for floor zone, row 01, position 05.
- Temporary areas with a fixed name: RCV for receiving, LOAD for the loading area, RET for returns, QUA for quarantine.
An example with numbers
Suppose a warehouse has two zones, A and B. Each zone has 4 rows, each row has 20 bays and each bay has 4 levels. That is 2 × 4 × 20 × 4 = 640 bins.
With a plain sequence from 1 to 640, nobody can tell where bin 417 is without a map, and adding one row means renumbering everything after it. With A-03-12-2 the code itself says "first hall, third aisle, twelfth section, second shelf", and a new row 05 simply continues the pattern.
The benefit shows again when the count is analysed. If the zone, row, bay and level sit in separate columns, a pivot table can show that most gaps are in row 03, or on level 4 where cartons are hard to reach.
Mistakes that come back every year
- Renaming bins when shelves are moved. Give the new place a new code and retire the old one; never recycle it for a different place.
- Printing the code only on the shelf front, where cartons hide it. Repeat it at the end of each aisle with the range that aisle covers.
- Mixing styles: A-3-12 in one hall, A03/12 in another, or a different spelling in the books than on the shelf.
- Leaving the bin out of the stock records, so that the table says what you have but not where it is.
A bin code is cheap to design and expensive to change later, so test it on one aisle first: label it, walk it with a scanner and ask someone who has never seen the building to find five bins using only the codes and the signs at the aisle ends. If they succeed, roll the scheme out; if someone hesitates at a junction, fix the numbering or the sign there.
InventoryHub numbers and prints labels for shelves and bins that have none, and the same codes carry over to receiving, so the next count needs no re-matching.