QR codes are one of the elements most often added to print without much thought: a black square in the corner of a brochure, a sticker on a shop door, a tiny code on packaging. When nobody scans it, the conclusion is that “people don’t use QR codes”. In reality, modern phones read codes straight from the camera with no app at all. The problem is usually execution: a code that’s too small, washed-out colours, no reason to scan, or a landing page that’s slow and broken on mobile.
This guide covers what you need to turn a QR code from decoration into a measurable marketing channel: choosing size and colour, why the white margin matters, when to raise error correction, static versus dynamic codes, and how to know — in numbers — how many people scanned.
How a QR code works, briefly
A QR code is a grid of small squares called modules. It carries your data (a URL, in our case) plus extra data for error correction. The three large squares in the corners are finder patterns that help the camera work out the code’s orientation and size quickly, even at an angle. The longer the URL, the more modules the code needs and the denser it gets — and a dense code needs to be printed larger to scan easily.
Rule one: size by scanning distance
The most common mistake is shrinking the code to fit the layout. A widely used rule of thumb: make the code about one tenth of the distance it will be scanned from. A business card scanned from 20–30 cm needs 2–3 cm. A shop-window poster scanned from two metres needs around 20 cm. And on a roadside billboard seen from far away, a QR code is a weak choice anyway — drivers won’t scan it.
| Placement | Typical scanning distance | Suggested minimum width |
|---|---|---|
| Business card or thank-you card | 20–30 cm | 2–3 cm |
| Table menu or product packaging | 30–40 cm | 3–4 cm |
| In-store poster | 1 m | 10 cm |
| Window sticker or roll-up banner | 2 m | 20 cm |
The longer the link, the larger you should go. That’s why a short, clean landing-page URL beats a long one full of parameters when you have the choice.
Colour and contrast: dark on light
You can colour a QR code in your brand colour, with two conditions: strong contrast between code and background, and a code darker than its background. Many scanner apps expect dark modules on a light background, and inverted codes (white on black) can fail in some of them. Navy, dark green, dark brown and burnt orange work well on white or cream. Light grey or yellow on white is a reliable way to fail.
Our QR code generator calculates the contrast ratio between your two colours and warns you if it’s too low or inverted — before you print a thousand copies.
Never place the code over a photo or gradient. Always put it on a flat single-colour area and leave clear space around it.
The quiet zone: empty space is part of the code
The international QR standard requires an empty margin around the code at least four modules wide. It isn’t wasted space — the camera uses it to tell where the code starts and ends. When a designer pushes the code against an edge or nearby text, scanning slows down and can fail entirely. The generator keeps this margin in both PNG and SVG files, so don’t crop it when placing the code in your layout.
Error correction: when to raise it
Every code carries backup data so it can still be read if part of it is damaged. There are four levels: Low (L), Medium (M), Quartile (Q) and High (H). Higher levels survive scratches and rough printing better but make the code denser for the same URL.
- M: right for most digital uses and clean print.
- Q: for packaging and stickers that may rub or bend.
- H: if you’ll put a small logo in the middle, or print on a rough surface.
Static or dynamic?
A static code holds your URL directly. It passes through no third-party service, never expires and never stops because a subscription lapsed. Its only drawback: you can’t change the destination after printing.
A dynamic code holds a short link on a third-party service that redirects visitors to your destination, so you can change it later and see scan statistics in that service’s dashboard. But it ties your print to that company: if the service shuts down or the subscription ends, every printed code stops working.
The approach we prefer for most businesses: a static code pointing to a page you own, such as a landing page on your site. To change the offer later, change the page — not the code. Measurement comes from UTM links, as below, without depending on anyone.
How to measure scans
First build the URL with our UTM builder using values like utm_source=brochure, utm_medium=qr and your campaign name, then turn that URL into a QR code. Every visit from the code shows up in Google Analytics under the brochure and campaign. If the same offer appears in different places, use a different utm_content for each (Al Arid branch, Al Rabie branch, packaging) to see which location performs best.
Why would anyone scan it?
A code alone doesn’t motivate anyone. Put a clear, specific reason next to it: “Scan to book a wash in one minute”, “Scan to watch how to use it”, “Scan for 10% off your next order”. The text next to the code matters more than the code itself. And make sure the page it opens:
- Loads fast on mobile, on an average data connection.
- Delivers the promise written next to the code immediately — not a generic home page.
- Has one clear next step: book, buy or contact on WhatsApp.
Print files: SVG first
For printers, use SVG — it’s vector and stays sharp at any size. For digital designs and presentations, a 1024 or 2048 px PNG is enough. Don’t save the code as a heavily compressed JPG, which adds noise around the edges. Before the final run, print a test at real size and try it with several phones (iPhone and Android) in ordinary, not perfect, light.
A word on security
Scams that paste fake QR codes over real ones in public places, sending people to fake payment pages, have become more common. To protect your customers, print the code directly on the material rather than on removable stickers when possible, make it lead to your known domain, and check the codes in your branches regularly.
Frequently asked questions
Do QR codes expire?
A static code never expires as long as its URL works. A dynamic code stops if the redirect service stops.
Can I put a logo inside the code?
Yes, if it’s small (under roughly a fifth of the code’s area) and you use error-correction level H — then test scanning thoroughly before printing.
What’s the difference between a QR code and a regular barcode?
A linear barcode holds a short number read by store scanners, while a QR code holds URLs and longer text and is read directly by a phone camera.
Do codes with rounded dots scan well?
Yes, as long as contrast and the quiet zone are kept. We tested every module and eye style in our generator with a simulated tilted, noisy phone photo, and all of them decoded. Still, always test your final code.
A good QR code is small in the layout but big in impact: it links print to digital and makes it measurable for the first time. Create yours for free with our QR code generator in the colours and size you need — and if you’re planning a print campaign with full measurement, get in touch.
