# QR codes for warehousing and logistics

> In logistics the QR code is usually read by a handheld imager rather than a phone, which changes every rule: codes can be smaller, but print durability and quiet-zone discipline matter far more, and the payload should be an opaque id.

Source: https://useqr.app/qr-codes-for/logistics · Last reviewed 2026-08-21 · UseQR is free forever, MIT licensed, no signup.

---

## Imagers are not phone cameras

A dedicated 2D imager has controlled illumination, a fixed focal range and a decoder tuned
for damaged codes. It reads codes a phone cannot. If all your scanning is by hardware you
control, you can print smaller than the consumer rules suggest — but test with the actual
device.

If a courier or a customer might scan with a phone, use the phone rules.

## Encode an id, not a URL

`WH-4471-A` beats `https://warehouse.example.com/locations/aisle-4/bay-471/level-a`. Shorter
payload, lower version, bigger modules, better read rate on a scuffed label — and it works
offline, which matters in a metal building.

Restricting the id to **digits and uppercase** puts the encoder into alphanumeric mode at
5.5 bits per character instead of 8, shrinking the code further for free.

## Label specification

- **Thermal transfer**, not direct thermal, for anything living longer than a week. Direct
  thermal fades from heat and abrasion.
- Resin ribbon on polyester for freezer, chemical or outdoor use.
- Use the printer's **native QR command** (`^BQ` in ZPL) so modules land on exact dot
  boundaries.
- At 203 dpi, modules must be at least 0.5 mm. See [labels](/qr-codes-on/labels).

## Placement

Flat surfaces only, never across a box edge or seam, 10 mm clear of the label edge, and never
under packing tape — a wrinkle in tape destroys local contrast.

## Bulk generation

Generating thousands of location or asset codes is a [bulk](/bulk) job. Decode-verify every
one before printing a run — a systematic encoding error discovered after 5,000 labels is an
expensive afternoon.

## Try it

- https://useqr.app/text
- https://useqr.app/json
- https://useqr.app/bulk
- https://useqr.app/url
