# QR codes on e-ink displays

> E-ink is an excellent QR surface: high contrast, no glare, no backlight and no refresh artefacts. The constraint is resolution — most electronic shelf labels are 100–150 dpi, so each module needs several pixels.

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

---

| Typical scan distance | **20–50 cm** |
|---|---|
| Minimum code width | **2–5 cm** |
| Error correction | **M** |

## Why e-ink works well

- **Very high contrast** in the exact black-and-white range decoders want.
- **No glare** — the surface is diffuse, unlike a glossy LCD.
- **No backlight**, so no bloom around dark modules.
- **Readable in direct sunlight**, where LCDs fail.

## The resolution constraint

Electronic shelf labels typically run 100–150 dpi.

| Display | Pixel size | Modules at 4 px | 33-module code |
|---|---|---|---|
| 100 dpi | 0.25 mm | 1.0 mm | 33 mm |
| 150 dpi | 0.17 mm | 0.68 mm | 22 mm |
| 300 dpi (reader) | 0.085 mm | 0.34 mm | 11 mm |

Aim for at least 4 device pixels per module, and align the code to whole pixels — a code
rendered on a half-pixel boundary gets anti-aliased into grey, and e-ink has few grey levels.

## Ghosting

Partial refreshes leave faint remnants of the previous image. Force a **full refresh** when
changing a code; a ghost of the previous pattern superimposed on the new one is exactly the
noise a decoder cannot handle.

## Try it

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