# QR scanning at an angle

> Phone decoders correct perspective reliably to about 30–45° off-axis, using the three finder patterns and alignment patterns to un-skew the grid. Beyond that, foreshortening compresses modules below the sampler's resolution in one axis and decoding fails. Mount codes at eye height, square to the reader's approach.

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

---

## Decoders expect tilt, up to a point

Nobody holds a phone perfectly square to a poster, and the format was designed
accordingly. The three [finder patterns](/glossary/finder-pattern) give the decoder
three known corners; from those it computes the perspective transform that maps the
photographed quadrilateral back to a square grid. In larger codes,
[alignment patterns](/glossary/alignment-pattern) pin down additional interior points
so local warp gets corrected too.

The result: **up to roughly 30° off-axis, scanning is essentially unaffected; between
30° and 45° it still works but slows; beyond 45° reliability falls off a cliff.**

## Why steep angles fail: foreshortening

Tilt compresses the code in one axis by the cosine of the viewing angle. The decoder
can mathematically un-skew the shape, but it cannot recover detail the sensor never
captured, once the *compressed* modules drop below the sampler's ~3 pixels-per-module
floor, the information is gone.

| Off-axis angle | Apparent width in the tilted axis | Effect |
|---|---|---|
| 0° | 100% | Baseline |
| 30° | 87% | Negligible |
| 45° | 71% | Works; needs a bigger code or closer scan |
| 60° | **50%** | Modules halved: code must be ~2× larger to compensate |
| 75° | 26% | Practically unscannable |

Read it as a multiplier on the [10:1 distance rule](/docs/print/the-10-to-1-distance-rule):
a code read at 60° needs to be about twice the width the distance alone demands. Angle
and distance spend the same budget: the full model is in
[scanning distance limits](/docs/scanning/scanning-distance-limits).

Two second-order effects make steep angles worse than the cosine alone suggests: depth
of field (near and far edges of the code sit at different distances, so one edge is
soft) and glare, since shallow angles on glossy surfaces catch reflections, the same
mechanism covered in [glossy surfaces and glare](/docs/print/qr-codes-on-glossy-surfaces-and-glare).

## Placement: design the angle away

Every steep-angle scan is a placement decision someone made earlier. The fixes:

- **Eye height, vertical surface.** Mounting at 1.4–1.6 m puts the average adult
  square-on by default. This and the surrounding layout rules are covered in
  [QR code placement in a layout](/docs/design/qr-code-placement-in-a-layout).
- **Beware flat codes read from standing.** A sticker flat on a table or counter is
  read at 45–60° by anyone standing over it. A table tent presents the code vertically
  and removes the problem, which is much of why [table tents](/qr-codes-on/table-tents)
  exist.
- **Floor graphics are the extreme case.** Read at 60–75° from standing height, they
  need to be several times oversized to scan at all.
- **Perpendicular to the approach.** In a corridor or queue, face the code toward
  where people stand, not sideways along the wall.
- **Curved surfaces are angle problems in disguise.** A bottle or pole presents a
  continuum of angles across one code; the working limits are in
  [QR codes on curved surfaces](/docs/print/qr-codes-on-curved-surfaces).

Before printing, check the code has healthy margins with the [validator](/validate),
and size it with the [size calculator](/size-calculator), then, if users will
predictably read it off-axis, go a size up.

## FAQ

### At what angle does a QR code stop scanning?
Most phone decoders handle up to about 30° off-axis without any trouble and keep working to around 45°. Beyond that, foreshortening compresses the modules below what the camera can resolve, and scans become slow, then impossible, by about 60–75°.

### How do QR codes work at an angle at all?
The three large corner squares give the decoder three known reference points, from which it computes and reverses the perspective distortion. Alignment patterns inside larger codes correct residual warp. The limit is the camera's resolution, not the maths.

### Where should I place a QR code so the angle is not a problem?
On a vertical surface at roughly 1.4–1.6 m (eye height) facing the direction people approach from. Avoid codes lying flat on tables and counters read from standing, which forces a 45–60° angle; a table tent solves that.

### Does angle change how big the code needs to be?
Yes. Tilt shrinks the modules in one axis by the cosine of the angle, so a code read at 60° presents half-width modules and needs to be about twice as large as the scan distance alone would require.

## Try it

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