⚡ Curated dev resources & dealsSponsored
DevToolBayFree Developer Tools

QR Codes: Size, Error Correction and Payload Limits Explained

How QR codes pack data: versions, the four error correction levels, scan distance rules and the payload ceiling — plus what makes a code unscannable.

A QR code is not a black box: its version number, error correction level and payload length interact visibly. Knowing the interaction is the difference between a code that scans across a room and one that fails at arm length.

Versions: density tiers

Version 1 is 21 by 21 modules; each version adds density up to version 40 at 177 by 177. Long URLs push you into higher versions — more modules, smaller dots at the same printed size. Shorten the payload first, which is why redirect links before encoding are standard practice.

The four error correction levels

  • L — recovers 7 percent damage, smallest size.
  • M — 15 percent, the balanced default for links.
  • Q — 25 percent, for industrial environments.
  • H — 30 percent, required when placing a logo over the code.

Higher levels expand the symbol for the same payload. The QR Code Generator exposes all four levels with a live preview, rendered locally as SVG and PNG.

The payload ceiling

Absolute limits: about 4,296 alphanumeric or 2,953 bytes of UTF-8 at maximum version and low correction. In practice, phone scanning degrades long before the theoretical ceiling — keep payloads under a few hundred characters.

What actually breaks scanning

  • Printing too small for the distance: the thumb rule is module size at least distance divided by 10.
  • Insufficient quiet zone — the blank margin around the code.
  • Dark-on-dark or low-contrast color pairings.

When the payload is a URL with query parameters, percent-encode it first with the URL Encoder so ampersands inside tracked links survive the print-then-scan round trip.

Related guides

Try these tools