URL to QR Code Generator
Paste a link and get a QR code you can download as a PNG or an SVG. The address is encoded straight into the pattern, so the code keeps working for as long as your page does.
Your data never leaves your browser. This tool runs entirely on your device.
Static codes and the expiry trap
There are two kinds of QR code in circulation, and the difference only becomes obvious once one of them stops working.
A static code contains your URL itself. Scanning it sends the phone straight to your site, with nothing in between. A dynamic code contains a link to the generator’s own redirect service, which then forwards to your destination — which is how those services offer scan analytics and editable destinations, and also how a code on ten thousand printed flyers becomes a dead link when the subscription lapses.
This generator only makes static codes. The trade-off is real and worth stating plainly: you cannot change where the code points after printing it, and you get no scan statistics. In exchange, nothing you do not control sits between the scan and your site.
Keep the URL short
The number of characters decides how dense the grid is. A short address produces large, forgiving modules; a long one with tracking parameters attached produces a fine mesh that a phone has to be held closer and steadier to read.
If your link carries a long UTM string, consider putting the campaign on a short landing path instead. It is the single most effective thing you can do to make a printed code scan on the first try.
https://example.com/menu → 25 modules per side https://example.com/menu?utm_source=flyer&utm_medium=print&utm_campaign=spring-2026 → 57
Printing a code that actually scans
Most unscannable QR codes fail for one of three reasons, and all three are avoidable before the file goes to print.
The quiet zone is the first: a QR code needs a clear margin of about four modules on every side, and a design that crops tight to the black edge breaks the scan. The download here keeps that margin, so place the image as it is rather than trimming it.
- Print at 2 cm square or larger for a code held in the hand, and roughly a tenth of the reading distance for anything scanned from further away — a code read from 2 m needs about 20 cm.
- Download the SVG for anything printed. It is resolution-independent, so it stays sharp at poster size; the PNG is fixed at the pixel size you chose.
- Keep it dark-on-light. Scanners look for dark modules on a light background, and inverting that stops many phone cameras cold.
- Do not stretch it. A QR code is square, and a non-uniform scale distorts the finder patterns the scanner uses to orient itself.
What the error-correction level changes
Every QR code carries redundant data so it still reads when part of it is dirty, torn or covered. The level sets how much: L recovers about 7% of the symbol, M about 15%, Q about 25% and H about 30%.
That redundancy is not free — it takes up space in the same symbol, so a higher level means either fewer characters or a denser grid of smaller modules. Denser modules are harder for a cheap camera to resolve, which is why cranking it to H is not automatically safer.
L ≈ 7% M ≈ 15% Q ≈ 25% H ≈ 30%
- On a screen, or on paper that will stay clean: L or M.
- On a sticker, a label, a window or anything that gets handled or weathered: Q or H.
- If you overlay a logo in the centre, use H — the logo is damage as far as the scanner is concerned, and must cover no more than about 30% of the code.
Frequently asked questions
Do I need to include https:// in the address?
No. If you leave the scheme off, https:// is added for you, because a code containing a bare hostname does not reliably open anything when scanned. It is worth encoding https rather than http even if your site redirects: the redirect costs an extra round trip on a phone connection, and a printed code outlives the redirect rule.
Can I change where the code points after printing it?
Not with a static code — the destination is part of the pattern. If you need that, point the code at a URL you control, such as a short path on your own domain, and change the redirect at your end. That keeps the editability without handing the redirect to a third party who can withdraw it.
PNG or SVG — which should I download?
SVG for anything printed or resized: it is made of shapes rather than pixels, so it stays perfectly sharp from a business card to a poster. PNG for the web, for email signatures and for anything that has to be dropped into software that will not accept vector files.
Does this QR code expire?
No, and it cannot. The data is encoded directly into the pattern, so the code is self-contained — there is no account, no short link and no server of ours involved once you have downloaded the image. Many free generators instead encode a link to their own redirect service, which is what makes those codes stop working when a trial ends or the service shuts down.
Can you see what I encode, or track scans?
No. The code is generated by JavaScript running in your own browser, and what you type is never sent anywhere. That also means there is nothing to count: because the code contains your data rather than a redirect through us, scans do not pass through any server we control and cannot be tracked.
Is the QR code free to use commercially?
Yes. QR Code is a registered trademark of Denso Wave, but the specification is open and Denso Wave does not require a licence or a royalty to generate or use the codes. Put them on packaging, menus, business cards or advertising without asking anyone.
Related tools
- Wi-Fi QR CodeGenerate a QR code that joins your network in one scan, so guests never have to type a 24-character password off the back of a router. Nothing you enter leaves this page.
- vCard QR CodeEncode your contact details as a QR code that adds you to someone’s address book in one scan — the standard way to make a business card work after the exchange.
- Text to QR CodeTurn plain text into a QR code — a note, a serial number, a licence key, a message. Scanning it shows the text itself rather than opening anything.
- URL EncoderPercent-encode text so it can travel safely in a URL. Encode a single query value, or fix only the illegal characters in a complete address.