02 - Nov - 2026

This clever redundancy lets QR codes survive scratches, stickers, and missing pieces

For a format that once looked destined to fade away, QR codes have become more useful than ever. You’ve probably scanned QR codes that looked halfway retired already, with scratched shipping labels, faded stickers, greasy restaurant menus, or a brand logo sitting right in the middle. Somehow, your phone still manages to pull the link out of the mess.

That feels strange if you assume every tiny black-and-white square carries a unique, irreplaceable piece of the message. QR codes have a fallback. They deliberately use some of their capacity for redundant data, giving the scanner enough mathematical backup to reconstruct information that was scratched out, obscured, or never captured clearly in the first place.

Your phone doesn’t need every square

Missing data is part of the plan

Diagram labeling the structural parts of a QR code. Credit: Oluwademilade Afolabi / MakeUseOf

A QR code may look like one big square mosaic, but the little modules inside it have very different jobs. The three large squares in the corners help your phone find the QR code and work out which way it is facing. Other patterns indicate how the grid is laid out and help the scanner cope with code that is tilted, stretched, or photographed at an angle.

There are a few other structural elements mixed in, including format information and reserved areas. Once those are accounted for, most of the remaining space is used for the encoded data and the extra information that lets the scanner recover from damage.

They contain mathematical relationships derived from the original data, so if some codewords become unreadable, the decoder can use the surviving information to reconstruct the missing values.

That recovery comes from Reed-Solomon error correction, a family of codes built for situations where part of the data may arrive corrupted or disappear altogether.

When a QR code is created, its information is divided into small chunks called codewords. Think of them as little pieces of the message. Reed-Solomon uses those chunks to generate additional error-correcting codewords, which are stored alongside the original data.

Those extra codewords aren’t spare copies of the URL tucked away elsewhere in the square. They contain mathematical relationships derived from the original data, so if some codewords become unreadable, the decoder can use the surviving information to reconstruct the missing values.

A loose way to picture it is as a set of equations with enough known values left over to solve for the unknowns. The actual math gets into some pretty gnarly algebra, which is a fun rabbit hole if you enjoy that kind of thing and blissfully unnecessary if you just want to open the lunch menu.

QR codes deliberately waste some space

The spare room is doing some work

Four QR codes showing different error correction levels. Credit: Oluwademilade Afolabi / MakeUseOf

The amount of redundancy built into a QR code can vary widely. Standard QR codes offer four error-correction levels, L, M, Q, and H, which correspond to approximate restoration rates of 7%, 15%, 25%, and 30% of total codewords. Those figures come from DENSO WAVE, part of the company that originally developed the QR Code and still publishes its technical documentation.

Higher error correction sounds like the obvious choice, but those extra recovery codewords need space. At the same QR size, increasing error correction leaves less room for the actual URL, text, or other data you want to store. If the payload still has to fit, the generator may need to bump the code up to a larger grid with more squares.

That’s why the correction level is usually matched to the environment. Level M is the most frequently selected option, while Level L can make sense when the code will stay clean, and capacity matters more. If a label is headed somewhere dusty, greasy, scratched, or generally hard on printed material, Q or H gives it a bigger cushion.

There’s a good historical reason QR codes were built with that kind of resilience. A DENSO Corporation team led by Masahiro Hara developed the QR Code in 1994 after manufacturing sites needed a way to store more information than conventional barcodes while still scanning quickly. Its first job was to help manage the production of automotive parts, and the code was designed to remain readable even when oil or other contaminants covered part of the symbol. The “QR” name itself came from “Quick Response.”

That same error-correction capability also helps explain why you can create a custom QR code with a logo covering part of the grid and still have it scan. If the design preserves the important structural patterns and enough usable codewords remain, the decoder can often reconstruct the information hidden by the artwork.

There’s still a limit to how much abuse the code can absorb. Covering too much of the grid with logos, text, or other artwork can make a QR code unreliable or completely unreadable, so error correction should not be treated as permission to place a logo wherever there is space.

Thirty percent isn’t an eraser budget

Error correction has rules of its own

The 30% figure attached to Level H is where QR folklore tends to get a little overconfident. It’s easy to read that number as permission to wipe out 30% of the visible square wherever you want. What it actually means is that the decoder can restore roughly 30% of the codewords, which is a very different claim from saying 30% of the printed symbol can vanish from any location. In other words, the percentage applies to the encoded information inside the QR code, not to any 30% chunk you choose to cover with a sticker.

That matters because the scanner still has to detect and decode the QR code before Reed-Solomon error correction can rebuild damaged data. A scratch through ordinary data modules may be recoverable. At the same time, damage to a finder pattern, timing information, or the blank white border around the code, known as the quiet zone, can trip things up much earlier.

Where the damage lands therefore matters, although one large scratch is not automatically worse than lots of smaller ones. Reed-Solomon error correction is particularly good at dealing with concentrated patches of damaged data, so a missing section can sometimes be surprisingly recoverable when it affects ordinary data rather than one of the structural patterns the scanner needs.

A sticker gets especially risky when it covers the patterns your phone relies on to locate the code and map out its individual modules. Print size, contrast, camera focus, viewing angle, distortion, and the decoder itself can all affect the outcome, which is why two QR codes with damage that looks almost identical can behave very differently.

A little damage was always expected

If you’re making a QR code yourself, the practical takeaway is to treat error correction as a safety net. Keep the finder patterns and quiet zone unobstructed; use a higher correction level when you expect dirt, wear, or branding; make the modules large enough to print cleanly; and test the finished code on several phones before you trust it. Covering part of the grid just because Level H says “30%” is a much shakier bet.

So when a beat-up QR code still scans through a scratch, sticker, or missing patch, your phone isn’t somehow guessing the URL from the overall shape. Enough encoded information survives for the decoder to reconstruct what’s missing, which is pretty impressive fault tolerance packed into a square you usually point a camera at for half a second.

Leave a Reply

Your email address will not be published. Required fields are marked *