Why QR codes stop working (and how to avoid it)
A QR code itself never “wears out”. The pattern printed on your menu today will contain exactly the same data in ten years. Yet QR codes stop working all the time. When they do, the cause is almost always one of a handful of problems, and nearly all of them can be avoided before you print. Here they are, roughly in order of how often we see them.
1. The link inside is dead
This is the most common one. The code scans perfectly, the phone opens the web address, and the page is gone: a “404 not found”, an expired domain, a menu PDF that was renamed, a campaign page someone deleted after the campaign.
With a static code the web address is printed into the pattern itself, so if the address changes, the code is useless and you need to reprint.
How to avoid it:
- Link to a page you control and will keep, like
yoursite.com/menu, not a file on a sharing service with a long random address. - Never delete a page that is printed somewhere. Redirect it instead.
- Keep your domain on auto-renew.
- If the destination might change, use an editable (dynamic) code. You can point it somewhere new without reprinting. See dynamic vs static QR codes.
2. The QR service switched it off
Editable codes work by sending people through a short link run by the QR service. That is useful, but it also means the service has power over your printed codes. Some services stop redirecting your codes when your subscription ends, or after a free trial. Business owners discover this when customers tell them the menu code shows an error page or an ad.
How to avoid it:
- Before you print, read what happens to your codes if you stop paying. Look for a clear promise in the terms.
- Keep a static code for things that must work forever and never change.
- At QRPetal our promise is simple: codes never expire. If you stop paying, editable codes keep forwarding to their last link. You only lose editing and new stats. The only exception is a code we block for abuse, such as phishing.
3. It was printed too small
A code that scans on your laptop screen can fail on a business card. Every QR code is a grid of small squares called modules, and the phone needs to see each of them clearly. Print it too small, or put too much text in it, and the modules become specks.
How to avoid it: use the rule of thumb that a code should be about one tenth of the scanning distance wide, and never smaller than about 2 cm for close-up use. Our guide on how big a QR code should be when printed has a full table.
4. Too much data
Long web addresses full of tracking parameters, or big blocks of text, make dense codes with many tiny modules. They are harder to print and harder to read, especially from a distance or in poor light.
How to avoid it: shorten the address, remove parameters you do not need, or use an editable code, which always holds a short link.
5. Weak contrast or odd colours
QR readers look for dark modules on a light background. Trouble starts with:
- pale colours, like light grey on white or yellow on white;
- inverted codes (light on dark), which some older readers do not support;
- a background photo that is as dark as the code in places.
How to avoid it: keep a strong difference between dark and light. Artistic codes are fine as long as the parts that carry the signal have enough contrast, which is exactly what QRPetal checks with two QR readers before you download.
6. The quiet zone was cut off
Every QR code needs an empty light margin around it, 4 modules wide in the standard. Designers often crop it, or place a frame, a pattern or text right against the code. Without that margin, readers struggle to find where the code begins.
How to avoid it: treat the margin as part of the code. Keep it clear on all four sides.
7. Too much was covered by a logo or effect
QR codes have built-in error correction: level L can recover about 7% of damaged data, M about 15%, Q about 25% and H about 30%. Placing a logo over the middle “uses up” some of that budget. Cover too much, or use a low error correction level, and the code fails. Special print effects like foil, embossing or spot varnish over the code can do the same.
How to avoid it: use the highest error correction level (QRPetal always uses H), keep logos modest, keep print effects away from the code, and always test the final design, not just the plain code.
8. The surface fights the camera
Glossy lamination reflecting a ceiling light, a code wrapped around a bottle, a crumpled flyer, a sticker in direct sunlight, a code behind scratched glass: all of these hide parts of the pattern.
How to avoid it: choose matte finishes, put codes on flat surfaces, protect outdoor codes from fading and damage, and replace worn ones.
9. It is in the wrong place
Some codes are technically fine but practically unscannable: too high on a wall, on a moving vehicle, behind a counter, or in a basement with no mobile signal (the phone can read the code but cannot load the page).
How to avoid it: place codes where people can comfortably stand still at arm’s length, and think about whether they will have internet access there. For offline places, a Wi-Fi code next to it can help.
10. It was blocked as unsafe
Browsers, phones and QR services check links against lists of known phishing and malware sites. If the destination is flagged, or the short link service blocks it after abuse reports, people will see a warning page instead.
How to avoid it: link to your own, well-kept website, keep it secure, and use a reputable QR service that deals with abuse quickly.
A simple prevention checklist
- Link to a stable page you control, or use an editable code.
- Know what happens to your codes if you stop paying for the service.
- Keep content short.
- Size the code for the scanning distance.
- Keep strong contrast and a clear quiet zone.
- Use high error correction and keep logos and effects in check.
- Print a test copy on the real material.
- Scan it with two different phones, where it will be used.
- Check the destination page again every few months.
A QR code that stops working quietly costs you customers you will never know about. Ten minutes of checking before printing is the cheapest insurance you will ever buy. If you want a code that is checked for you before you download it, try QRPetal for free.