Make a QR code that never expires

Free QR codes that never expire. No tracking.

How it works

  1. Pick what the code does
  2. Fill in the details
  3. Download PNG or SVG

Static vs dynamic QR codes

A static QR code stores your content in the pattern itself. The link, the Wi-Fi login or the contact card is written into the squares, so the code needs no server, no account and no subscription, and it keeps working for as long as the printed or saved image can be read. That is what this tool makes. The trade-off is that a static code cannot be edited after you print it, and nobody can count how many times it was scanned. A dynamic code is different: it holds a short web address that sends the scanner on to your real page, which lets a service change the destination and count visits, but the code stops working if that service stops. This tool does not make dynamic codes and has no scan counts. If something changes, such as a new Wi-Fi password or a new web address, make a new code and replace the old one.

Error correction and logos

A QR code carries extra data so that it can still be read when part of it is dirty, scratched or covered. You choose how much: level L can recover about 7% of the code, M about 15%, Q about 25% and H about 30%. More correction means more squares, so the same text makes a denser code at a higher level, and a very long text may not fit at all. When that happens the tool says so and keeps your last working code dimmed instead of showing a broken picture. Shorten the text or lower the level. A logo in the centre covers part of the code, so when you add one the tool raises the level to H and tells you. Your own choice is kept and returns when you remove the logo. The logo is drawn on a plate in the background colour and is limited to 22% of the code width. The file is read on this device and is never uploaded or saved. Scan the result with a phone before you print it.

Wi-Fi, UPI and contact codes

A Wi-Fi code is the text WIFI:T:WPA;S:name;P:password;; with the security type, the network name and the password. The characters backslash, semicolon, comma, colon and double quote are escaped with a backslash so a name such as Cafe;5G survives. Choose No password for an open network and the password part is left out. Tick Hidden network if the name is not broadcast. The password sits in the code as readable text, so anyone who scans it can read it. The UPI (India) type is not checked against an official NPCI document, so scan it with your own payment app and make a small test payment before you print it. A UPI code is a upi://pay link with the payee ID (name@bank), the payee name, an optional amount written with two decimals, and the currency INR. The tool checks the shape of the ID but cannot check that it exists, so look at the name your payment app shows when you scan, before you pay. The contact code is a vCard 3.0 card with name, organisation, title, phone, email and website. Email, phone and SMS codes open a new message or a call, and what happens next depends on the phone.

Choosing colours that scan

Scanners look for dark squares on a light background. The tool measures the contrast between your two colours with the WCAG formula, which gives a ratio from 1 to 21, where black on white is 21. Below 4 it warns that some scanners may fail, and it also warns when the code is lighter than its background, because many scanners cannot read a light code on a dark background. You can still download the code after a warning. Keep the margin, the quiet zone of empty squares around the code, at 4 modules or more. A margin of 0 is allowed, but scanners work best with space around the code. Size runs from 256 to 2048 pixels and the tool draws every square a whole number of pixels wide, so the edges stay sharp. A PNG has a fixed number of pixels. An SVG has none, so it prints sharply at any size, and the SVG file contains only the squares, two colours and your logo picture, never your text.

Frequently asked questions

Do these codes expire?

No. Each code is static: your content is written into the pattern as text, with no server behind it and nothing to renew. A PNG or SVG you saved today scans as long as the image stays readable.

Is anything tracked?

No scan is tracked, because a static code has no server to report to. The page counts visits with Google Analytics, sending only the tool name and that a code was made. What you type, such as a link, a Wi-Fi password or a UPI ID, stays in this tab and is never in the page address.

What is error correction?

Extra data inside the code that lets a scanner rebuild squares it cannot read. Level L recovers about 7%, M about 15%, Q about 25% and H about 30%. M is the default. Higher levels make a denser code, so a long text may only fit at L or M.

Can I add a logo?

Yes. Choose a PNG, JPG, WebP or SVG of up to 2 MB and it is placed in the centre, from 10% to 22% of the code width, on a plate in your background colour. The level is raised to H for it. The picture is read in your browser and is not uploaded or saved.

How do I share my Wi-Fi with a QR code?

Pick Wi-Fi, type the network name and the password, choose the security type your router uses and download the PNG. A phone that scans it can offer to join the network. The password is stored in the code as plain text, so print it only where you are happy for people to read it.

Why does it say there is too much text?

A QR code holds a limited amount of data, and less of it at a higher error-correction level. A 5,000-character text does not fit at any level. Shorten the text, or lower the level from H to M or L, and the code comes back.

Which file should I download, PNG or SVG?

Use the PNG for a document, a slide or a web page, where a fixed size such as 1024 by 1024 pixels is enough. Use the SVG for a poster or a sticker that will be printed large, because it has no fixed pixel size and stays sharp.