QR Code Generator
Links, Wi-Fi, email, phone. The code carries your data directly — nothing redirects through us, so it keeps working long after you have forgotten this page.
Runs on your device — nothing you type is sent anywhereMedium — up to 15% of the code can be dirty, torn or covered and it still reads.
The blank border is part of the specification, not decoration. Below about four modules some readers stop finding the code at all.
What this code actually contains
A QR code is a way of drawing a piece of text. This is the text, exactly as a scanner reads it — useful for comparing against a code from somewhere else when one works and the other does not.
A single QR code holds around 1,800 characters at most, and fewer at higher error correction. Long text belongs on a page with the link in the code.
How it works
Three steps, no account, and nothing you type leaves your computer.
Choose what it should do
Open a link, join a Wi-Fi network, start an email or dial a number. Each one writes the right format into the code for you.
Set it up
Error correction, size, border and colours. The preview updates as you go, and the tool warns you when a colour pair will not scan.
Download
PNG for screens and quick use, SVG for anything being printed at a size you do not know yet.
What people put in a QR code
Wi-Fi for guests
A card on the fridge or the counter that joins the network without anybody reading a password out loud. Phones handle this natively.
A menu, a price list, a form
On a table, a poster or a window, pointing at a page you control and can change without reprinting anything.
Contact details on printed material
A card, a flyer or a van that dials a number or opens an email rather than asking somebody to type it in.
A link too long to say out loud
Anything with a tracking parameter or a long path is easier scanned than dictated.
The QR code that still works in ten years
Most free QR generators online produce a code that does not contain your link. It contains theirs. Scanning it goes to their server, which looks up where you wanted to send people and forwards them on.
Why that matters more than it sounds
Redirection is sold as a feature, usually called a "dynamic" code, and it genuinely allows one useful thing: changing the destination after the code is printed. It also creates three problems that nobody mentions on the way in.
The code dies when the service does. If that company shuts down, changes its pricing, or simply lets a domain lapse, every code ever printed stops working. Not degrades — stops. There is no way to fix a sticker already on ten thousand products.
It usually expires anyway. Free tiers frequently cap scans or expire after a trial, and the code that worked at the launch event is dead by the time the posters are up.
Every scan is logged by a third party. Who scanned, when, roughly where, on what device. That data is the actual business model.
A code made here contains your URL, your network name, your phone number. There is no lookup, no service in the middle and nothing to expire, because after the image is downloaded this page has no further part in it. The trade is real and worth stating: you cannot change where it points afterwards. If that matters, point the code at a page you control and change what is on that page — which gets you the flexibility without handing anybody a switch to your printed material.
Error correction, and the room it buys
Every QR code carries redundancy, so it can be read while partly damaged. The level you choose decides how much:
| Level | Recoverable | Use it for |
|---|---|---|
| Low | 7% | Clean screens, where the code is never touched |
| Medium | 15% | Almost everything — the sensible default |
| High | 25% | Print that gets handled, outdoors, small sizes |
| Highest | 30% | Anything with a logo over the middle, or rough conditions |
Higher correction means more modules for the same data, so the code looks denser and needs to be printed larger to stay readable. Medium is right unless you have a reason.
The white border is not decoration
The blank margin around a QR code — the "quiet zone" — is part of the specification. It is how a reader finds where the code begins. The standard asks for four modules, and codes cropped tight to the edge are one of the most common reasons a scan fails on an otherwise perfect image.
If you are placing a code on a busy background, keep that border and keep it in a plain colour. It is not wasted space.
Colours: contrast, and which way round
Two rules, and the second surprises people.
The first is contrast: readers need a clear difference between the code and its background. Pale grey on white fails in poor light even when it looks fine on your screen.
The second is direction. Dark code on a light background reads reliably; light code on dark does not, because many readers assume the darker modules are the data. Inverted codes work on some phones and fail on others, which is the worst possible outcome — it looks fine when you test it and fails for a quarter of your audience. This tool warns you when the colours are inverted or too close, rather than letting you find out from a printed run.
PNG or SVG
PNG is an image of a fixed size: right for a screen, an email, a slide, or anything printed small at a size you already know.
SVG describes the squares mathematically, so it is sharp at any size at all — a business card or the side of a building, from the same file. If the code is going to a printer, send the SVG. It is also far smaller, and it is the format a designer will ask for.
Wi-Fi codes, and the detail most tools get wrong
A Wi-Fi QR code is a small text format listing the network name, the security type and the password. Phones read it natively and join without anybody typing anything.
The detail worth knowing: characters like ; , : " and \ have to be escaped inside that format. A password containing a semicolon, encoded by a tool that skips this, produces a code that scans perfectly and then fails to connect — which is almost impossible to debug from the outside. This one escapes them.
What happens after somebody scans a Wi-Fi code
This is the part that surprises people, so it is worth setting out. A QR code is text and nothing else. It carries the network name, the security type and the password, and hands them to the phone. It cannot open an app, cannot change a setting, and cannot make anything connect — no QR code can, whatever it contains. Everything after the scan is the phone’s decision.
On an iPhone the camera shows a banner. Tapping it asks Join network?, and confirming saves the network and starts trying to associate — while staying in the camera. It does not jump to Settings. There is no way to make it, and a code that claimed to would be lying about what a code can do. Android behaves the same way from its own scanner.
So the join happens quietly in the background and can take a few seconds. If the phone is on a working mobile connection it is in no hurry about it. The status bar switching from 5G to the Wi-Fi symbol is what tells you it finished.
How to tell whether the code actually worked
There is a clean test, and it is worth knowing because the symptom of success looks a lot like the symptom of failure.
Open Settings, find the network in the list, and tap it. If it connects without asking you for the password, the code worked. The phone only has that password because the code gave it, so a password-free join is proof the whole thing went through. What did not happen was the automatic association, which is a separate matter and usually only means the phone had not got round to it.
If it does ask for the password, then the code genuinely failed, and there are three usual reasons:
| Reason | What to do |
|---|---|
| The network does not broadcast its name | Tick Hidden network. Without it the phone has nothing to look for. |
| The password has a semicolon, comma, colon, quote or backslash in it | Nothing — this escapes them. It is the most common reason a code from somewhere else scans perfectly and then fails to connect. |
| It is an open network but the code says WPA | Set Security to Open network. A password field on a network with no password fails. |
One thing worth knowing about the 2.4 and 5 GHz bands: if your router publishes them as two separate names, the code carries whichever one you typed. A phone standing somewhere with weak 5 GHz coverage may sit on mobile data rather than take it, which looks like the code failing when it is really the radio choosing.
Nothing you type is sent anywhere
The encoder runs in your browser. Your link, your network password and your phone number are turned into an image on your own machine and never transmitted.
Wi-Fi codes make that concrete: generating one elsewhere means typing your home or office password into somebody else's website. Here it goes into an image and nowhere else.
Common questions
How do I make a QR code?
Choose what the code should do — open a link, join a Wi-Fi network, start an email, dial a number or carry plain text — and each one writes the right format for you. Set the size, border and colours, with the preview updating as you go and a warning if a colour pair will not scan. Download PNG for screens, or SVG for anything going to a printer at a size you do not know yet. The code carries your data directly, so there is no redirect and nothing to expire.
Does the code expire, or stop working?
No. It contains your data directly, so there is nothing to expire and no service in the middle that could disappear. Codes from services that offer "dynamic" QR go through their servers, which means they stop working if that company does.
Can I change where it points after printing?
Not in the code itself — that is the trade for it never expiring. The usual answer is to point the code at a page you control and change what is on that page, which gives you the flexibility without handing a third party a switch to your printed material.
Is my data sent anywhere?
No. The encoder runs in your browser and the image is produced on your own machine. That matters most for Wi-Fi codes, where the alternative is typing your network password into somebody else’s website.
Which error correction level should I use?
Medium unless you have a reason. Use High or Highest for anything printed that gets handled, used outdoors, or has a logo over the middle. Higher levels make the code denser, so it needs printing larger.
Why does my code not scan?
Three usual causes: the white border was cropped away, the colours are too close together, or the code is light on a dark background. That last one works on some phones and fails on others, which is why this tool warns about it rather than letting a print run find out.
Should I download PNG or SVG?
PNG for screens and for print at a size you already know. SVG for anything going to a printer or a designer — it stays sharp at any size, from a business card to a billboard, and the file is much smaller.
I scanned my Wi-Fi code and nothing happened. Did it work?
Probably yes. Open Settings and tap the network: if it connects without asking for the password, the code worked — the phone only has that password because the code gave it. The camera staying open is normal, and no QR code can send a phone to its settings or force it to connect. The association happens quietly and can take a few seconds, especially if the phone is happy on mobile data.
I scanned a text code and it searched Google for my text. Is that right?
That is the scanner deciding, and yes, it is normal. A link says https: and a phone knows to open it; a phone number says tel: and it knows to dial. Plain text says nothing, so each scanner falls back to whatever it thinks is useful — an iPhone camera runs a web search, Android usually shows the text with a button to copy it.
There is no way to make a code say "just display this". If people are meant to read something, put it on a page and encode the link: that is the only way to control what appears when they scan.
My email code opens Apple Mail, not Gmail. Can it open Gmail instead?
Not from the code, and it should not. An email code holds a mailto: address, which every phone hands to whichever mail app is set as the default — on an iPhone that is Apple Mail until you change it. Settings, then Gmail, then Default Mail App does it, on iOS 14 and later.
Worth knowing why the code does not simply point at Gmail: the person scanning it is usually not you. A code on a card or a window is read by strangers on their own phones, and a Gmail link would drag somebody who uses Outlook into a Gmail sign-in. mailto: respects whatever each person already uses, which is the behaviour you want on anything printed.
Can the code connect the phone automatically?
It can offer to, and the phone decides. A QR code is text: it hands over the network name, the security type and the password, and everything after that belongs to the operating system. Nothing in a code can open an app or change a setting.
How much text fits in one code?
Around 1,800 characters at the practical limit, and considerably fewer at higher error correction. Long text makes a dense code that scans badly, so beyond a sentence or two it is better to host the text and encode the link.
More generators
Every one of them runs on your device. No uploads, no accounts.
Password Generator
Strong passwords and passphrases, made on your machine and never transmitted anywhere.
Invoice Generator
Fill in the details, download the PDF. No sign-up wall between you and the invoice.
Crop Image
Drag a frame over the picture, freehand or locked to a shape. Nothing is uploaded.