1. Size matters more than you think
The most common reason a QR code fails is not a broken link — it is that the code is too small to scan from the distance people actually encounter it. A QR code on a business card only needs to be about 2 cm (0.8 inches) wide because people hold cards close to their phone. But a QR code on a poster across the room, a banner at a trade show, or a yard sign viewed from a car needs to be significantly larger.
The general rule is a 10:1 distance-to-size ratio. If someone will scan your code from 10 feet away, the code needs to be at least 1 foot wide. For a billboard viewed from 50 feet, you need roughly 5 feet of QR code. This sounds obvious, but it is the single most overlooked factor in QR code design.
Always test your QR code at the actual distance it will be scanned before sending anything to the printer. Print a test copy, tape it where it will live, walk to where your audience will stand, and scan it. If it takes more than two seconds for your phone camera to recognize it, make it bigger.
2. Contrast is non-negotiable
QR codes work because a camera can distinguish between dark modules and light modules. When the contrast between those two colors is low, phone cameras struggle to read the code — especially in bright sunlight or dim indoor lighting. This is not a design preference. It is a technical requirement.
The safest combination is a dark foreground on a light background. Black on white gives you maximum contrast and works in virtually every condition. Dark navy on white, black on light yellow, and dark green on white all work well too. What does not work: light gray on white, yellow on white, light blue on light gray, or any combination where you have to squint to see the pattern.
Tip: Avoid inverting your QR code (light modules on a dark background). While some modern phone cameras can read inverted codes, many older devices cannot. If your audience includes anyone with an older phone, stick with dark-on-light.
3. Add a clear call to action
A QR code with no context is a QR code that does not get scanned. People need a reason to pull out their phone, open their camera, and point it at a square. Printing a QR code by itself and hoping for the best is like putting a doorbell on a building with no sign — technically functional, but nobody knows what happens when they press it.
The fix is simple: add a short line of text near the code that tells people exactly what they will get. "Scan for menu" works at a restaurant. "Scan to save 20%" works on retail signage. "Scan for the full schedule" works at an event. The more specific and valuable the promise, the higher your scan rate.
In testing across industries, QR codes with a clear call to action consistently get two to three times more scans than identical codes with no text. The code itself is just the mechanism. The call to action is what drives the behavior.
4. Use your brand colors
Default black-and-white QR codes work, but they look generic. If your brand has a strong color identity, applying your brand color to the QR code foreground makes it feel like an intentional part of your design rather than an afterthought stuck in the corner.
The key constraint is maintaining enough contrast with the background. If your brand color is a dark blue, dark green, or dark red, you can use it as the foreground color on a white or light background without any readability issues. If your brand color is a light pastel or a bright yellow, use it as an accent rather than the primary foreground color.
Tip: When using brand colors, test the code with your phone camera under three conditions — bright daylight, normal indoor lighting, and dim lighting. If it scans reliably in all three, you are good to print.
5. Add your logo without breaking the code
QR codes have built-in error correction, which means a portion of the code's data is redundant. This is what makes it possible to place a small logo in the center of the code without making it unreadable. The code can lose up to 30% of its modules (at the highest error correction level) and still scan correctly.
The safest approach is to place your logo in a small square at the center of the QR code, covering no more than 10-15% of the total area. Keep the logo simple — a small icon or wordmark works better than a detailed photograph. Make sure the logo has a clean border separating it from the surrounding QR modules so the camera does not confuse logo pixels with code data.
If you are adding a logo, always generate your QR code with high error correction (level H). This gives the code maximum redundancy so it can tolerate the logo covering part of the pattern. Lower error correction levels leave less room for error, and a logo that works fine at level H might break the code entirely at level L.
6. Choose the right dot style
Modern QR code generators let you choose the shape of the individual modules — the small squares that make up the code. The classic look uses sharp squares, but you can also use rounded squares, circles, or other dot styles. The right choice depends on your brand and where the code will appear.
Rounded dots and circular modules give the code a softer, more modern feel. They work well for consumer-facing brands, lifestyle products, and casual contexts like restaurant menus or event posters. Sharp square modules look more technical and precise, which fits well for corporate materials, professional documents, or tech products.
Regardless of which style you choose, make sure the three large finder patterns (the squares in three corners of the code) remain clearly defined. These patterns are how the camera locates and orients the code. If your dot style makes the finder patterns hard to distinguish, the code will be slow to scan or fail entirely.
7. Test on multiple devices before printing
Your QR code might scan perfectly on your iPhone 15 and completely fail on your colleague's older Android phone. Camera apps, autofocus speed, and QR code recognition algorithms vary widely across devices, operating systems, and even phone case materials that might cast shadows on the camera lens.
Before you approve a print run, test your QR code on at least three to four different devices: a recent iPhone, a recent Android phone, and at least one older device from each platform. Scan it from the distance your audience will actually use. Scan it at an angle, because people rarely hold their phone perfectly perpendicular to a poster or sign. Test it in the lighting conditions where it will be displayed.
If you find that the code fails on certain devices, the fix is almost always one of the earlier tips in this list: increase the size, improve the contrast, reduce the logo size, or simplify the dot style. A code that only works on the newest phones is a code that will frustrate a significant portion of your audience.