Introduction
QR codes went from niche to everywhere almost overnight. Restaurant menus, product packaging, business cards, event tickets, billboard ads , they're on all of it. Generating one takes thirty seconds. Generating one that actually works well in your specific context, scans reliably, and doesn't look like an afterthought takes a bit more thought. This guide covers everything.
What Can You Actually Put in a QR Code?
Almost any short piece of data:
- Website URLs , the most common use; instantly opens a page in the user's browser
- Plain text , displays a message directly on screen after scanning
- Email addresses , opens a compose window pre-addressed
- Phone numbers , prompts a call
- SMS messages , opens a pre-filled text message
- vCard contacts , saves your contact details directly to the user's phone
- Wi-Fi credentials , lets guests join a network without typing a password
- App store links , directs iOS or Android users to your app listing
- Payment links , for contactless payment via PayPal, Venmo, and similar platforms
One thing to remember: if you're encoding a URL, make sure it's live before you print the code. There's no editing a QR code once it's on a business card.
Error Correction: The Most Important Setting Nobody Reads
Error correction determines how much of the code can be damaged, dirty, or obscured while still scanning. There are four levels:
- L (Low) , 7% recovery , the smallest, densest code; only for pristine digital use
- M (Medium) , 15% recovery , a good default for most digital applications
- Q (Quartile) , 25% recovery , recommended for printed materials that may get worn
- H (High) , 30% recovery , required if you're adding a logo overlay to the center of the code
For print , on packaging, stickers, flyers, or anything physical , use Q or H. The code will look denser, but modern smartphone cameras scan it instantly regardless.
Custom Colors and Branded QR Codes
QR codes don't have to be black on white. You can customize the foreground and background to match your brand. A few things to keep in mind:
- Contrast is non-negotiable , the foreground must be significantly darker than the background. Low-contrast codes often fail to scan.
- Dark on light , scanners expect a dark pattern on a light background. Inverted codes can confuse older scanners.
- Avoid gradients on the modules , per-module gradients can confuse scanner algorithms.
- Always test before printing , scan your customized code on multiple devices before committing to a print run.
A branded QR code with your company's primary color looks intentional and professional. It also measurably increases scan rates compared to a generic black-and-white code.
Which File Format Should You Download?
The format matters more than most people realize:
- SVG , best for print. It's a vector format that scales infinitely without any quality loss. Use it for business cards, posters, packaging, and signage at any size.
- PNG , best for digital. Websites, email templates, social posts, presentations. PNG supports transparency, so it sits cleanly over colored backgrounds.
- JPEG , acceptable for digital use, but JPEG compression can degrade the edges of the code and make it harder to scan. Use PNG if you have the choice.
When in doubt, download both , SVG for print, PNG for digital.
Do QR Codes Expire?
Static QR codes , the kind you generate with a free tool , never expire on their own. The encoded data is permanent. However, the code is only as useful as its destination:
- If the URL you encoded goes offline, the code appears broken
- If the URL redirects somewhere and the redirect changes, the behavior changes
- If you encoded a phone number or email that later changes, the code becomes incorrect
Dynamic QR codes (offered by paid services) use a redirect URL that you can update without changing the physical code , useful for marketing campaigns or seasonal content.
Conclusion
A well-made QR code is one of the cleanest bridges between physical and digital that exists in modern design. Get the settings right, test it on a few devices, download in the right format, and you're done. The thirty seconds you spend on it will serve you for as long as the code is in use.