# Scanning QR codes on e-ink displays

> E-ink scans well because, like paper, it reflects ambient light rather than emitting its own — no glare hotspot, no pixel-grid moiré, readable in direct sun. Its contrast ratio of roughly 15:1 comfortably clears the 40% luminance bar. Two caveats: it needs external light, and refresh ghosting briefly corrupts modules.

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

---

## E-ink is paper with a refresh cycle

Electrophoretic displays form the image with pigment particles that reflect ambient
light — the same optical regime as ink on paper, and the opposite of the emissive
screens covered in
[screen brightness and QR scanning](/docs/scanning/screen-brightness-and-qr-scanning).
For QR purposes this buys three properties at once:

- **Sun-readable.** More ambient light means a brighter image, so e-ink codes scan
  *better* outdoors, exactly where phone screens fail.
- **No glare hotspot.** The surface is matte; a scanner's torch does not bounce a
  blown-out reflection onto the modules the way it does off glass.
- **No moiré.** There is no regular emissive subpixel grid to interfere with the
  camera sensor, so the banding that plagues
  [scanning off a monitor](/docs/scanning/scanning-a-qr-code-off-a-monitor) simply
  does not occur.

A fourth property matters for signage: e-ink holds its image with **zero power**. A
shelf label or room sign keeps displaying its code through a power cut, which no other
display technology does.

## The contrast question, with arithmetic

E-ink's weakness on paper (so to speak) is contrast: typical modern panels manage a
contrast ratio around **15:1**, far below a good print's. But run the number against
the scanning requirement: at 15:1, the dark state reflects about 1/15 ≈ **6.7%** of
what the white state reflects, making the luminance difference roughly **93%** of the
white level — miles clear of the **≥ 40% luminance difference** a decoder needs
(the same bar applied to colour choices in
[colours that scan](/docs/design/qr-code-colors-that-scan)). Greyscale rendering, not
contrast, is the thing to watch: render the code in pure black and white, never
dithered grey, and keep a clean [quiet zone](/glossary/quiet-zone).

## The one real failure mode: refresh ghosting

E-ink updates by rearranging pigment, and fast partial refreshes leave **ghosts** — a
faint residue of the previous image. A ghost overlapping the code adds phantom grey
modules, and for the second or two after an update a scan can fail or, worse, read
marginally. Mitigations, in order:

1. **Full refresh after drawing a code.** The flash-to-black full update clears
   ghosting; always finish a code render with one.
2. **Do not scan mid-update.** On electronic shelf labels that update prices
   overnight, this never bites; on live dashboards it can.
3. **Static codes are immune.** Once settled, an e-ink code is as stable as print.

## Where e-ink codes make sense

The sweet spot is **displayed codes that change occasionally but must always scan**:
electronic shelf-edge labels (the retail workflow is in
[QR codes on a shelf-edge label](/docs/ecommerce/qr-code-on-a-shelf-edge-label)),
room and desk signage, transit stop information, conference badges. The surface has
its own page at [QR codes on e-ink](/qr-codes-on/e-ink), and the broader screen-vs
comparison at [digital signage](/qr-codes-on/digital-signage).

The limits are the flip side of the physics: e-ink is **invisible in the dark** — it
needs ambient light or a frontlight, so a code in a dim corridor inherits every
problem in [low-light scanning](/docs/scanning/qr-scanning-in-low-light) — and panels
are small, so respect the [size-for-distance rules](/docs/scanning/scanning-distance-limits)
when choosing what fits. As with any rendered code, confirm the final bitmap decodes
with the [validator](/validate) before deploying a fleet of labels.

## FAQ

### Do QR codes scan well on e-ink displays?
Yes — e-ink reflects ambient light like paper, so codes scan without glare or moiré and actually improve in bright light, including direct sun. Its roughly 15:1 contrast ratio is far above the 40% luminance difference decoders need.

### Why does my e-ink QR code fail right after updating?
Refresh ghosting. Partial updates leave a faint residue of the previous image over the code, which reads as phantom grey modules. Trigger a full refresh after drawing the code, and avoid scanning during the second the panel is updating.

### Can you scan e-ink in the dark?
No — e-ink emits no light of its own. It needs ambient light or a built-in frontlight, just as paper needs a lamp. In lit environments this never matters; in dim corridors it is the main limitation.

### Why use e-ink instead of a normal screen for QR codes?
Sun-readability, zero glare, no moiré, and the image persists with no power — a shelf label keeps working through a power cut. For codes that update occasionally but must scan reliably all day, it is the best display technology available.

## Try it

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