Free tools
Make a code for a link, a Wi-Fi network, an email, or a contact card. Drop your logo in the middle, style it in your own colours, and download it print-ready. No account, no watermark, no expiry date, and nothing you type ever leaves your browser.
Scanning it opens the page. A missing https:// is filled in for you.
Plain text, shown to whoever scans it. Nothing opens and nothing is looked up.
Scanning it offers to join the network. The password is written into the code in plain text, so treat the printed code as you would the password itself. It is assembled here in your browser and never sent anywhere.
Scanning it opens a new email, already filled in. Nothing is sent until they send it.
Scanning it offers to call. Include the country code so it works away from home.
Scanning it opens a text message ready to send.
Scanning it offers to save the contact. This is the code for a business card, and it works with no app and no account on either side.
Medium error correction at 1024 px handles almost any print job. The guide below explains when each of these is worth changing.
Dropped into the middle of the code on a patch of your background colour, with error correction raised to cover what it hides. Your file is read by this page and never uploaded.
Preview
Add a link or any text above and your QR code appears here.
SVG is the one to hand a designer or a printer: it stays sharp at any size, from a business card to a billboard.
Printing this on something you cannot reprint? Point it at a short link first, so you can change the destination later without touching the code.
A QR code is your text written out in black and white squares, called modules. The three large squares in the corners tell a camera where the code is and which way up it sits; the rest is data plus a block of redundancy. Nothing about it is a link to a service somewhere, which is why a code works offline, forever, and cannot be switched off by whoever generated it.
The more you encode, the more modules are needed, and the denser the pattern gets. A short URL of twenty characters produces a code a phone reads instantly from across a room. The same URL with a tracking query string bolted on can double the module count and turn a poster code into something people have to walk up to.
A phone reads squares and nothing else. Everything a scan then does, opening a page, joining a network, saving a contact, comes from the format of the text hidden in those squares, which is a convention camera apps have agreed to recognise:
WIFI: string holding the network name, the password,
and the security type. It contains the password in the clear, so a printed Wi-Fi code is
exactly as private as the wall it hangs on.
mailto:, tel:, and SMSTO:, the same links a web page would use.Anything encoding more than a short URL benefits from being shortened first. A vCard or a long tagged link produces a dense code; the same information behind a short link produces a sparse one that scans from twice the distance.
A logo works because of the redundancy described below, not in spite of it. The middle of a code carries no positioning information, so covering it costs you data the error correction can rebuild. Keep the logo to roughly a fifth of the code's width, leave a small margin of background colour around it rather than laying it straight onto the squares, and use level H. Never cover any of the three corner squares: those are how a camera locates and orients the code, and no amount of error correction replaces them.
QR codes carry a copy of their own data spread through the pattern, so a code can be partly obscured and still read. That is why a logo can sit in the middle of one. The four levels trade resilience against density:
Higher is not automatically better. Level H on a small print area produces a dense code that needs to be printed larger to stay readable, so you can lose more than you gain.
Size it from the scanning distance. The working rule is one to ten: a code read from 30cm wants to be around 3cm across, one read from two metres wants around 20cm. Under 2cm is unreliable no matter what.
Leave the quiet zone alone. The empty margin around the code is part of the code. Crowd it with a border or a caption and scanners lose the edges. Four modules of clear space is the standard, and this tool keeps it by default.
Keep it dark on light. Cameras look for a dark pattern on a light ground. Inverting that, or picking two brand colours of similar weight, is a common reason a beautifully designed code fails in the wild. If you colour a code, keep it dark and keep the background pale.
Mind the surface. Gloss throws reflections straight back into the lens, and anything printed across a fold or a curve distorts the grid. Both are worth a test print rather than an assumption.
A static code, the kind this tool makes, has the destination baked into the pattern. It is free, permanent, and unchangeable. A dynamic code encodes a short link instead, so the squares stay identical while the destination behind them can be changed whenever you like.
That difference only matters once the code leaves your control. Five thousand printed flyers, a sticker on packaging, an engraved plaque: with a static code, a typo in the URL or a page that moves means the whole run is waste. Encode a branded short link instead and the fix takes seconds. It also means you can count scans, which a static code can never do, since nothing about it reports back.
If the code is going on something physical, tag its destination so the traffic shows up as its own
source in your analytics rather than as unattributed direct visits. Set the medium to
qr and name the placement in the source, like poster-lisbon or
packaging-insert. Our UTM builder
will assemble the tagged URL, and it is worth doing before you generate the code, not after:
adding parameters later changes the pattern.
Scan the finished code with a phone that is not yours, ideally an older one, from the distance people will really stand at, in the light the code will really live in. A code that reads on your desk under a lamp at 5cm tells you very little about a code on a wall in daylight.
The code itself never expires. The pattern is just the destination written in squares, so a printed code keeps working for as long as the page it points to exists. What expires is the destination: move that page and every code you printed is dead, with no way to fix it short of reprinting. Generators that charge a monthly fee to keep your code "alive" are charging for the redirect in the middle, not for the code.
Not with a static code like the ones this tool makes, because the destination is encoded in the pattern itself. The way around it is to encode a short link instead of the final URL, then repoint the short link whenever you need to. The printed squares never change; where they lead does.
Yes, and this tool does it in your browser. It works because a QR code carries a copy of its own data spread across the pattern, so covering part of the middle loses nothing that cannot be reconstructed. Three rules keep it readable: keep the logo to about a fifth of the width, and use error correction level H, which is set for you the moment you add one. Never cover a corner square, since those are how a camera finds the code in the first place.
Pick the Wi-Fi tab, enter the network name and password, and choose the security type, which is WPA for almost every modern router. Scanning the result offers to join the network with no typing. Worth knowing: the password is written into the pattern as plain text, so anyone who can photograph the code can read it. Print it for a guest network, not for the one your card reader is on.
Roughly a tenth of the distance you expect people to scan from. A code read at arm's length, say 30cm, wants to be about 3cm across; one on a wall people stand two metres from wants 20cm. Below about 2cm most codes stop being reliable whatever the distance, and longer destinations need more room because they pack in more squares.
Medium is the right default. Error correction is redundancy: at level L about 7% of the code can be damaged and still read, rising to 30% at level H, but the extra redundancy makes the pattern denser so it has to be printed larger. Use Q or H for anything that will be scuffed, curved, or printed on packaging, and L only when space is genuinely tight.
Free for anything, including commercial work, with no watermark and no limit on how many you make. It tracks nothing, because it cannot: the code is generated by your own browser and whatever you type is never sent to us. That also means the codes carry no scan counting. Measuring scans requires a link that reports back, which is what GoGoLink QR codes are being built to do.
GoGoLink is adding QR codes you can restyle, redirect, and count scans on, long after the poster has gone to print. Short links are live today. Free to start, no credit card required.