QR Code Size: How Small Can You Actually Go?

The real math on QR code size, scan distance, and error correction - with a practical rule of thumb and the mistakes that make small codes unscannable.

Everyone wants their QR code smaller. Product designers want it off the packaging, print shops want it out of the bleed area, and marketers want it subtle. You can go smaller than you think, and below what the formula allows nothing scans.

The rule of thumb is simple.

Minimum QR size = scan distance ÷ 10.

A QR code scanned from 30cm away (a phone held at reading distance) needs to be at least 3cm on each side. A QR code on a billboard scanned from 10 meters away needs to be at least 1 meter. That ratio is conservative enough to survive a slightly dirty lens, an angled scan, and a hand that is not quite steady.

The module-size formula

The scannable limit of a QR code depends on the module size, the width of one of the small squares. Camera scanners need each module to cover several pixels in the captured image, so

minimum module size (mm) = scan distance (mm) × 0.001

A 41-module Version 6 QR code at 0.4mm per module is about 16mm square. At 400mm scan distance that works. At 1 meter it does not.

That is where the 10:1 rule comes from. It is module-size math with a buffer for field conditions, simplified into something you can explain in a design review.

More data means a bigger grid

A QR code with 20 characters uses a much smaller grid (Version 1 or 2, 21x21 or 25x25 modules, depending on the character mix) than a QR code with 300 characters (Version 13, 69x69 modules, at level M). At the same physical size, the 300-character code has modules more than 3x smaller, so it needs more than 3x the camera resolution to read.

QR VersionModule gridNumeric capacity (max, level L)Alphanumeric capacity (max, level L)Minimum size at 300mm by the module formula, with quiet zone
121 x 214125About 9mm
329 x 2912777About 11mm
641 x 41322195About 15mm
1057 x 57652395About 20mm
1577 x 771250758About 26mm

The 10:1 rule gives 30mm at that distance for every version, which stays above the module minimum all the way to Version 15. So shorten your URL before you shrink your QR code. A 30-character bit.ly link produces a Version 2 code (25x25 modules) at level L, or Version 3 (29x29) at level M. A 90-character tracking URL produces a Version 5 or 6 (37x37 or 41x41). A shorter URL means a smaller grid, and a smaller grid prints smaller at the same scan distance. Use a URL shortener, strip UTM parameters, or route through a redirect.

Higher error correction means a bigger code

QR codes have four error correction levels, L (7%), M (15%), Q (25%) and H (30%). Higher correction recovers from more damage but needs more modules, so the grid is bigger for the same data.

  • L (7%) is for indoor, controlled environments with clean labels and no wear. It gives the smallest code for the data.
  • M (15%) is the sensible default. It tolerates minor smudging and printing variance.
  • Q (25%) is for outdoor signage, environments with wear, and any code you expect to get dirty.
  • H (30%) is for codes with a logo over the center (the correction treats the logo as damage), restaurants, food packaging and industrial labels.

For a smaller code that will be printed indoors and kept clean, drop to L. For a QR code on a coffee truck that is going to get rained on, use Q or H and size up. Our QR code generator lets you pick the level explicitly, so choose it for where the code will live.

Leave a 4-module quiet zone

A QR code needs 4 modules of blank space on all four sides. A 25mm QR code with a 1mm module needs 4mm of clear space on each side, so the area you need is 33mm.

The quiet zone must be blank. A faint gradient, a pattern at low opacity, the edge of a photograph, or another graphic element in that margin all count as intrusions. Phone scanners tolerate a little, and losing scans because a product photo touches the left edge is an own goal. Keep it clear and every phone can find the code.

The minimums I use

For a short URL in good lighting at reading distance, 20mm x 20mm is the floor. Below that, even a shortened URL fails, because the camera cannot resolve the modules and the autofocus will not lock.

For printed marketing (flyers, business cards, menus), 25mm minimum and 30mm preferred.

For retail packaging scanned at a checkout, 20mm minimum, and use EAN-13 for the SKU itself. A QR code on packaging is for consumer engagement, and the point-of-sale scan is the EAN-13.

For shipping labels scanned from 50-100cm with a dedicated scanner, 50mm minimum, and 100mm if it is scanned from a meter away.

For posters and signage scanned from 2 meters or more, 200mm minimum. Test it from the viewing distance before you print 500 copies.

The mistake I see most

A marketing team asks a designer to put a QR code on the back of a 3.5" x 2" business card. The designer, trying to preserve whitespace, sizes it at 12mm. It encodes a 100-character URL with UTM tracking at error correction level H, because the brand guide says add a logo overlay. That produces a Version 10 grid, 57 modules across, at about 0.2mm per module. In fluorescent office light with a steady hand, it scans. At a trade show under a colored spotlight, held by someone in conversation, it scans maybe 30% of the time.

The fix is to shorten the URL to 26 characters or fewer, which fits Version 2 at level M, skip the logo overlay, and size up to 22mm. Same information, and modules four times the size.

Generate it right the first time

Use the QR code generator. It exposes error correction level, module size and quiet zone, so you can set the code up for its use case. For batch runs (menu QRs per table, serial-numbered asset tags, personalized marketing codes), the QR batch generator takes a CSV of URLs and outputs one PDF per code or a single print sheet.

If you are putting QR codes on anything industrial, read QR vs Data Matrix first. For small industrial marks, Data Matrix is usually the right choice.

Try it

More guides