# QR code too small to scan: the fix ladder

> A camera needs roughly three to four pixels per module, so a code smaller than scanning distance ÷ 10 starves the decoder. Fix in this order: shorten the payload so the version drops and modules grow, then increase the printed size. Never go below 2 × 2 cm in print, even for close-range scanning.

Source: https://useqr.app/docs/troubleshooting/qr-code-too-small-to-scan · Last reviewed 2026-08-21 · UseQR is free forever, no signup.

---

## The sampling floor

A decoder needs roughly **3–4 camera pixels per module** to tell dark from light reliably. When a code is too small for its scanning distance, each module lands on too few pixels, the thresholded image turns to mush, and the camera simply never reacts. "Too small" is therefore always relative to two things: the **distance** and the **module count**.

## Minimum width by distance

The working rule: printed width ≥ **scanning distance ÷ 10**, the [10:1 rule](/docs/print/the-10-to-1-distance-rule).

| Scanned from | Minimum width |
|---|---|
| 30 cm (in the hand, on a table) | 3 cm |
| 1 m (a poster in a corridor) | 10 cm |
| 3 m (across a room) | 30 cm |
| 10 m (a large sign) | 1 m |

The full [size-by-distance table](/docs/reference/qr-code-size-by-distance-table) covers intermediate distances and generous-margin variants.

## The part nobody checks: module size

Two codes at the same printed width can differ enormously in scannability, because the payload decides the module count. At **2 cm** wide:

- a version 2 code (25 modules across) has **0.8 mm** modules, comfortable;
- a version 10 code (57 modules across) has **0.35 mm** modules, below the **0.4 mm** print floor, and fragile on any real printer.

So a code can be "too small to scan" without being physically small at all. It is too small *per module*. That variant of the problem has its own page: [too dense to scan](/docs/troubleshooting/qr-code-too-dense-to-scan).

## The fix ladder, cheapest first

1. **Shorten the payload.** Strip tracking parameters, drop unnecessary path segments, use the shortest URL you control. Fewer characters means a lower version, which means bigger modules at the same printed width, a free win. See [why longer URLs make denser codes](/docs/spec/why-longer-urls-make-denser-codes).
2. **Drop error correction from H to M, if there is no logo.** Level H spends ~30% of capacity on redundancy and pushes the version up. Keep H only when a logo or expected damage genuinely needs it.
3. **Increase the printed size.** The honest fix when the space allows. The floor for close-range print is **2 × 2 cm**: below that, even short payloads get fragile once ink spread and camera focus limits join in.

## When the space simply is not there

Sometimes the placement cannot reach distance ÷ 10: a tiny label scanned from a metre away, a code high on a wall. The right answer is to move the code, not to shrink the rules: put it where people can approach to within ten times its width. A code nobody can get close to is decoration.

## Check before printing

Our [size calculator](/size-calculator) computes minimum width from your distance, and the [validator](/validate) renders your exact payload and confirms it decodes with your module count and margin. Then print one proof at final size and scan it from the real distance.

## FAQ

### What is the smallest a QR code can be printed?
Keep to 2 × 2 cm or larger for close-range scanning, with modules at 0.4 mm or more. Smaller codes can technically work with very short payloads and perfect print, but the margin for ink spread, focus and damage disappears.

### Does a higher-resolution image fix a QR code that is too small?
No. Resolution and physical size are different things, the camera cares about how many millimetres each module occupies at the scanning distance. A razor-sharp code that is physically too small still starves the decoder.

### How far away can you scan a QR code?
Roughly ten times its printed width with a typical phone camera. A 10 cm code works to about a metre; a 1 m code to about ten metres. Generous lighting and a short payload stretch this slightly, never dramatically.

### Why does shortening the URL make my QR code easier to scan?
Fewer characters produce a lower version with fewer, larger modules at the same printed size. Larger modules are easier for the camera to sample, so the same physical code scans from further away and on worse cameras.

## Try it

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