# QR codes on curved surfaces

> Curvature foreshortens the far edges of a code and decoders only tolerate so much of that distortion. Keep the code width to one sixth of the cylinder circumference or less, centre it on the visible face, and for narrow tubes move the code to a flat surface such as the cap or a tag.

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

---

## What curvature does to the symbol

Wrap a flat square around a cylinder and the camera no longer sees a square. Modules at the
centre of the code face the lens; modules near the left and right edges tilt away,
foreshortening horizontally until, at 90° around the curve, they vanish entirely. The
decoder receives a symbol whose module width shrinks progressively toward two edges — a
distortion that is neither a clean rotation nor a clean perspective skew.

Decoders have real tolerance here. The three [finder patterns](/glossary/finder-pattern)
let the software fit a perspective transform, and from version 2 upward
[alignment patterns](/glossary/alignment-pattern) provide interior anchor points that
correct smooth local warping. That machinery is why bottle labels work at all. But the
correction models assume mild, continuous distortion — it runs out well before the
geometry does.

## The one-sixth rule

A practical, testable limit:

```
maximum code width ≈ cylinder circumference ÷ 6
```

At one sixth of the circumference the code spans 60° of arc, and the outermost modules are
tilted about 30° from the camera — roughly the same tolerance decoders show for
[scanning at an angle](/docs/scanning/qr-scanning-at-an-angle) on flat surfaces. Beyond
that, edge modules compress faster than error correction can compensate.

Worked examples with real diameters are on the
[cylindrical packaging](/docs/print/qr-codes-on-cylindrical-packaging) page — a slim
330 ml can, for instance, has a circumference of about 16.6 cm, capping the code at
roughly **2.8 cm**.

Remember the cap interacts with the [ten-to-one distance rule](/docs/print/the-10-to-1-distance-rule):
a 2.8 cm code is only good to about 28 cm of scanning distance, which is fine for an item
held in the hand and useless on a shelf across an aisle.

## Orientation: only one dimension needs to curve

A QR code is square, so one of its dimensions must wrap around the circumference — but only
one. Keep the other aligned with the cylinder's long axis, where the surface is flat.
Practically:

- Apply labels so the code sits **level, centred on the natural viewing face**, away from
  label seams and edges where the wrap tightens visually.
- On tall narrow items — wine bottles, tubes, pens — the flat direction runs vertically.
  A QR code scans at any rotation, so there is no penalty for placement that favours the
  axis.
- **Concave curves** (inside a wristband, a scooped surface) behave like convex ones
  optically, with the added problem of self-shadowing. The same one-sixth budget applies.

## When the cylinder is too thin

Below roughly a 3 cm diameter (circumference under ~9.4 cm), the one-sixth rule caps the
code at ~1.6 cm, and dense payloads stop fitting at scannable module sizes. Honest options,
in order:

1. **Move the code to a flat surface** — the cap, the base, a hang tag, or the carton the
   tube ships in.
2. **Shorten the payload** so a lower version keeps modules large — see
   [why longer URLs make denser codes](/docs/spec/why-longer-urls-make-denser-codes) and
   check the result in the [size calculator](/size-calculator).
3. **Rectangular rMQR** can run its long axis along the cylinder, but
   [rMQR](/glossary/rmqr) support in stock phone cameras is far from universal — do not use
   it for consumer-facing codes yet.

## Always test on the object

Print a proof, wrap it on the actual item — not a larger stand-in — and scan with several
phones at the realistic distance. Shrink-sleeve and flexo processes add their own
distortions on top of geometry, covered under
[cylindrical packaging](/docs/print/qr-codes-on-cylindrical-packaging).

## FAQ

### Can a QR code work on a curved surface?
Yes, within limits. Finder and alignment patterns let decoders correct smooth distortion, so codes on bottles and cans scan reliably when the code width stays at or under one sixth of the cylinder's circumference.

### How much curve can a QR code handle?
About 60° of arc — a code spanning one sixth of the circumference. At that width the outermost modules tilt roughly 30° from the camera, which is within normal decoder tolerance. Wider than that, edge modules compress beyond recovery.

### Why does my bottle QR code not scan?
Usually the code is too wide for the diameter, so edge modules foreshorten too far. Measure the circumference, divide by six, and compare with your code width. Glare from glossy labels on curved surfaces is the other common culprit.

### Where should a QR code go on a tube or bottle?
Centred on the main viewing face, level with the axis, away from seams. If the diameter is under about 3 cm, put the code on the cap, the base or a tag instead of the curved wall.

## Try it

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