# QR codes on product labels

> Label QR codes are typically 1.5–3 cm and printed by thermal transfer at 203 or 300 dpi. The critical number is dots-per-module: aim for at least 4, which means checking your printer resolution before choosing the code size.

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

---

| Typical scan distance | **15–30 cm** |
|---|---|
| Minimum code width | **1.5–3 cm** |
| Error correction | **Q** |

## Dots per module is the number that matters

Thermal printers are low resolution. Work out how many printer dots each module gets:

| Printer | Dot size | Modules at 4 dots | 33 modules needs |
|---|---|---|---|
| 203 dpi | 0.125 mm | 0.50 mm | 16.5 mm |
| 300 dpi | 0.085 mm | 0.34 mm | 11.2 mm |
| 600 dpi | 0.042 mm | 0.17 mm | 5.6 mm |

Below 4 dots per module, rounding shifts module boundaries and scan rates fall off a cliff.

## Use the printer's native QR command

Zebra (ZPL `^BQ`), Datamax and TSC all generate the code in firmware, at exact dot
boundaries. Sending a raster image instead re-samples the pattern and introduces exactly the
rounding errors you are trying to avoid.

```
^XA
^FO50,50^BQN,2,6^FDMA,https://example.com/p/1042^FS
^XZ
```

## Direct thermal versus thermal transfer

Direct thermal fades with heat, light and friction — fine for a shipping label that lives a
week, wrong for a product label expected to last a year. Thermal transfer with a resin
ribbon on polyester survives chemicals, abrasion and freezer temperatures.

## Try it

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