Advertisement

QR Code Best Practices: Size, Error Correction, Use Cases

QR codes had a quiet decade and then exploded back into mainstream use during the pandemic. Restaurant menus, payment systems, public-transport tickets, and event check-ins all rely on them now. But many of the QR codes you see in the wild are slightly broken — too small to scan reliably, too low-contrast, or designed in a way that defeats the underlying error-correction mechanism. This article walks through the design decisions that determine whether a QR code works the first time, every time, or whether it becomes the kind of code that requires three attempts and an apologetic shrug.

Most of what follows comes from the ISO/IEC 18004 specification and from field testing with current smartphone scanners. The numbers are conservative because QR codes are read by every camera quality from the latest flagship down to a five-year-old budget phone.

QR Code Generator Generate scannable QR codes for URLs, text, contact cards, and Wi-Fi credentials.
Open QR Generator →

Sizing: The 10:1 Rule

The single most important design decision for a printed QR code is its physical size relative to scanning distance. The widely cited rule of thumb is 10:1 — the scanning distance can be at most ten times the side length of the QR code.

Use caseScan distanceMinimum QR size
Phone in hand (menu, card)~30 cm3 cm × 3 cm
Product packaging shelf scan~50 cm5 cm × 5 cm
Magazine page at arm's length~60 cm6 cm × 6 cm
Bus stop poster~2 m20 cm × 20 cm
Billboard / large signage~10 m1 m × 1 m

For digital displays — a QR code on a website meant to be scanned with another phone — 200 × 200 pixels is the minimum, and 300 × 300 is more reliable across screen sizes. Always leave a quiet zone (margin) of at least four modules (the small squares that make up the code) around the entire QR; scanners use the quiet zone to identify the code's boundaries, and a code printed flush against text or an image will fail to register on many readers.

Error Correction Levels: The Underrated Setting

QR codes have four error-correction levels, defined by the percentage of damaged modules they can tolerate while still decoding correctly. The level is encoded in the code itself, and choosing it is a real trade-off: higher correction protects against smudges, scratches, and logo overlays, but it also adds modules, making the code denser for the same data.

LevelRecoversWhen to use
L (Low)~7%Clean digital display, ample size
M (Medium)~15%Default for most use cases
Q (Quartile)~25%Outdoor, small logo overlay
H (High)~30%Industrial labels, large logo center

If you want a logo or icon in the center of the QR — a popular branding move — use error correction level H. The Reed-Solomon code can usually reconstruct the data behind a logo that covers up to about 25% of the area. Keep the logo centered and circular or rounded-square; jagged or off-center overlays confuse the decoder's alignment. A purpose-built QR code with logo generator handles the math automatically.

Color, Contrast, and Inversion

The classical QR code is black on white. You can deviate, but with care. Scanners look for contrast, not literal black. The foreground should be significantly darker than the background — a Michelson contrast ratio of at least 50% is a useful floor.

Two pitfalls dominate the wild:

A useful test: convert your design to grayscale. If the QR is still clearly visible, the contrast is sufficient. If it disappears, scanners will struggle. You can verify the chosen colors with a contrast checker the same way you would for text accessibility.

Dynamic vs Static, and Use Cases That Hold Up

A static QR code encodes its data directly — the URL or text is literally in the pattern. A dynamic QR code encodes a short redirector URL pointing to a service that resolves to the real destination, which can be changed later. Dynamic codes also enable scan analytics.

The trade-off is dependency. A static code works forever, with no backend. A dynamic code works only as long as the redirector service exists; if the provider disappears, every printed code becomes useless. For permanent print runs — engraved plaques, museum signage, packaging — use static. For marketing campaigns and anything where you want to track scans or change destinations, use dynamic, and choose a provider you trust to outlast the campaign.

Field tip: always include a human-readable URL or short text caption near the QR code (menu.example.com or "scan to view menu"). Users who cannot or will not scan have a fallback, and the caption doubles as a sanity check for designers — if the URL is too long to print legibly, the QR is probably also too dense.

Frequently Asked Questions

Can a QR code expire?

The pattern itself never expires. What expires is the destination it points to: a dead URL, a removed Wi-Fi password, a deactivated payment account. Static codes are as durable as the medium they are printed on. Dynamic codes outlast their provider only as long as the provider does. Test old codes annually if they live on permanent installations.

What's the maximum amount of data a QR code can hold?

A version-40 QR at error level L holds up to 4,296 alphanumeric characters or 2,953 bytes. In practice, anything over a few hundred characters produces a code so dense it requires a large, clean print to scan reliably. For long content, encode a short URL and let the page hold the real data.

Should I use a barcode or a QR code?

Use a 1D barcode (UPC, Code 128) when the data is short, the layout is wide, and the readers are dedicated scanners — retail, warehousing, inventory. Use a QR code when the audience reads it with a phone and the data is a URL or moderate-length text. A barcode generator covers the 1D side; QR is the right call for everything consumer-facing.

Advertisement