QR Code Best Practices That Actually Work
6 min readqr-codes, marketing, design
You're standing in a coffee shop. On the pastry case, there's a small square code printed next to a photo of a croissant. You pull out your phone. Point it at the code. Nothing happens. You try again. Still nothing. You give up and ask the barista instead.
This happens thousands of times a day. Not because QR codes don't work — they do. But because someone designed that code without thinking about how people actually use phones.
A QR code isn't just a technical thing you generate and forget. It's a bridge between the physical world and a digital experience. When it's built right, people scan it without thinking twice. When it's not, they don't scan it at all.
Let's look at what separates codes that get scanned from codes that get ignored.
The Size Problem: Bigger Than You Think
Start with the physical dimensions. Most businesses print QR codes too small. A code that's an inch square looks official. It also guarantees fewer scans.
Here's the rule: A QR code should be scannable from the distance at which someone would actually read it. If it's on a billboard 50 feet away, it needs to be the size of a loaf of bread. If it's on a poster at arm's length, it can be the size of a playing card. If it's a business card, it should be at least the size of your pinky nail.
The minimum safe size is about one inch by one inch (2.5 cm) for codes that people will scan from within a foot or two. Anything smaller and older phones, or people with worse eyesight, will struggle.
This isn't about being fancy. It's about removing friction. The moment someone has to try to scan your code is the moment they've already decided not to.
The Contrast Gap: Dark Isn't Enough
Your QR code is a conversation between phone cameras and patterns. The camera needs to see a clear difference between the dark parts and the light parts.
This means:
- Black on white is the gold standard. It's not boring — it works.
- Avoid dark colors on dark backgrounds. Gray code on a dark gray surface? Your phone camera will struggle. So will people.
- Don't rely on just contrast. A code on a red background and a code on a blue background might have the same technical contrast, but one is harder for human eyes and cameras to parse.
- Test on your actual phone camera. Stand back three feet. Point and shoot. Does the code pop out or does it fade into the background?
If you're tempted to make your code blend in with your design, that's a sign the code shouldn't be there at all. A QR code is a functional element. It needs to be visible.
The Content Trap: Where the Link Goes Matters
Generating the code is five minutes. Choosing what happens after someone scans it should take longer.
A QR code pointing to a bare URL is like handing someone a bus ticket without telling them where the bus goes. They might still board — but they'll do it with doubt.
Make the landing page mobile-first. The person who just scanned your code is holding a phone. If your website collapses into a narrow column, or if the text is tiny, or if it takes ten seconds to load, they're leaving. Design the destination before you design the code.
Be specific about what they'll find. If the code links to a menu, say "Menu" under the code. If it links to an event signup, say "Sign up here." People want to know what they're about to experience. A mysterious code feels like a risk.
Use a dynamic QR code if you might change the destination. A static code has a fixed link — once you print it, that's where it goes. A dynamic code lets you change where it points without reprinting anything. If you're putting codes on physical materials that last a while, dynamic codes save money and headaches.
The Placement Puzzle: Location Is Everything
A perfect code in the wrong spot is invisible.
Think about the eye path. Someone glancing at your poster reads from left to right, top to bottom. A QR code at the bottom right works. A QR code squeezed into the margin, half-hidden by your logo? It might as well not exist.
The code should be near the call-to-action. If your poster says "Download our menu," the code should be right there next to it. Don't make people hunt.
Avoid placing it where people's hands will be. If the code is waist-height on a printed flyer, people holding the flyer will cover it. Move it up.
Give it breathing room. Codes are dense information. Surround them with white space so they don't compete with other design elements. This also makes them easier to scan — the phone camera has a clearer view.
The Context Clue: Why Should They Scan?
The code itself tells people nothing. The text around it does.
Instead of "Scan for more," which tells the viewer nothing:
- "Scan to see all five flavors" (specific benefit)
- "Scan to RSVP" (clear action)
- "Scan for a special offer" (incentive, but vague)
Even better: skip the word "scan" entirely. People know how to scan now. Just put the instruction in context. "See our full menu" next to the code. People will figure it out.
The Testing Phase: Before You Print
This step is non-negotiable.
Print a test version at the actual size. Test it with:
- Your phone camera
- A friend's phone (different device, different camera)
- At the distance where it will actually be scanned
- In the lighting condition it will actually be used in
If the code's in a window, test it in daylight. If it's in a dimly lit bar, test it in dim light. A code that scans perfectly on your desk might fail under fluorescent lights or sunlight glare.
Also test the destination. Make sure the link works. Make sure the page loads fast on a phone. Make sure there are no surprises.
The Tracking Option: What Gets Scanned Matters
Once people are scanning your codes, you might want to know which ones. A dynamic QR code with tracking tells you how many people scanned, when they scanned, and what device they used.
This isn't about being creepy. It's about learning what works. If your code on one poster gets ten scans and the code on another poster gets a hundred, that tells you something about placement, or message, or audience. The next campaign gets better because you know.
Making This Stick: The Broader Pattern
Here's what ties all of this together: QR codes work best when they eliminate surprise and friction.
The viewer should:
- See the code without effort
- Know why they should scan it
- Expect something reasonable to happen
- Get a fast, mobile-friendly experience on the other side
This isn't unique to QR codes. It's the rule for any bridge between offline and online. A sign that gives clear directions. A door that opens easily. A question that has an obvious answer.
When you apply this thinking — clarity about the destination, friction-free access, respect for how people actually use things — you stop thinking of QR codes as a trendy marketing tactic. They become a tool that genuinely connects the people in front of you to the information they're looking for.
The next time you print a code, remember the coffee shop. Make it big enough. Make it clear why it matters. Test it in the actual conditions where people will use it. Then watch how many people actually scan it.