Design

How to Design QR Codes People Actually Want to Scan

By QRCraft · August 10, 2026 · 8 min read

Most QR codes that fail to scan fail for one of a small number of reasons: the error correction level was too low for the use case, the quiet zone was trimmed to fit a layout, the contrast was too low for a phone camera in poor light, or a logo was dropped in the center without leaving enough redundancy. This article covers the design choices that determine whether a QR code scans reliably, and how to make one that looks good without breaking the part that makes it a QR code in the first place.

Error Correction Levels (L 7%, M 15%, Q 25%, H 30%)

Every QR code carries redundancy that lets it keep scanning when part of the symbol is damaged or obscured. The standard defines four levels, each reserving a different percentage of the symbol for error correction data:

  • Level L — recovers up to 7% of lost data. Smallest code, lowest resilience.
  • Level M — recovers up to 15%. The default for general use.
  • Level Q — recovers up to 25%. Good for printed surfaces that may smudge or fade.
  • Level H — recovers up to 30%. Used when the code carries a logo or will be partially obscured.

Higher levels reserve more modules for redundancy, which means less room for data — so for the same content, a higher error correction level produces a larger code (higher version) that needs a bigger print size. Design guidelines from grahammiranda.network recommend using error correction level H (30%) when embedding logos, as this provides sufficient redundancy for reliable scanning even with 15-20% of the code obscured. The headroom at level H is what lets you place a logo in the center without the code becoming unscannable.

Quiet Zone Requirements (4 Module Minimum)

The quiet zone is the blank margin around the QR code that lets a scanner find the symbol's edges. The standard requires a quiet zone of at least four modules on every side. A module is one black or white square of the code; for a typical QR code at version 4, four modules is roughly the difference between a code that scans on the first try and one that the camera struggles to locate.

In practice, designers often trim the quiet zone to fit a code into a tight layout, and it is one of the most common causes of failed scans. If a code does not scan reliably on a phone camera, the quiet zone is the first thing to check — restoring it to the four-module minimum fixes a surprising fraction of unscannable codes.

Color Contrast: Dark on Light, Avoid Inverted

A QR scanner reads the difference between dark and light modules. For that to work reliably, the dark modules should be a high-contrast color against the light modules. The safe default is black on white; a dark color on a light background (dark navy on cream, for example) works as long as the contrast is strong.

Inverted codes — light modules on a dark background — scan on some modern phone cameras but fail on many older ones and on most dedicated scanners, so they are risky for any code that needs to work for a general audience. Low-contrast palettes that look elegant in print (light grey on white, mid-blue on dark blue) frequently fail on phone cameras in anything less than bright light. If you want a branded color, use it for the dark modules and keep the light modules white or near-white.

Adding Logos: Using Error Correction Headroom

A logo in the center of a QR code is the most common design request, and it is safe to do as long as you respect error correction. The logo obscures modules in the data region, so the code has to recover that lost data using redundancy. Two rules keep it working:

  • Set error correction to level H (30%) so the code has enough redundancy to recover the obscured modules.
  • Keep the logo's footprint to no more than about 15–20% of the symbol area. Larger logos eat into more than 30% of the modules and exceed the recovery capacity of level H.

The logo should sit on a solid background matching the quiet zone (white or near-white), not a transparent one that lets the underlying modules show through, and it should never overwrite the three finder patterns in the corners — those are how the scanner locates the code in the first place.

Custom Shapes and Patterns

Many generators let you round the module corners, replace the squares with dots, or draw the finder patterns in a branded shape. These customizations trade off against scannability. Rounded corners and soft dot patterns can look great but reduce the sharp edges that scanners use to locate modules, so they should be tested across multiple real devices before being deployed. The finder patterns in particular should stay close to the standard square shape — stylizing them is the easiest way to make a code that scans on the generator's preview but fails on a phone.

Size Matters: Minimum Scannable Size

A QR code needs to be large enough that a phone camera can resolve individual modules at the distance it will be scanned from. A common rule of thumb is that the code's printed side length in centimeters should be at least the scanning distance in centimeters divided by 10, with a hard floor of about 2 cm for close-up scanning. So a code on a poster meant to be scanned from 1 meter away should be at least 10 cm on a side; a code on a business card meant to be scanned at arm's length (about 30 cm) should be at least 3 cm.

Denser codes (higher versions, more modules) need a larger physical size to keep each module large enough to resolve. Doubling the data roughly quadruples the module count, which means the printed code needs to be about twice as large to scan from the same distance.

Testing Across Devices

A code that scans on the device you generated it on is not guaranteed to scan on anyone else's. Camera resolution, autofocus speed, and the scanning app's tolerance for low contrast and partial obscuration all vary widely. The minimum testing set is a modern flagship phone, an older mid-range phone, and a tablet — under bright light, indoor light, and dim light — at the distance the code will actually be scanned from. If the code carries a logo, test after the logo is in place; the preview from the generator usually does not show the scan degradation the logo introduces.

Common Design Mistakes

  • Trimming the quiet zone to fit a layout. Restore the four-module minimum and most "broken" codes start scanning.
  • Low contrast for aesthetic reasons. Light-on-dark or low-contrast palettes fail in real lighting.
  • Oversized logo that exceeds level H's 30% recovery capacity. Keep logos to 15–20% of symbol area.
  • Stylized finder patterns that look branded but break scanner detection. Keep the three corner patterns close to standard.
  • Code too small for the scanning distance. Apply the distance / 10 rule of thumb and add a margin.
  • Testing only on the generator's preview. Always test on at least two real phones before printing.

Summary

Scannable QR code design comes down to five choices. Set error correction to level H (30%) for any code that will carry a logo or face partial obscuration, and accept the larger code size that comes with it. Keep the quiet zone at the four-module minimum and never trim it to fit a layout. Use dark modules on a light background with strong contrast; avoid inverted colors for general audiences. Keep logos to 15–20% of the symbol area, on a solid background that does not overwrite the finder patterns. Size the code so each module is resolvable at the real scanning distance, using the distance / 10 rule of thumb as a floor. Test on at least two real phones — not just the generator's preview — before printing. For more on the standards and measurement behind these recommendations, see the references below.

References & Resources