# Screen brightness and QR scanning

> A displayed QR code is only as readable as the screen is bright. Indoors almost any brightness works; in daylight a 500-nit phone screen competes with sunlight and loses, which is why paper outperforms screens outdoors. Raise brightness manually before showing a code: auto-brightness often dims mid-scan.

Source: https://useqr.app/docs/scanning/screen-brightness-and-qr-scanning · Last reviewed 2026-08-21 · UseQR is free forever, no signup.

---

## Emissive vs reflective: the physics in one paragraph

Paper is read by reflected light: the brighter the environment, the brighter the white
background, so contrast is roughly constant from dim room to blazing sun. A screen is
**emissive**: its white is fixed by the panel (typically **500–800 nits sustained**
on phones), while the ambient light climbing around it washes the panel's black
upward. Indoors that contest is no contest. Outdoors, direct sun delivers on the order
of 100,000 lux, and a sunlit sheet of paper simply outshines any phone screen. That is
the whole reason boarding passes scan flawlessly in the terminal and struggle at the
open-air gate.

Practical consequence: **for codes that must scan outdoors in daylight, print wins.**
Screens are for indoor and evening use, or for shade.

## Auto-brightness sabotage

The most common failure is not sunlight but the phone *dimming itself* at the moment
of truth. The sequence: you open the ticket, queue for a minute, the screen dims on
inactivity or auto-brightness adapts to a dark venue, and the reader meets a grey
ghost of the code. Fixes on the showing side:

- **Tap the screen just before presenting** to reset the dim timer.
- **Drag brightness to maximum manually** for the few seconds of the scan.
- Disable battery-saver dimming if you will present codes repeatedly.

Apple understood this: iOS **boosts screen brightness automatically when a Wallet pass
is displayed**. If you build an app or page that displays codes (tickets, loyalty,
payment) copy the pattern: force maximum brightness while the code is visible, then
restore. On the web you cannot control brightness, so say it in the UI: "turn your
brightness up".

## Too bright is also a thing

In a genuinely dark venue (a club door, a dim foyer) a full-white screen at maximum
nits blooms in the reader's camera: the sensor exposes for the glowing white and the
glow bleeds across module edges. Readers mostly adapt within a second, but if scans
keep failing in the dark, dimming the phone slightly is the counter-intuitive fix.
Screens scan best when their brightness is *plausible* for the room.

## The rest of the displayed-code checklist

Brightness is necessary, not sufficient. The other rules for on-screen codes:

- **Dark modules on a white tile, always**, dark-mode themes that invert the code
  break readers, as covered in
  [QR codes in a dark-mode website](/docs/design/qr-code-in-a-dark-mode-website).
- **Size for the scan distance**, a code on a lobby TV obeys the same
  [distance limits](/docs/scanning/scanning-distance-limits) as print; the
  [TV sizing page](/docs/print/qr-code-size-on-a-tv-screen) has the numbers.
- **Leave it up long enough**, timing rules in
  [minimum on-screen duration](/docs/design/minimum-on-screen-duration-for-a-qr-code).
- **Expect moiré when a camera reads a screen**, mitigations in
  [scanning a code off a monitor](/docs/scanning/scanning-a-qr-code-off-a-monitor).
- **Consider e-ink for permanent displayed codes**: reflective like paper,
  sun-readable, covered in
  [scanning QR codes on e-ink](/docs/scanning/scanning-qr-codes-on-e-ink).

Before shipping any screen-displayed code, confirm the artwork decodes cleanly with
the [validator](/validate): brightness problems are hard enough without a marginal
code underneath them.

## FAQ

### Why does my QR ticket fail to scan in sunlight?
Phone screens emit a fixed brightness (typically 500–800 nits), while direct sun is orders of magnitude brighter, washing out the panel's contrast. Shade the screen with your hand and turn brightness to maximum, or use a printed copy for outdoor scanning.

### Why did the code scan fail after I queued for a while?
Your phone dimmed itself, the inactivity timer or auto-brightness in a dark venue. Tap the screen to wake it fully and drag brightness up just before presenting the code.

### Do brighter screens always scan better?
Up to a point. In daylight, more brightness always helps. In a very dark room, a maximum-brightness white screen can bloom in the reader's camera and blur module edges, there, dimming slightly actually improves the scan.

### Why does iOS make the screen bright for Wallet passes?
Because Apple identified exactly this failure: passes were failing at gates on dimmed screens. iOS temporarily boosts brightness whenever a pass is displayed. Apps that show tickets or payment codes should copy the pattern.

## Try it

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