Route before numbering
pick_sequence follows the physical walking route. Serpentine routing reverses every second aisle; one-way routing restarts at the entry end.
Warehouse location labels should follow the picker’s route. Enter zones, aisles, bays, levels and positions. Get an ordered list, CSV and printable A4 barcode sheets.
Sample data to replace
12 locationsSample inputs
1 zone · 2 aisles · 3 bays · 2 levels
Generated output
12 ordered codes · CSV · printable barcode sheets
| Zone | Aisles | Walk | Bays / aisle | Faces / bay | Levels / bay | Positions / level | Locations |
|---|---|---|---|---|---|---|---|
| 1 | 2 | Serpentine, every second aisle reversed | 3 | 1 | 2 | 1 | 12 |
| Whole warehouse | 12 | ||||||
This choice controls pick_sequence. It does not merely change how the table looks.
A step of 10 leaves unused numbers between bays. Insert a future bay without renumbering the warehouse. Odd/even faces require a step of at least 2 so two faces never share a code.
Code preview
A-001-010-001-001
I, O and Q are excluded by default because handwritten codes can resemble 1 or 0.
Zone codes use exactly one letter. Available codes after exclusions: 23.
Every numeric segment uses the same width, with leading zeros when needed. With one-letter zones, complete codes stay the same length and sort consistently by structure.
Measure your label stock. The print engine lays out A4 pages with 10 mm margins and 2 mm gaps.
Sample data to replace
This is the preloaded sample. Change the settings, then generate your own list.
| Pick sequence | Location code | Route |
|---|---|---|
| 00001 | A-001-010-001-001 | Serpentine |
| 00002 | A-001-010-002-001 | Serpentine |
| 00003 | A-001-020-001-001 | Serpentine |
| 00004 | A-001-020-002-001 | Serpentine |
| 00005 | A-001-030-001-001 | Serpentine |
| 00006 | A-001-030-002-001 | Serpentine |
| 00007 | A-002-030-001-001 | Serpentine |
| 00008 | A-002-030-002-001 | Serpentine |
+ 4 more rows in the export
The sample is the first A4 page, at the size of your own label stock: print it, scan it, measure it. In the print dialog, choose your printer or “Save as PDF”, then keep the scale at 100%.
The 8 rows above are the free extract. The complete list and the complete label sheet are built on our side and sent against your email.
Generated output
The code is only half the job. These five decisions keep the addressing usable after go-live.
pick_sequence follows the physical walking route. Serpentine routing reverses every second aisle; one-way routing restarts at the entry end.
A step of 10 reserves numbers between bays. Add storage later without relabeling every downstream location.
Location codes are typed and read as well as scanned. Removing ambiguous letters prevents avoidable confusion.
Zone codes stay at one letter and every numeric segment shares one width. Complete codes therefore keep a constant length; the serpentine route remains recorded in pick_sequence.
The CSV keeps the route in pick_sequence without forcing the human-readable code itself to carry that order.
Everything above is free and stays free: the drawn plan, the counts and the first rows of the list. The complete files — every location, in picking order — are built on our side from the settings you just entered.
Free, with no email: the plan, the counts, 8 rows of the list and a 1-page label sample. Behind your email: every location, as a CSV or as the A4 sheet.
Discuss warehouse locations and picking with a myFulfillment specialist.
Addressing a warehouse is not a numbering exercise. The codes you print today are read, typed and scanned by every picker for years, and the day you regret one of them is the day you relabel several hundred shelves.
A-001-010-002-001AZone001Aisle010Bay002Level001PositionBays numbered with a step of 10 leave room to insert:
010020030A location list sorted by code, when the codes ignore the walking route, sends the picker back down an aisle they have already finished. Serpentine numbering reverses every second aisle so the sequence follows the feet, not the alphabet.
A code is read off a shelf in poor light and typed into a terminal by hand as often as it is scanned. Constant width, a single separator and no I, O or Q are what make it survive that.
Numbering bays 1, 2, 3 means the first inserted bay renumbers everything after it. Numbering 10, 20, 30 leaves nine free numbers between each, and the insertion costs one label.
The tool serves both dedicated and chaotic storage: it names the physical places, and it takes no view on which product goes in them.
| Starting point | What you are actually doing |
|---|---|
| The warehouse already exists and has no addressing | Racks are up, the team works from memory and the WMS has one location called “stock”. You are not designing anything — you are reading your own aisles and writing down what is already there. Enter the counts you can see, keep the route you already walk, and print. |
| A new zone is being opened | A mezzanine, a second building, a returns area. The new zone has to join the existing scheme without colliding with it, which means the same separator, the same width and a zone letter that is still free. |
| The existing codes are being retired | Handwritten codes, three conventions from three eras, an I that everyone reads as a 1. The list is regenerated cleanly and the CSV carries pick_sequence in its own column, so the old order can be mapped rather than guessed. |
Where the free tool stops
The sheet you print here is inert until something reads it. These are capabilities verified in the myFulfillment codebase at the commit cited in this tool’s research dossier.
| Capability | What the product does with the code | Read more |
|---|---|---|
| myFulfillmentLocations become a scan step | The picking mission asks the operator to scan the source location, then to scan a product from that location — the code you printed is the first half of that pair. | See warehouse management |
| myFulfillmentPreparation is grouped by location | The preparation screen groups the lines of an order by location, and carries a distinct case for the lines that have none. | See order management |
| myFulfillmentBin-level addressing is a configuration entry | Advanced bin location is a configuration entry of the inventory module. | See inventory management |
FAQ
With a code whose segments read zone, aisle, bay, level and position in that order, at a constant width, without the letters I, O and Q. The code identifies the place; a separate pick_sequence column carries the walking order, so the two can change independently.
No, and confusing the two is expensive. Addressing names the places. Slotting decides which SKU goes in which place, which is a demand question that changes every season. You address once and you re-slot often.
Three things that are hard to fix afterwards: an order that matches the picking route, a constant code width so spreadsheets and WMS sort correctly, and numbering gaps so an inserted bay does not renumber its neighbours.
Aisle-level codes are enough when one person knows the stock. Bin locations become necessary the moment a picker who has never seen the item has to find it alone, or the moment two SKUs share a shelf.