How QR Codes Work — and How to Use Them Well
QR codes are everywhere now, but most are made badly. Here's how they actually work, the static-vs-dynamic decision that trips everyone up, how to design one that always scans, and how to track scans for free.
A few years ago QR codes felt like a technology that had quietly failed. Today they're on restaurant tables, product packaging, event tickets, payment counters and business cards — a genuinely useful bridge between something physical and something on a phone. The scanning finally works because every modern phone camera reads them natively, with no app to install.
But here's the thing: most QR codes in the wild are made badly. They point to desktop pages that are painful on mobile, they're printed too small to scan, they lock the owner into a subscription they didn't understand they were signing up for, or they simply lead nowhere because nobody tested them. Almost all of that is avoidable once you understand how the codes actually work.
This guide covers what a QR code really is, the one distinction that matters most before you make one, what you can put inside a code, how to design one that scans reliably, and a free way to measure how many people actually use it.
What a QR code actually is
A QR ("Quick Response") code is a two-dimensional barcode — a grid of black and white squares that encodes data both horizontally and vertically, which is why it holds far more than the old single-line barcodes on grocery items. Those little squares in three corners are finding patterns: they tell a scanner where the code is and how it's rotated, so you can scan it upside down or at an angle and it still works.
The genuinely clever part is error correction. QR codes deliberately store the data more than once, using a mathematical scheme (Reed-Solomon) that lets a scanner reconstruct the full message even when part of the code is dirty, torn, or covered. Depending on the level chosen when the code is generated, anywhere from about 7% to 30% of the code can be damaged and it will still resolve. That redundancy is exactly why you can drop a logo into the middle of a QR code and it still scans — the scanner treats the logo as "damage" it can recover from.
When your phone camera sees the pattern, it decodes the squares back into the original data — usually a web address, but it can be much more.
Static versus dynamic: the decision that trips everyone up
This is the single most important thing to understand before you make a QR code, and most guides skip it. There are two fundamentally different kinds.
A static QR code has the data baked directly into the pattern. If it encodes a URL, that URL literally is the code. It's permanent, works forever, needs no service behind it, and is completely free. The trade-off: you can't change where it points after it's printed, and it can't, by itself, tell you how many people scanned it.
A dynamic QR code encodes a short redirect URL owned by a QR service. That short link forwards to your real destination. Because the service sits in the middle, you can change the destination later and count every scan — but you're now dependent on that provider, the code usually stops working if you stop paying, and the redirect adds a company between your user and your content.
| Static QR code | Dynamic QR code | |
|---|---|---|
| Destination baked in | Yes — permanent | No — a redirect you can edit |
| Editable after printing | No | Yes |
| Built-in scan analytics | No | Yes |
| Needs a service / subscription | No | Usually yes |
| Keeps working long-term | Always | Only while the provider does |
| Cost | Free | Often paid |
What you can put inside a QR code
Most people only ever encode a web link, but a QR code can hold several kinds of data, and phones know how to act on each one.
| Data type | What happens when scanned |
|---|---|
| Website URL | Opens the link in the browser (by far the most common use) |
| Plain text | Displays the text on screen |
| WiFi network | Offers to join the network — no typing the password |
| Contact card (vCard) | Offers to save the contact's details |
| Opens a pre-addressed email, optionally with subject and body | |
| Phone number | Prompts to call the number |
| SMS | Opens a pre-filled text message |
| Payment (e.g. UPI) | Opens the payment app with details filled in |
The WiFi and vCard types are underused and genuinely handy — a WiFi code taped by the door of a café or guest room saves everyone the ritual of squinting at a password, and a vCard on a business card drops your details straight into someone's phone.
How to make one
Creating a static QR code takes seconds and shouldn't cost anything or require an account. Enter your link or text, and the code is generated in your browser and ready to download as an image you can print or embed.
Try it right here
QR Code Generator
The code regenerates live as you type20 characters · 1 words
Type something above and your QR code appears here instantly.
The QR Code Generator above builds a static code from any text or URL and lets you download it as a PNG — no sign-up, no expiry, and nothing sent to a server. If your link contains special characters or spaces, run it through the URL Encoder / Decoder first so it encodes cleanly.
Designing a QR code that actually scans
A QR code is only useful if it scans on the first try, in the real world, on someone else's phone. A few practical rules make the difference between reliable and useless:
- Keep strong contrast. Dark code on a light background is safest. Light-on-dark can work but is riskier, and low-contrast colour combinations are the most common reason a code won't scan.
- Respect the quiet zone. QR codes need a margin of empty space around them (about four squares wide). Crowding the code with text or graphics right up to its edge breaks scanning.
- Size it for the scan distance. A rough rule is a 10:1 ratio — the code should be roughly one tenth as wide as the distance people scan from. A code on a table can be small; one on a poster across a room needs to be big. As a floor, avoid printing smaller than about 2 cm wide.
- Don't over-stylise. Rounded dots, gradients, and a centre logo are fine in moderation thanks to error correction — but every visual flourish eats into that error-correction budget. Test heavily if you customise.
- Point it somewhere mobile-friendly. The person scanning is, by definition, on a phone. If the destination is a slow or desktop-only page, you've wasted the scan. (Compressing the images on that page helps — see our guide on compressing images for the web.)
- Always test before printing at scale. Scan the final artwork with more than one phone — both an iPhone and an Android — before you order a thousand flyers.
Tracking scans without paying for a dynamic code
Here's the trick that makes static codes far more powerful than people realise. You don't need a paid dynamic-QR service to know how many people scanned your code — you need the same UTM parameters you'd use for any other link.
Encode a URL that already carries UTM tags, for example a link with utm_source=flyer and utm_medium=qr. Every scan then lands on your site as identifiable campaign traffic, and it shows up in your normal analytics right next to your email and social numbers — for free, with a permanent static code, and no third party in the middle.
Build the tagged link with the UTM Builder, then paste that finished URL into the QR generator. Our full guide to UTM parameters explains how to name the tags so the data stays clean. This one combination — a free static QR code pointing to a UTM-tagged URL — covers what most people wrongly assume requires a subscription.
Common mistakes to avoid
- Printing the code too small. The most frequent failure. When in doubt, make it bigger.
- No context or call to action. A bare code gives people no reason to scan. "Scan for the menu" or "Scan to join our WiFi" dramatically lifts scan rates.
- Locking into a dynamic service unknowingly. Many "free QR generator" sites quietly create dynamic codes that expire or demand payment later. If longevity matters, confirm you're getting a static code.
- Skipping the test scan. A code that looked fine on screen can fail once printed, laminated, or lit poorly. Always test the physical result.
- Linking to a non-mobile page. Everyone scanning is on a phone; the destination has to be built for one.
Frequently asked questions
The bottom line
QR codes are a small technology that rewards a little understanding. The mechanics — a 2D grid with finding patterns and generous error correction — explain both why they're so robust and why design choices like contrast and quiet zones matter. And the one decision that trips most people up, static versus dynamic, usually resolves in favour of the free, permanent static code once you know you can still track it with UTM tags.
So keep it simple: make a static code with the QR Code Generator, point it at a mobile-friendly page tagged with the UTM Builder, give people a clear reason to scan, and test the printed result before it goes live. Do that and your codes will land in the small minority that actually work well — all with free tools that run entirely in your browser.
Hands on
Tools mentioned in this article
More guides
Keep reading

What is JSON and how to format it correctly
A practical guide to JSON syntax, the mistakes that break it, and how a formatter turns a wall of text into something you can actually debug.

How to calculate EMI on any loan
The EMI formula explained in plain terms, a worked example, and what actually happens to your money over the life of a loan.

Password best practices in 2026
Why length beats complexity, how passphrases work, and a realistic system for managing passwords without losing your mind.
Put it into practice
Every guide comes with free tools to match.
No signup, no uploads — everything runs in your browser.