Guide
How to make QR codes that scan reliably
A QR code is a grid of black and white modules that encodes text. Phones read the pattern and act on what's inside: open a link, show a message, start a call. Generating one takes seconds; making one that scans every time, from a poster across a room or a menu in dim light, takes a little thought.
Keep the content short
Every extra character adds modules to the grid, and denser codes need to be printed larger and scanned more carefully. A short link produces a clean, open pattern; a 600-character paragraph produces a dense one. If you're encoding a long web address, consider using a shorter page URL on your own site.
Size and contrast
- Print it at least 2 × 2 cm (about 0.8 inch) for scanning at arm's length. For posters scanned from a distance, a good rule is one-tenth of the scanning distance: 20 cm wide for 2 metres away.
- Keep strong contrast: a dark code on a light background. Light codes on dark backgrounds and low-contrast brand colours fail on many phone cameras.
- Keep the quiet zone, the empty margin around the code. Every download includes the standard four-module margin, so don't crop it off or let text and graphics cover it.
PNG or SVG?
Choose PNG for screens, documents, emails and social media. Choose SVG for anything printed, especially at large sizes: SVG is a vector format, so it stays perfectly sharp on a business card or a banner, and printers and design tools such as Illustrator, Inkscape and Canva handle it well.
Always test before printing
- Scan the downloaded code with at least two different phones, one iPhone and one Android if possible.
- Test it at the actual printed size, not just on your monitor.
- Check that the link opens the right page, including on mobile data rather than Wi-Fi.
- Only then send it to print.
Static codes don't expire
Codes generated here are static: the content is stored in the pattern itself, so they never expire, don't depend on any service staying online, and can't track who scans them. The trade-off is that you can't change the destination after printing, so link to a page you control and can update.