Cookies for analytics and advertising
We use cookies for analytics and advertising, both sent to Google. Refusing changes nothing you can see.Read the privacy page
Type or paste a link and the QR code appears as you type. Download it as a PNG for a slide or an SVG for a printer. The important part is what is not here: no redirect through our domain, no account, no expiry. The code carries your address directly, which means it keeps working whatever happens to this site.
Where it runs
Nothing is uploaded, because there is no file — it is worked out in this page.
No queue, no account
It answers as fast as your machine can, and it never asks who you are.
As often as you like
Nothing is counted and nothing is capped — answering again costs us nothing.
Most free QR generators give you a code that points at their own domain, which then redirects to yours. That is how they offer scan counts and editable destinations, and it is a service — but it means your poster depends on somebody else staying in business, staying paid, and not deciding that your link now needs an interstitial.
This one encodes your URL into the modules directly. There is no server in the path, nothing to expire, no plan to lapse. The trade-off is honest and worth stating: you get no analytics and you cannot change the destination after printing. If you need either, you want a redirect service, and you should pick one deliberately rather than get one by accident.
A QR code carries Reed–Solomon error correction, and the level decides how much of the symbol can be destroyed while remaining readable: L recovers 7 per cent, M 15, Q 25 and H 30. The correction is not free — it takes space, so a higher level makes the code denser for the same data, and past a point forces a larger version.
On a screen, nothing damages the code and L or M is right. On anything printed and handled — a sticker on a machine, a label on a crate, a menu that gets wiped down — H is right, because the damage is real and the extra density costs nothing you care about. The one case people get wrong is a small code with H on glossy paper: dense modules plus a reflection is worse than a sparser code with M.
Every code drawn here sits inside a four-module white margin, called the quiet zone, and the specification requires it. The decoder finds the symbol by hunting for the three finder squares against clear background; without the margin it cannot tell where the code ends.
This is the single most common reason a printed code fails while the same code on screen works. A designer crops to the black edge, or drops the code onto a coloured panel, and the result scans on the design mock-up — where there is whitespace around it — and not on the printed piece. It is not offered as an option here, because an option to remove it is an option to produce something broken.
QR has four encoding modes, and the alphanumeric one covers digits, uppercase letters and nine punctuation marks at 5.5 bits per character. Byte mode, which is what anything with a lowercase letter falls back to, costs 8. So `HTTPS://EXAMPLE.COM/MENU` encodes materially smaller than the same address in lowercase — often a whole version smaller, which is a visibly coarser and easier-to-scan code.
It works because the scheme and host of a URL are case-insensitive. The path is not: `/Menu` and `/menu` are different resources on most servers, so this only pays off where the path is already uppercase or absent. It is a genuine trick rather than a folk remedy, and it is the reason so many printed campaign URLs are shouty.
The ceiling is version 40 at level L: 4,296 alphanumeric characters, or 2,953 bytes. That sounds generous and is not, in practice — a code holding two thousand characters has modules so fine that a phone camera cannot resolve them at any sensible print size.
The useful limit is set by the camera, not the specification. A code printed at three centimetres wants to stay under roughly a hundred characters; a poster-sized one can carry more. If you are encoding a long payload, the right answer is almost always a short URL that points at the payload, rather than a denser code — the code is a way of typing a link, not a storage medium.
The SVG is vector: it has no resolution, it scales to any size without softening, and it is what a print shop wants. It is also a few kilobytes, and it can be recoloured or placed in a layout without ever being re-generated.
The PNG is drawn at 1024 pixels, which is larger than most people need and small enough not to matter — a two-colour image with hard edges compresses to almost nothing. It exists because half the places a QR code goes will not take an SVG: a slide deck, a chat message, a word processor. If the code is going to a printer and you have the choice, take the SVG.
This page draws black on white, which is what every scanner is calibrated for. Inverting it — light modules on a dark background — fails on a meaningful share of older readers, because the standard defines dark as data and only some decoders try both polarities.
Logos in the middle work because of the error correction, not in spite of it: the covered modules are the damage that level H is budgeted for. That is why logo overlays and H go together, and why a logo on an L code is a coin flip. Keep the covered area under about a fifth of the symbol, keep it central and away from the three finder squares, and test it with an actual phone rather than the preview in the design tool.
A QR code is a way of typing something without typing it. It is not authentication, it is not encryption, and it carries no proof of who made it. Anyone can print a sticker with a different code and put it over yours, which is exactly what has happened to parking meters and restaurant tables in several countries.
The practical consequence for whoever is scanning: the destination is worth looking at before it loads, and a phone that shows the URL before opening it is doing the one useful safety check available. The practical consequence for whoever is printing: a code on a public surface should point somewhere that does not immediately ask for a payment or a password, because a visitor cannot tell your sticker from someone else’s.
The encoder runs in this page. Your link, your text, whatever you paste, is turned into modules by JavaScript in your tab, and no request carries it anywhere. The network panel is the way to check that rather than believe it.
It matters more than it does on most pages of this kind, because the thing being encoded is frequently not public yet: a campaign URL before launch, an internal tool, a document link with a token in it. A generator that renders on a server has seen every one of those and has them in its request log, whatever its privacy page says.
No. Your URL is encoded into the pattern itself, so there is nothing to expire and no service in the path. The trade-off is that you cannot change the destination afterwards and you get no scan statistics — for those you need a redirect service, chosen deliberately.
M for anything on a screen. H for anything printed and handled — stickers, labels, menus — because it survives 30 per cent damage. H also makes the code denser, so on a very small printed code M can actually scan better.
Yes, and use level H if you do: the covered modules are exactly the damage that error correction is there to absorb. Keep the logo under about a fifth of the area, keep it away from the three corner squares, and test with a real phone.
It is the quiet zone, four modules wide, and the specification requires it. Decoders find the symbol against clear background; a code cropped to its black edge is the most common reason a printed code fails when the same code worked on screen.
SVG for anything going to a printer — it is vector, so it scales to any size. PNG for slides, chat and word processors, which mostly will not take an SVG. The PNG here is 1024 pixels, which is larger than most uses need.