A QR code is a two-dimensional pattern of black squares on a white background that stores a string of text, up to roughly 7,089 numeric digits or 4,296 alphanumeric characters at the most forgiving settings, or about 2,953 bytes of binary data. When a phone camera reads the pattern, it converts the squares back into the original string and acts on it: opening a URL, joining a Wi-Fi network, saving a contact, or composing an email. Because the code is just text, every QR code is a self-contained message — there is no central database the scanner has to call, and the code keeps working offline forever once it has been printed. The black squares are not a logo or a fingerprint; they are a literal encoding of the characters you typed, with built-in redundancy so the code still scans when part of it is scratched, dirty, or covered.
This is also why a QR code can carry far more than a link. Anything you can type into a box — a URL, a Wi-Fi password and SSID pair, a vCard contact card, a phone number, a payment link, an email subject and body, a coupon code, a meeting room number — can be encoded into the same square. A scanner responds to the type of content it finds: a URL becomes an "Open in browser" prompt, a Wi-Fi string auto-joins the network on most modern phones, and a vCard offers to save the contact with a single tap. Knowing the available payload types is the difference between a code that sends people to a useful page and a code that forces them to type a long address into their phone by hand.

What You Can Encode in a QR Code
The most common payload is a plain URL, and it is the right choice for posters, business cards, packaging, restaurant menus, and event flyers where the goal is to send someone to a web page. Several other payload types are worth knowing, because the right format removes friction for the person scanning:
| Payload | Typical use | Example text |
|---|---|---|
| URL | Posters, cards, packaging, menus | https://example.com/menu |
| Wi-Fi login | Guest networks, cafés, offices | WIFI:T:WPA;S:CafeWiFi;P:hello;; |
| vCard / MECARD | Business cards, conference badges | BEGIN:VCARD ... END:VCARD |
| Email pre-fill | Contact forms, support links | mailto:[email protected] |
| Phone / SMS | Tap-to-call, tap-to-text | tel:+15551234567 |
| Plain text | Coupons, room numbers, short notes | TABLE-12 |
Each format is plain text, so any free browser-side tool such as the QR Code Generator can encode it without preprocessing. The Wi-Fi and vCard strings look unusual the first time you see them, but they are just text conventions; paste the formatted string into the same box you would use for a URL and the scanner recognises the type automatically.
Choose the Right Error-Correction Level
Every QR code stores redundant copies of its data so it still scans when part of the code is dirty, scratched, folded, or covered. The QR specification defines four recovery levels, and the choice affects how dense the grid looks and how robust the code is in the real world:
| Level | Recovery | When to use it |
|---|---|---|
| L | ~7% | Clean, large prints with no overlay |
| M | ~15% | Default for everyday links and posters |
| Q | ~25% | Curved surfaces, small prints, partial damage |
| H | ~30% | Logo overlay, harsh environments, small stickers |
Higher recovery makes the code more robust but also denser (more squares), so it needs to be printed larger or scanned from closer. Level M is the right default for everyday links and posters; step up to Q or H when the code will be printed very small, wrapped around a curved surface like a bottle, or have a logo placed in the middle — the extra redundancy keeps the code readable even when part of the squares are hidden.
Create a QR Code in Three Steps
The fastest path to a working QR code is a tool that runs entirely in your browser, so the link or login details you paste never leave your device:
- Paste your text into the box — a URL, a formatted Wi-Fi string, a vCard, or any short message. The QR code appears instantly as you type, with no button to press.
- Pick an error-correction level (M for most uses, H if you plan to overlay a logo) and an output size large enough for the place where it will be displayed.
- Click Download PNG to save the code, then print, embed, or share it. The PNG keeps the quiet white border scanners need to lock on.
Because the generation runs as client-side JavaScript, nothing is uploaded to a server. The downloaded PNG encodes your destination directly — there is no tracking redirect to log scans or expire later — and the file will keep working as long as the destination URL stays live. If you need separate codes for product variants, table tents, guest Wi-Fi, and event check-in, the same three-step flow repeats for each one; a guide on how to create multiple QR codes at once for free walks through batching them when the list grows past a handful.
Make the Printed Code Scan Reliably
A QR code that works on your phone may still fail on someone else's, and most scanning problems come down to contrast, size, or placement rather than the code itself.
- Keep a quiet white margin around the code. The generator adds one automatically, but if you crop the PNG or place it on a busy background, leave at least four modules of clear space on every side.
- Print dark on light. Black squares on a white background give the highest contrast and scan the fastest; avoid low-contrast pairs such as yellow on white or pastel on pastel.
- Mind the print size. As a rough rule, the code should be at least 2 cm (about 0.8 in) across for handheld scanning, and noticeably larger if it will be read from across a room.
- Test on more than one phone. Different cameras and scanner apps apply different smoothing and zoom, so a quick test with two or three devices catches problems before a large print run.
- For codes that will carry a logo, choose error-correction level H so the overlay doesn't break the read.
A code that scans cleanly on the first try is the difference between a poster that drives traffic and one that frustrates the people holding it up to their camera.
Why a Browser-Side Generator Protects Your Data
Many free QR sites route the text you paste through their servers, and some generate a redirect link they own rather than encoding your destination directly. That has two costs: the site can log every scan or change where the code points later, and the code can break if the redirect service goes down, starts charging, or simply ages out.
A generator that runs entirely as client-side JavaScript keeps the text on your device, encodes the destination you provided directly into the square, and never inserts a tracking redirect. The downloaded PNG carries your URL, Wi-Fi credentials, or contact card verbatim, so it has no server to expire, no account to lose, and no watermark to crop out. There is also no limit on how many codes you make, which matters when one afternoon produces codes for a product launch, a guest network, a menu, and an event check-in all at once.