# QR codes on shelf-edge labels

> A shelf-edge QR code is scanned from 15 to 25 cm, so 2 cm is the working floor by the 10:1 rule. On electronic shelf labels, give every module at least 2 e-ink pixels and full contrast. Encode by product or by shelf position, not both — planogram churn breaks codes that conflate them.

Source: https://useqr.app/docs/ecommerce/qr-code-on-a-shelf-edge-label · Last reviewed 2026-08-21 · UseQR is free forever, MIT licensed, no signup.

---

## Size at arm's length

A shopper who decides to scan a shelf label leans in and holds the phone at **15–25 cm**
— closer than poster distance, further than receipt distance. By the
[10:1 rule](/docs/print/the-10-to-1-distance-rule), that makes **2 × 2 cm the working
floor**, and 2.5 cm comfortable. On a standard shelf strip of about 4 cm height, a 2 cm
code with its [quiet zone](/glossary/quiet-zone) fits — but only just, so keep the
payload short (a compact URL, giving a version 2–3 code) rather than cramming a long
campaign link that pushes module sizes below print resolution. Run the numbers in the
[size calculator](/size-calculator) before committing a strip template.

Height matters as much as size: codes on the bottom shelf get scanned less for the
unglamorous reason that nobody crouches. If one placement must carry a promotion, put it
between waist and eye level.

## Paper strips vs electronic shelf labels

Paper shelf strips are ordinary print — 300 DPI, dark on light, standard rules. ESLs are
the interesting constraint. An electronic shelf label is a small e-ink display, commonly
around **1–3 inches with resolutions in the low hundreds of pixels per side**, and a QR
code rendered there obeys screen rules, not print rules:

- **Whole pixels per module.** A version 3 code is 29 modules; with quiet zone it needs
  37 module-widths. Give each module **at least 2 device pixels** — 74 px minimum, which
  fits most 2.6-inch ESLs but not the smallest tags. If the renderer scales the code to a
  non-integer pixel ratio, modules alias and scanning degrades sharply.
- **Full black-and-white contrast** — no greyscale dithering under the code.
- E-ink's reflective surface actually scans well in bright store lighting — better than
  glossy paper — but partial-refresh ghosting can leave faint stale modules; use full
  refresh when the code changes. Details on
  [scanning QR codes on e-ink](/docs/scanning/scanning-qr-codes-on-e-ink).

The ESL advantage is that the code is centrally updatable: a price-match code, a
promotion, a [stock-availability link](/docs/ecommerce/qr-code-for-endless-aisle) — per
shelf, per hour, without touching paper.

## What shelf codes are for — and planogram churn

The high-value links, in rough order: product detail and reviews, availability of other
sizes and colours ([endless aisle](/docs/ecommerce/qr-code-for-endless-aisle)),
per-unit price comparison, and allergen or dietary depth. If artwork is moving to
[GS1 Digital Link](/docs/ecommerce/gs1-digital-link-for-retail), the shelf code should
carry the same identifier scheme as the pack.

Then the operational trap: **shelves move.** A planogram reset relocates hundreds of
products, and any code that encodes "the product at bay 12, shelf 3" is now wrong. Pick
one identity and stay consistent:

- **Product-identity codes** (GTIN or SKU in the URL) survive resets — the code moves
  with the product's label. Right choice for product information.
- **Location-identity codes** (aisle/bay in the URL) survive resets differently — the
  code stays put and the *mapping* updates server-side. Right choice for
  [measuring placement performance](/docs/ecommerce/measuring-offline-to-online-conversion)
  and restocking workflows.

Conflating the two — SKU and location baked into one printed code — guarantees reprints
at every reset. Generate location sets or SKU sets [in bulk](/bulk) from your planogram
export, and keep the other dimension server-side.

## FAQ

### What size should a QR code be on a shelf-edge label?
2 × 2 cm minimum, 2.5 cm comfortable, for a scan at 15 to 25 cm. Keep the payload to a short URL so modules stay large enough for shelf-strip print resolution.

### Can electronic shelf labels display QR codes?
Yes, within resolution limits: allow at least 2 e-ink pixels per module at an integer scale, use pure black and white, and force a full refresh when the code changes so ghosting does not overlay stale modules.

### Should the shelf code encode the product or the shelf location?
Choose one. Product-identity codes travel with the product through planogram resets; location-identity codes stay put and remap server-side. Baking both into one printed code forces reprints at every reset.

### What should a shelf-edge QR code link to?
Product detail, reviews, other sizes and colours with availability, and dietary or allergen depth. Where the store is adopting GS1 Digital Link, use the same identifier scheme as the pack so one resolver serves both.

## Try it

- https://useqr.app/url
- https://useqr.app/bulk
- https://useqr.app/size-calculator
