5 Design Tips for Scannable QR Codes
Essential design principles to ensure your beautiful QR codes actually work when people try to scan them.


5 Design Tips for Scannable QR Codes
You know what's worse than an ugly QR code? A beautiful QR code that doesn't work.
I've seen this play out so many times—someone spends hours getting their QR code to look perfect, matches their brand colors perfectly, gets it printed on fancy cardstock, and then... nobody can scan it. The design was great. The functionality? Not so much.
Here's what I've learned about keeping QR codes both good-looking and actually usable.
Contrast isn't negotiable
This is where most people trip up. You can't just pick any two colors that look nice together and expect a phone camera to read them.
I once helped a friend with QR codes for their wedding invitations. They wanted light pink on cream because it matched the aesthetic. Looked gorgeous. Scanned approximately never. We ended up going with a darker rose color that still fit the vibe but actually had enough contrast to work.
Phone cameras need clear visual separation between the QR code modules and the background. If you squint at your design and the pattern doesn't pop out clearly, it won't scan reliably. Some phones might get it in perfect lighting, but you want it to work for everyone, including that person scanning with an older Android in a dimly lit room.
The WCAG contrast ratio guidelines (4.5:1 minimum) are a good starting point, but honestly? Higher is better. Aim for 7:1 if you can. Use an online contrast checker—they're free and will save you from a lot of headaches.
Make it big enough (seriously)
The second most common mistake is making QR codes too small. I get it—you want to fit more content on your flyer or business card. But if people can't scan your QR code, what's the point of having it there?
For anything printed, 2cm x 2cm is the absolute minimum. I usually go bigger because "technically scannable" isn't the same as "easily scannable." Business cards can get away with 1.5cm if you're really tight on space, but that's pushing it.
There's this rough guideline that for every meter of scanning distance, you need about 10cm of QR code size. So if you're putting a QR code on a poster that people will scan from a few feet away, it needs to be substantial. I've seen event posters with tiny QR codes at the bottom and wondered who they thought was going to scan those.
For screens, don't go below 200x200 pixels. More is better. Remember that people are usually holding their phones at arm's length when scanning.
That white border isn't optional
The empty space around your QR code—the "quiet zone"—isn't just for aesthetics. It's how scanning software figures out where your code begins and ends.
You need at least four modules worth of space (a module is one of those small squares that make up the QR code) on all four sides. And it needs to be the same color as your background, or at least a solid color that doesn't interfere.
I see people put text right up against their QR codes all the time. Or they crop them too tightly to save space. Or they put them on busy backgrounds. All of these things make scanning harder or impossible.
When in doubt, give it more breathing room. Your QR code will scan faster and more reliably, which is what actually matters.
If you're adding a logo, be careful
Logos in QR codes look professional and help with branding. But they're also where people get overly ambitious and break things.
QR codes have error correction built in—they can lose up to 30% of their data and still function. That's what lets you put a logo in the center. But that 30% is a maximum, not a target. I usually keep logos to about 20-25% of the total area, just to have some margin for error.
Also, logo placement matters. Center is safest because that's where the error correction works best. And make sure there's some visual separation—a white border around your logo helps it not interfere with the QR code pattern underneath.
I've seen people try to integrate their logo in creative ways, like having it blend into the QR code modules or placing multiple small logos around the edges. Creative? Sure. Reliable? Not really. Stick with the center, keep it reasonably sized, and you'll be fine.
Test it on actual devices
This is the step people skip, and it's the most important one.
You can't just test on your own iPhone 14 Pro and call it done. Try it on an older Android phone. Try it on someone's phone with a cracked camera lens. Try it in different lighting—bright sunlight, dim indoor lighting, fluorescent office lights.
If you're printing the QR code, test the actual printed version. I've had QR codes that looked perfect on screen but didn't scan well when printed because the printer introduced subtle color shifts that reduced contrast.
Things that should make you worry during testing: if it takes more than a couple seconds to scan, if you need multiple attempts, if you have to hold your phone at a weird angle, if it only works in good lighting. These are all signs that something needs adjustment.
Try the built-in camera app and also try dedicated QR scanner apps. Some apps are more forgiving than others, but you want it to work with the native camera since that's what most people will use.
A few more things I've learned
Rounded corners on the modules usually work fine. Dots and circles can work too, but they're slightly less reliable. The more you deviate from standard squares, the more you need to test.
Gradients can look cool but they often cause problems. Some parts of the gradient might not have enough contrast, or different phones might interpret the colors differently. Solid colors are safer.
And while we're talking about colors—think about colorblind users. Red-green combinations are particularly problematic. When possible, use colors that differ in brightness, not just hue.
When things go wrong
If your QR code won't scan, here's the usual culprits:
Won't focus or won't detect? Probably too small. Make it bigger.
Takes forever to scan? Contrast issue. Increase the difference between your foreground and background colors.
Only works at certain angles or in perfect lighting? Check your quiet zone. Make sure there's enough margin around the code.
Scans inconsistently? If you have a logo, it might be too large or covering critical parts of the code. Try making it smaller or bumping up the error correction level.
The real takeaway
Design matters. Aesthetics matter. But functionality comes first, always.
Start with a QR code that scans perfectly every time. Then style it up while continuously testing to make sure it still works. Don't do it the other way around—it's way harder to fix scanning issues after you've committed to a design.
And please, actually test your QR codes before you print 10,000 copies of them. Your future self will thank you.
Try designing one yourself and see how real-time preview makes testing so much easier.