QR Code Generator
Generate QR codes for URLs, plain text, WiFi credentials, email addresses, and phone numbers. Customize size, colors, and error correction.
Your QR code will appear here
TL;DR
This generator creates static QR codes — the data is baked into the pattern and never changes, so they never expire and need no account. Pick error-correction level M (15%) for most screen and print uses; bump to H (30%) only if you add a logo or expect the print to get scuffed. Keep your URLs short so the pattern stays open and easy to scan, and print at least 2 × 2 cm (0.8 in)for arm's-length scanning. The size and capacity tables below give the exact numbers.
Static vs dynamic QR codes — which one this tool makes
Every QR code you generate here is static: the destination is encoded directly into the black-and-white modules. Scan it and you get exactly the URL or text you typed — no middleman, no redirect, no tracking server. That has real consequences worth understanding before you print 5,000 flyers.
| Static (this tool) | Dynamic (paid services) | |
|---|---|---|
| Editable after printing | No — fixed forever | Yes — change the target anytime |
| Expires | Never | Often, if subscription lapses |
| Scan analytics | None (fully private) | Yes — counts, location, device |
| Pattern density | Depends on data length | Always tiny (short redirect URL) |
| Cost | Free, no account | Monthly subscription |
| Works if vendor shuts down | Always | No — link dies with the service |
Rule of thumb: use a static code when the destination is permanent (a homepage, a WiFi password, a phone number) or privacy matters. Use a dynamic code only when you genuinely need to redirect the same printed code to different places over time, or need scan analytics — and accept the recurring cost and the risk that the link dies if you stop paying.
Error-correction levels: how much damage each survives
QR codes use Reed–Solomon error correction, the same maths that lets a scratched CD still play. A portion of every code is redundant data, so a scanner can rebuild the message even when part of the pattern is missing. You choose how much redundancy to spend. More recovery means a denser, busier pattern for the same content — that is the tradeoff.
| Level | Recovers up to | Best for |
|---|---|---|
| L — Low | ~7% | Clean digital displays, screens, apps; longest data on the smallest code |
| M — Medium | ~15% | The default. Most print and on-screen use; good balance of size and resilience |
| Q — Quartile | ~25% | Outdoor, industrial, or grubby environments where the code may get dirty |
| H — High | ~30% | Codes with a logo in the centre, or harsh conditions (the logo "eats" the redundancy) |
The percentages are of the total codewords, not the visible area. Why logos work: at level H you can cover the centre with an image up to roughly the recovery margin and the rest of the pattern still reconstructs the data. Go too big and you cross the threshold — the code stops scanning entirely, with no warning. Always test a logo-stamped code on more than one phone before printing.
Minimum print size and scan distance
The single most common reason a printed QR code fails is that it was printed too small for the distance people scan it from. The widely used field guideline is a 10:1 distance-to-size ratio — for every 10 units of scanning distance, the code needs to be at least 1 unit wide. A billboard scanned from 20 metres needs a code about 2 metres across.
| Where it's used | Scan distance | Minimum code size |
|---|---|---|
| Business card, product label | ~10 cm (4 in) | 2 × 2 cm (0.8 in) |
| Flyer, menu, brochure | ~30 cm (12 in) | 3 × 3 cm (1.2 in) |
| Poster, table tent | ~1 m (3 ft) | 10 × 10 cm (4 in) |
| Shop window, A-board | ~3 m (10 ft) | 30 × 30 cm (12 in) |
| Billboard, banner | ~20 m (65 ft) | 2 × 2 m (6.5 ft) |
Two extra rules that matter as much as size: keep a quiet zone— a blank margin of at least 4 modules (roughly 10% of the code's width) on all sides — and keep strong contrast, ideally dark code on a light background. Inverted (light-on-dark) codes scan unreliably on many phones. For print, export at the largest size the tool offers and let your design software scale it down; never scale a small PNG up, which blurs the module edges.
How much data fits, and why short URLs scan better
A QR code's maximum capacity depends on the data type and the error-correction level. These are the theoretical maximums for the largest QR version (40) at level L. In practice you should never get close to these — the more data you pack in, the denser the pattern and the harder it is for a phone to scan, especially when printed small.
| Data type | Max capacity (version 40, level L) | Example |
|---|---|---|
| Numeric | 7,089 digits | Long account or tracking numbers |
| Alphanumeric | 4,296 characters | Uppercase letters, digits, a few symbols |
| Binary / Latin-1 (URLs, text) | 2,953 bytes | A typical web URL or short message |
| Kanji / Kana | 1,817 characters | Japanese text |
Note that URLs are encoded in byte mode, which is less efficient than alphanumeric — and mixed-case letters, lowercase paths, and query strings all force byte mode. A 60-character URL produces a comfortably open pattern; a 600-character URL with tracking parameters produces a dense one that struggles on small prints. Shorten links and strip unnecessary utm_ parameters before generating, and your codes will scan faster and from farther away.
Frequently asked questions
Do QR codes expire?
Static QR codes — the kind this tool makes — never expire, because the data lives inside the pattern, not on a server. A QR code only "expires" when it is a dynamic code from a paid service and either the subscription lapses or the destination URL goes dead. If you want a code that works forever with no ongoing cost, encode the final destination directly, which is exactly what happens here.
Which error-correction level should I choose?
Use M (15%) for almost everything — it is the default for a reason. Choose H (30%) only when you place a logo in the centre or expect physical wear (outdoor signage, stickers on machinery). Level L (7%) is worth it only when you must cram a long URL onto the smallest possible code on a clean screen. Higher levels make the pattern denser, so do not over-insure a simple screen code.
What is the smallest size I can print a QR code?
For scanning at arm's length (around 10 cm / 4 inches), keep the code at least 2 × 2 cm (0.8 inch). Below about 1.5 cm, many phone cameras can no longer resolve the individual modules, especially with a longer URL. Always follow the 10:1 rule: minimum code width equals one-tenth of the expected scanning distance. When in doubt, print bigger and add a clear margin around it.
Why won't my QR code scan?
The usual culprits, in order: it is printed too small for the distance; there is no quiet zone (blank margin) around it; the contrast is too low or the colours are inverted (light code on dark background); the PNG was scaled up and the edges blurred; or the URL is so long the pattern is too dense. Fix the margin and size first — those solve most failures. Test on at least two different phones before committing to a print run.
Can I add a logo to the centre of a QR code?
Yes, but generate the code at error-correction level H first, then overlay the logo in a design tool. The logo can cover the central area up to roughly the recovery margin, because the surrounding modules rebuild the data. Keep the logo under about 30% of the code area and leave the three corner finder patterns fully visible. Anything larger risks crossing the recovery threshold, after which the code silently stops scanning — so always test the final image.
Are these QR codes tracked, and is my data private?
No tracking at all. These codes are generated entirely in your browser and contain only the data you type — there is no redirect server and no analytics, unlike dynamic codes from marketing platforms. Whatever you encode (a WiFi password, a private URL) never leaves your device during generation. If you need scan counts you would have to use a dynamic service, accepting that it can track and store every scan.