# How a QR code size calculator works

> A QR size calculator derives the code's version from the payload and error correction level, then returns the larger of two constraints — printed side at least the scanning distance divided by ten, and each module at least the distance divided by 250. Dense payloads trigger the second rule, which is why long URLs need bigger codes.

Source: https://useqr.app/docs/print/qr-code-size-calculator-explained · Last reviewed 2026-08-21 · UseQR is free forever, MIT licensed, no signup.

---

## What the calculator computes

Two inputs matter more than most people expect: what the code encodes, and how far away
the reader stands. From the payload and the
[error correction level](/docs/spec/error-correction-levels-explained), the calculator
determines the smallest QR [version](/glossary/version) that fits, which fixes the module
count. From the distance it applies two floors and returns whichever is larger:

```
side   ≥ distance ÷ 10      (the classic ten-to-one rule)
module ≥ distance ÷ 250     (what the camera actually needs)
```

Applied across the whole symbol, including the four-module
[quiet zone](/glossary/quiet-zone) on each side, the second line becomes:

```
side ≥ (modules + 8) × distance ÷ 250
```

Even a version 1 code has 21 modules, so (21 + 8) ÷ 250 is stricter than 1 ÷ 10. In
practice the module rule always wins: **the ten-to-one figure is the floor, and density
scales the answer up from there**. That is the entire trick of a size calculator — it
knows the module count, and a rule of thumb does not.

## Worked examples

At error correction M, quiet zone included:

| Payload | Version | Modules | At 50 cm | At 1 m | At 2 m |
|---|---|---|---|---|---|
| 25-character URL | 2 | 25 | 6.6 cm | 13.2 cm | 26.4 cm |
| 70-character URL | 5 | 37 | 9.0 cm | 18.0 cm | 36.0 cm |
| 180-byte vCard | 9 | 53 | 12.2 cm | 24.4 cm | 48.8 cm |

The bare ten-to-one rule says 5, 10 and 20 cm for all three rows. For the short URL the
difference is margin; for the vCard it is the difference between a code that scans and one
that does not. 180 bytes is exactly the ceiling of version 9 at EC M — one more byte and
the code jumps to version 10's 57×57 grid.

## Why the version matters so much

Every step up in error correction and every extra character pushes the payload toward the
next version, which adds four modules per side. Same printed size, smaller modules, less
for the camera to resolve. [Longer URLs make denser codes](/docs/spec/why-longer-urls-make-denser-codes),
and the [capacity table](/docs/reference/qr-code-capacity-table) shows exactly where the
version breaks fall.

This is also why EC H is the wrong instinct for distance problems. Redundancy costs two to
three versions on a typical URL; at the same printed size that shrinks every module by
15–25%. A shorter payload at EC M beats a long payload at EC H in almost every
at-a-distance scenario.

## What no calculator can know

The result assumes decent light, a roughly face-on camera and a clean substrate. It cannot
see that your print process has a module floor of its own — 0.5 mm on uncoated stock or
203 dpi thermal, 1 mm screen-printed on fabric — so check the
[substrate floors](/docs/print/qr-code-size-for-print) separately, and move to the 8:1
ratio for dim light or steep angles, as covered in
[the ten-to-one rule](/docs/print/the-10-to-1-distance-rule).

Run your real payload through the [size calculator](/size-calculator), print a proof at
the answer it gives, and confirm the artwork decodes with the [validator](/validate)
before anything goes to press.

## FAQ

### How is QR code size calculated?
From two constraints, taking the larger: printed side at least the scanning distance divided by ten, and each module at least the distance divided by 250. The module count comes from the payload length and error correction level, so denser codes get bigger answers.

### Does error correction level change the required size?
Yes. Higher error correction adds redundant codewords, which often pushes the code into a higher version with more modules per side. At a fixed printed size, each module shrinks, so the code must grow to compensate.

### Why does the calculator give a bigger number than distance ÷ 10?
Because ten-to-one assumes a moderate payload of roughly version 2–4. The calculator knows your actual module count and sizes each module to subtend enough angle at the camera, which is stricter for anything dense.

### Can I use the calculated size for thermal labels?
Use it as the lower bound, then check the printer's module floor. A 203 dpi thermal head needs modules of at least 0.5 mm — four whole printer dots — which can demand a bigger code than the distance maths alone.

## Try it

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