The format is 30 years old, invented for a problem that has nothing to do with menus or Wi-Fi passwords.
Denso Wave engineer Masahiro Hara invents the QR code to track automotive parts on Toyota's assembly lines — barcodes could only hold about 20 characters and needed several scans to read a full part number.
The format becomes an ISO/IEC international standard. Denso Wave keeps the patent but chooses never to enforce it for standard QR codes — a decision that let anyone print or scan one for free, and a big reason it spread.
Japanese feature phones ship with built-in QR readers, and the codes start showing up on ads, business cards, and product packaging across Japan.
Smartphone cameras get good enough to read them reliably, then gain native scanning without a separate app — but outside Japan, adoption stays fairly niche for years.
Contactless menus, venue check-ins, and payment links during the pandemic turn QR codes into a global habit almost overnight.
Wi-Fi logins, boarding passes, contact cards, crypto wallet addresses — same 1994 structure underneath all of it.
A QR code doesn't store every kind of content the same way — it picks the most efficient of four modes for what you're encoding, which is part of why a short phone number and a long URL end up looking so different in density.
Digits 0–9 only. The most efficient mode there is.
Digits, capital letters, and a handful of symbols like $ % * + - . / : and space.
Any raw data — URLs, mixed-case text, emoji. Least efficient per character, and what most links use.
Japanese and Chinese characters, packed two bytes at a time.
Those numbers are the ceiling — the largest QR code (Version 40) at the lowest error-correction level. Real capacity drops as you add redundancy or mix modes in one code.
Every colored region below maps to a real structural part of the grid — and to the stats shown above in the generator.
Three identical squares in three corners, so a scanner can locate and orient the code from any angle — including upside down.
Keeps the grid straight when a code is printed on a curved or slightly warped surface. Larger codes get several of these.
The dashed line of alternating dark and light modules that tells the scanner exactly where each row and column starts.
A small strip recording which error-correction level and mask pattern the code uses, so the scanner knows how to read the rest.
Everything else — the actual message, plus the redundancy that makes the code recoverable when part of it is missing.
The blank margin required on every side. Without it, a scanner can't tell where the code starts.
QR codes use Reed–Solomon error correction to rebuild themselves when part of the code is damaged, dirty, or covered by a logo. More redundancy means a more damage-resistant code, but it eats into how much data — or how big a logo — you can fit.
~7% recoverable. Still scans if roughly 1 in 15 modules is unreadable — good when the print stays clean and you want to pack in more data.
~15% recoverable. The default most generators ship with — a reasonable balance for general use.
~25% recoverable. A solid choice once you're adding a small logo or expect some wear.
~30% recoverable. The most damage-resistant level — use it with a full logo overlay or a code that'll live outdoors.
Not every QR code works the same way once it's printed. This one difference explains why some "free" generators ask you to log in — and why some printed codes quietly stop working months later.
A dynamic code never actually contains your link — it contains a short link that belongs to whoever generated it. That's the whole point: it lets them (or you, if you're paying) change the destination later, and track scans. But it also means every printed copy of that code — menus, packaging, storefront decals, thousands of flyers — depends entirely on that provider's server staying online and your account staying active. Free tiers commonly cap monthly scans and put up an upgrade wall once you cross it, or stop honoring the redirect the moment you cancel. Since the code itself was never yours, there's no way to fix it after the fact — only reprint.
Every code this generator produces is static — your link is baked directly into the grid up above, not routed through a server we run. It'll keep working long after any QR generator, including this one, stops existing.
Most failed scans trace back to one of these.
Leave blank space — about 4 modules — on all four sides. A busy background right up to the edge is the most common cause of failed scans.
A scanner reads contrast, not color. Dark modules on a light background scan far more reliably than the reverse.
A logo blocks part of the code. Bump the error-correction level to Q or H so there's enough redundancy to compensate.
Rule of thumb: the code should be at least 1/10th the scanning distance. A code scanned from a meter away needs to be at least 10cm across.
Scan it on a few different phones and lighting conditions before committing to a large print run.
If the destination URL changes later without regenerating the code, old prints point to a dead link — use a redirect you control if the destination might change.
"QR" stands for Quick Response — the entire point was reading it faster than a barcode.
Denso Wave still owns the patent but has never enforced it for standard QR codes. That call is a big reason the format spread so fast.
The three corner squares are deliberately identical and rotation-independent, so a scanner can read a code held sideways or upside down.
A single QR code can hold a Wi-Fi password, a contact card, a calendar invite, or a wallet address — not just a link.
The largest possible QR code, Version 40, can store 7,089 digits in one image.
Yes. There's no paywall, no watermark, and no limit on how many codes you generate. It's free for personal and commercial use.
No. The tool works entirely in your browser with no sign-up, no login, and nothing to remember a password for.
No. It encodes your link or text directly (a "static" QR code), so it works for as long as the destination itself is live — there's no subscription tied to it.
Yes. Upload a PNG logo and it's embedded in the center, with an adjustable colored border and error-correction level so the code still scans reliably.
It controls how much of the code can be damaged, dirty, or covered by a logo and still scan. Low recovers about 7% of the code, High recovers about 30%.
No. The QR code is generated locally in your browser. Nothing you enter is uploaded, logged, or stored.
A static code has your actual link baked directly into the grid. A dynamic code stores a short link owned by the QR provider, which then redirects to your real destination — that's what lets it be edited later, but it also means it depends on the provider's server staying online.
This almost always happens with dynamic codes: if the account behind it lapses, the free-tier scan limit is hit, or the provider shuts down, the redirect breaks or gets reassigned — and every printed copy of that code stops working at once, with no way to fix it short of reprinting.
Static. Your link is encoded directly into the code itself, not routed through a server we run — so it keeps working independently of this site.
Scroll back up and see how redundancy, matrix size, and data density all move when you adjust one setting.