Turn a link, a WiFi login, a contact card or any text into a QR code. Every code is read back by a QR decoder before you download it, so you know it scans.
Runs entirely in your browser. Nothing you type or upload is sent to a server.
How a QR code stores your text
A QR code is a square grid of modules, each one dark or light. The three large squares in the corners are finder patterns: they tell a camera where the code is, how big it is and which way up it sits. Everything else carries your data, along with extra error-correction data that lets a reader rebuild parts of the code that are dirty, torn or covered.
Codes come in 40 sizes, called versions. Version 1 is 21 by 21 modules; each version after that adds four modules per side, up to 177 by 177 at version 40. The generator picks the smallest version your text fits in, and the line under the preview tells you which one it used. A short link usually lands around version 3 or 4, which scans easily even when printed small.
Choosing an error correction level
Error correction is a trade between how much a code can hold and how much damage it can survive. Higher levels spend more of the grid on recovery data, so the same text produces a denser code.
| Level | Recovers from | Largest payload | Good for |
|---|---|---|---|
| L | about 7% damage | 2,953 bytes | Screens, clean indoor prints, long text |
| M | about 15% | 2,331 bytes | The sensible default for most uses |
| Q | about 25% | 1,663 bytes | Stickers, packaging, anything handled |
| H | about 30% | 1,273 bytes | Outdoor signs, and any code with a logo |
A logo works by deliberately damaging the code and letting error correction fill in the gap. That is why this tool locks the level to H as soon as you add one.
What you can put in a QR code
A QR code only ever holds text. What a phone does with it depends on how that text starts, and the shortcuts button writes these formats for you:
- Links beginning with
https://open in the browser. - WiFi uses
WIFI:S:network;T:WPA;P:password;;. Semicolons, commas, colons, quotes and backslashes in a network name or password have to be escaped with a backslash, or phones read a truncated password. The shortcut does that escaping. - Contacts use the vCard format, which phones offer to save to the address book.
- Text messages, calls and email use
SMSTO:,tel:andmailto:, which open a prefilled message or the dialer. Nothing is sent until the person scanning taps send.
Making a code that scans the first time
Most failures happen after the code leaves the screen. Before printing a batch, check these:
- Contrast. Use a dark code on a light background. Many readers do not try inverted codes at all, and pastel colors that look fine on a monitor can vanish under warm indoor light.
- The white border. The quiet zone around the code is part of it. Do not crop it off or place the code against a busy photo. A transparent download keeps the border clear rather than white, so put it on a plain light background.
- Size versus density. More text means smaller modules at the same printed size. If a code must be small, shorten what it holds.
- Format. Print from the SVG download. A PNG scaled up by a print shop gets blurry edges; an SVG stays sharp at any size.
- Test on a real phone. The scan check here confirms the image decodes. A quick scan of the printed proof confirms the paper, ink and lighting do too.
There is more on diagnosing a code that will not read in Why your QR code won't scan.
Static codes, and why that matters
Many QR sites make dynamic codes: the code points at their short link, which redirects to yours. That lets them count scans, and it also means the code stops working if the subscription lapses or the company closes. The codes made here are static. The text is in the pattern itself and nothing sits in between to count scans. If the code holds a link, the site it opens still sees the visit, as it would a click.

