QR Code Standards, Error Correction, and Why Your QR Code Might Not Scan

By Marcus Vane · October 12, 2026 · Developer Tools

A QR code is not a single format but a family of versions with built in error correction. Understanding the levels and capacity limits explains why some codes scan reliably and others fail.

QR codes look like a single technology, but they are a family of forty versions, each with a different capacity, and four error correction levels that trade data space for resilience. The combination you choose decides how much the code can hold and how much damage it can survive. Most scanning failures come down to a mismatch between the content, the error correction level, and the conditions in which the code is read, rather than any fault in the scanner.

In this article:

How a QR code encodes data

A QR code is a two dimensional matrix of black and white modules. It encodes data in several modes: numeric, which is most efficient for digits; alphanumeric, which covers uppercase letters, digits and a few symbols; byte, which handles full text; and kanji. The mode chosen affects how much data fits in a given version, because numeric mode packs roughly three digits into ten bits while byte mode uses eight bits per character. Choosing the right mode for the content is the first capacity saving.

Versions and capacity

QR codes come in forty versions, numbered from one to forty, each larger than the last. Version one is twenty one by twenty one modules and holds a maximum of about seventeen numeric or twenty five alphanumeric characters at the lowest error correction. Version forty is one hundred and seventy seven by one hundred and seventy seven modules and holds thousands of characters. As the version rises, the code becomes denser and harder to scan at small physical sizes, which is why the smallest version that holds the data is usually the best choice.

The four error correction levels

Each QR code carries error correction data based on Reed Solomon coding, allowing the code to be read even when part of it is damaged or obscured. There are four levels. Level L restores about seven percent of lost data, level M about fifteen percent, level Q about twenty five percent, and level H about thirty percent. Higher correction means more resilience but less capacity for the same version, because more of the modules are spent on redundancy. A code placed on a clean printed card needs little correction, while one etched on a tool or printed on packaging that will be scuffed needs more.

Worked examples choosing settings

Example one: a URL on a poster

A short link of about twenty characters fits in version one or two at error correction level M, producing a small, easily scannable code. Because the poster is a clean surface, level M is sufficient and keeps the code compact. A longer tracking URL of sixty characters needs a higher version, which means a larger physical code to remain scannable at distance.

Example two: a vCard on a business card

A contact card with name, phone, email and address may run to two hundred characters, requiring a version around ten or higher. At level M the code is moderately resilient; at level H it is more robust but noticeably denser, which on a small business card can make it hard to scan if printed too small. The trade is between resilience and physical size.

Example three: a code on industrial packaging

A serial number etched or printed on packaging that will be handled and scuffed benefits from level H correction, which tolerates up to thirty percent damage. The code is larger for the same data, but it survives the conditions it was made for, which is the point.

Why QR codes fail to scan

Common mistakes

FAQ: QR code edge cases

Can a QR code contain a logo in the middle?

Yes, if the error correction level is high enough to cover the area the logo obscures. Level H can tolerate around thirty percent damage, which is usually enough for a small centred logo, but the logo must stay within that budget or the code becomes unreadable.

Do QR codes expire?

The code itself never expires, but if it encodes a URL, the destination at that URL can disappear. A code pointing to a short link you control lets you change the destination without reprinting the code.

How small can a QR code be printed?

It depends on the version and the print resolution. As a rule, each module should be at least a few tenths of a millimetre, so a denser version needs a larger physical area. Test the printed size with a real phone before committing to a print run.

Wrapping up

A QR code is a balance of content, version, error correction and physical size. Pick the smallest version that holds your data, choose the error correction level the environment demands, keep the contrast high and the quiet zone clear, and test the printed result with a real device. That is the difference between a code that scans first time and one that frustrates everyone.

Generate scannable QR codes with adjustable error correction.

Try the Favicon Generator tool.

SwiftMultiTool — free online tools for everyone. Home · Blog · About · FAQ · Contact