QR Code Generator

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.


Approximate. The code is drawn at a whole number of pixels per module, and the border and label add to the image size.

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.

LevelRecovers fromLargest payloadGood for
Labout 7% damage2,953 bytesScreens, clean indoor prints, long text
Mabout 15%2,331 bytesThe sensible default for most uses
Qabout 25%1,663 bytesStickers, packaging, anything handled
Habout 30%1,273 bytesOutdoor 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: and mailto:, 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.

Frequently Asked Questions

What is a QR code?
A QR (Quick Response) code is a two-dimensional barcode that stores text in a grid of black and white squares called modules. Phones read it with the camera and act on what it says: open a link, join a WiFi network, save a contact, or start a text message.
Do I need an app to scan a QR code?
No. The built-in camera app on iPhone (iOS 11 and later) and on most Android phones recognizes QR codes automatically. Point the camera at the code and tap the banner that appears.
Do these QR codes expire?
No. The codes made here are static: the text is stored in the pattern itself, so the image works forever and no service sits in between counting scans. If the code holds a link, it keeps working only as long as that web page does, and that site sees each visit the way it sees any other. Codes that expire are dynamic codes, which point at a redirect service that can be switched off.
Can I put a logo in the middle of a QR code?
Yes. Upload one in the Logo field. The tool switches to error correction H, which can rebuild about 30% of a damaged code, keeps the logo to roughly a fifth of the code's width, and then test-scans the result. If the scan check fails, use a smaller or simpler logo.
What size should a printed QR code be?
For something scanned at arm's length, at least 2 cm (0.8 in) across, and larger if the code holds a lot of text. A common rule of thumb is that a code scans from up to about ten times its own width away. For print, download the SVG, which stays sharp at any size.
Why won't my QR code scan?
The usual causes are low contrast (a light code color, or a light code on a dark background), a missing white border, a code too dense for its printed size, a logo covering too much, or glare from glossy material. This generator always includes the border (left clear on a transparent download, so put that on a light background), and its scan check catches low contrast and an oversized logo before you print. It cannot know how small you will print the code or what material it goes on, so scan a printed proof with a phone.
How much text can a QR code hold?
Up to 2,953 bytes at error correction L, 2,331 at M, 1,663 at Q and 1,273 at H. Plain English letters take one byte each; accented letters take two and most emoji take four. The more you store, the denser and harder to scan the code becomes, so short links scan best.
Is it safe to put my WiFi password in a QR code?
The code is generated in your browser and never uploaded. But the password is stored in the image as plain text, so anyone who can scan or photograph the code can read it. Put WiFi codes where you would be comfortable writing the password on the wall.
The Internet Omni-Tool