# QR scanning through glass and screens

> Glass adds a reflecting surface between camera and code, and screens add a pixel grid that causes moiré. Both defeat scanning when the reflection or interference lands on the code. Tilt the phone 10–15° off perpendicular to move reflections away, get closer, and shade the glass if you can.

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

---

## What a pane of glass actually does

Every air–glass boundary reflects roughly **4% of the light** hitting it square-on,
and a pane has two boundaries. Eight percent sounds harmless until you remember what
is being reflected: the bright street behind you, the sky, your own phone, and, worst
of all, your torch. When the phone is held perpendicular to the glass, its own
reflection lands exactly on the code it is trying to read, superimposing a ghost image
over the modules.

That is the core failure: not the glass dimming the code, but the glass **adding a
second image on top of it**. A decoder thresholding luminance cannot separate the two.

## The technique: tilt, close, shade

1. **Tilt the phone 10–15° off perpendicular.** Specular reflections obey
   angle-in-equals-angle-out, so a small tilt moves your reflection (and the torch's
   hotspot) off the code while costing almost nothing in perspective, well within
   the [angle tolerance](/docs/scanning/qr-scanning-at-an-angle) of any decoder.
2. **Get closer.** The nearer the code, the more it dominates the frame relative to
   reflected scenery, and the more pixels each module gets.
3. **Shade the glass** with your free hand or your body, killing the brightest
   reflections at the source. Night-time shop windows often scan *better* than daytime
   ones for exactly this reason.
4. **Torch off first, on second.** Behind glass the torch is usually the problem;
   only add it back, angled, if the code is genuinely dark.

## Shop windows and vitrines

For [shop windows](/qr-codes-on/shop-windows), the design-side fix beats any scanning
technique: put the code **on** the glass (a sticker or vinyl facing out) rather than
on paper behind it. On the glass there is no air gap, so there is no second surface
between camera and code to reflect.

Museum vitrines and display cases add two complications: the lighting is designed to
reflect attractively off the case, and visitors cannot shade or touch it. Codes for
[museums](/qr-codes-for/museums) belong on the case edge or a label rail outside the
glass, not on the artefact card inside it. Where inside is unavoidable, print larger
than the [distance rule](/docs/scanning/scanning-distance-limits) demands, glass
always consumes margin.

## Double glazing and coated glass

Modern insulated windows are two panes, hence **four reflecting surfaces**, producing
pairs of ghost reflections slightly offset from each other. Low-emissivity coatings
add a faint tint that costs contrast. Scanning a code through a double-glazed office
window from outside is therefore noticeably harder than through single glass: expect
to need the tilt-and-shade routine, and expect failures in bright sun. If a code is
*meant* to be read through double glazing, oversize it (50% bigger is a reasonable
starting margin), and verify a print test with the [validator](/validate) before
committing, using the [size calculator](/size-calculator) for the baseline.

## When there is a screen behind the glass

A code displayed on a screen behind glass (a lobby TV behind a window, a kiosk under
protective glass) stacks this page's problems on top of a different set: the display's
own pixel grid interferes with the camera sensor and produces moiré banding. That
mechanism, and its fixes, are covered in
[scanning a QR code off a monitor](/docs/scanning/scanning-a-qr-code-off-a-monitor).
The short version stays the same: closer, tilted, and brighter.

## FAQ

### Why will a QR code not scan through a window?
The glass reflects the scene behind you (and your own phone and torch) directly onto the code, superimposing a ghost image the decoder cannot separate from the modules. Tilt the phone slightly, move closer, and shade the glass to remove the reflections.

### How do I stop my reflection blocking the code?
Tilt the phone 10–15 degrees off perpendicular. Reflections leave at the same angle they arrive, so a small tilt moves your reflection off the code while staying well inside the decoder's perspective tolerance.

### Should I use the torch when scanning through glass?
Try without it first. Square-on, the torch reflects a blown-out hotspot straight back onto the code. If the code is genuinely too dark, turn the torch on but keep the phone angled so the hotspot lands off the code.

### Why is double glazing worse than single glass?
Two panes mean four reflecting surfaces, which create offset pairs of ghost reflections, and low-emissivity coatings add a slight tint. Codes meant to be read through double glazing should be printed noticeably larger than the distance rule alone requires.

## Try it

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