Make a QR code that stays yours

Type a link, a message or a Wi-Fi password and get a free QR code as PNG or SVG. No account, no expiry, no tracking redirect, and nothing is uploaded.

Options

Anything at all — a URL, a phone number, a note. Shorter contents make a code that scans from further away.

PNG to paste into a document. SVG for print, where it stays sharp at any size.

How much damage the code survives. Anything left over is spent on this automatically.

px

Only affects the PNG. Eight pixels per square is comfortable on screen; use more for print.

Results appear here. Nothing is uploaded.

    How it works

    The text is encoded in byte mode as UTF-8, split into blocks, and each block gets Reed-Solomon error-correction codewords computed over the field GF(256) with the polynomial the specification names. The blocks are then interleaved, so a blot damages a few codewords of every block rather than destroying one entirely, and placed by snaking through the grid around the finder, timing and alignment patterns. All eight masks are drawn and scored, and the one with the fewest scanner-confusing patterns wins.

    What to watch out for

    A QR code is not private, it is just small

    Anything encoded here can be read by anyone who photographs the image, because that is exactly what a QR code is for. Putting a Wi-Fi password or a private link in one is fine and normal; printing it on something visible from the street is not. The privacy this tool offers is that the content never reaches a server, not that the code keeps a secret.

    More content makes a code that is harder to scan

    Every extra character adds modules, and more modules in the same printed area means smaller squares. A short link scans across a room; a whole paragraph needs the phone held close and steady. Where a code will be read from a distance, encode a short link rather than the text itself.

    The quiet margin is part of the code

    The blank border is not decoration. Scanners use it to find where the symbol ends, and a code cropped tight to its edges or pasted onto a busy background frequently will not read at all. That margin is built into the file, so do not trim it when placing the image.

    This will never expire, because there is nothing to expire

    Many generators encode a link to their own domain that redirects to yours, which lets them count scans and, in some cases, stop working when a trial ends. The code from this page contains your content directly. Nobody can revoke it, meter it or see who scanned it, and equally nobody can change where it points once it is printed.

    Limits

    Files up to about 1 MB work reliably. Beyond that, the ceiling is your device's memory rather than any rule we impose — the work happens on your own machine. Tested in Chrome 140, Firefox 143, Safari 18.

    The thing most QR generators do not tell you

    A large share of free QR generators do not put your link in the code. They put their link in the code, pointing at their own domain, which then redirects to yours.

    That is not always sinister — it is how scan analytics work. But it has two consequences worth knowing before you print a thousand flyers. Every scan passes through a company you have no contract with. And if that company goes away, changes its terms or ends your trial, every code you have printed stops working.

    The code from this page contains your content and nothing else. There is no redirect, no tracking, no account, and no way for anyone — including this site — to switch it off. Once it is printed it works forever, and nobody learns who scanned it.

    The trade is exactly what you would expect: you cannot count the scans either.

    Error correction, and why more is usually better

    A QR code carries redundant data so it can be read when part of it is dirty, creased, faded or covered. Four levels are defined, recovering roughly 7%, 15%, 25% and 30% of the symbol.

    Stronger correction needs more modules, so at a fixed printed size the squares get smaller. That sounds like a straight trade, but it is not, because versions come in fixed steps: quite often the stronger level fits in exactly the same grid as the weaker one, for free.

    So whatever you pick, this tool quietly upgrades to the strongest level that fits at the same size. Choosing Low for a short link gets you Highest anyway, because there was room.

    Use Highest deliberately when the code goes somewhere physical — a label, a window, a piece of equipment, a printed menu that will be handled.

    PNG or SVG

    PNG is a grid of pixels. It is right for a website, a slide, an email, a document — anywhere the code is displayed at roughly the size you made it.

    SVG describes the squares as shapes, so it stays perfectly sharp whether printed on a business card or a two-metre banner. If the code is going to a printer, use SVG. The file is also far smaller.

    What people usually encode

    A link, most often. Also: a phone number as tel:+441234567890, an email as mailto:someone@example.com, or a Wi-Fi network in the form WIFI:T:WPA;S:NetworkName;P:ThePassword;; — which most phones offer to join directly when they see it.

    Plain text works too, and is read out as text rather than opened.

    Nothing is uploaded

    The encoder is written out in full and runs in your browser. That was a deliberate choice rather than a convenience: what people put in QR codes is regularly a Wi-Fi password, a payment link or an address, and none of that should travel to a server or through a third-party package to become a picture of some squares.

    Your files never leave your browser. Last updated 2026-08-02.