QR Code Generator
Make a QR code that never expires — colors, a logo, PNG or SVG, nothing uploaded.
runs entirely in your browserMore options
https://allthedamn.toolsGenerated on your device. Your links, WiFi passwords, and contacts never leave this page — and because the content is encoded in the pattern itself, these codes never expire.
The code is the content, which is why it cannot expire
A QR code is a picture of your data. The link, the WiFi password, the contact details — whatever you put in — is encoded directly into the pattern of black and white squares, along with enough redundancy to survive a scuff or a smudge across part of the pattern. A phone camera reads the squares and gets your text back. Nothing in that chain involves a server.
That matters because of how most QR sites work. The big ones hand you a short link on their own domain that redirects to your destination, which is what lets them count scans, change the target later, and — on a trial plan — switch the code off when the trial ends. People find that out after the posters are printed. Codes made here are static: your URL is inside the pattern, so there is no middleman to go down, start charging, or expire.
The trade-off is honest and worth stating: because the content is fixed in the image, you cannot repoint a printed code at a new URL later. If you need that, you want a dynamic-code service and the subscription that comes with it. For a WiFi card on a café table, a link on a flyer, or a menu on a table tent, static is the right shape and costs nothing.
Colors and a logo, without breaking the scan
Styling a QR code is where most generators quietly hand you something that does not work. Scanners look for dark squares on a light background, and scanners disagree about the reverse — a striking light-on-dark code is read by some apps and refused by others. Low contrast between the squares and the background fails the same way, just less predictably: it scans on your desk and not in a dim restaurant.
This page checks both as you change colors and says so in a sentence when the pairing is risky, rather than letting you find out from the print run. The preset styles are all verified against the same check, so picking one always passes it. The gradient presets are drawn across the squares themselves, and the contrast test reads whichever of their colors is lightest — the part a scanner has the hardest time with.
A logo works by covering the middle of the code and leaning on the format's built-in error correction to fill in what it hides. Four levels exist, recovering roughly 7%, 15%, 25%, and 30% of the code; with a logo you want the highest, and the page says so when you add one. Test-scan any styled code with an actual phone before you commit it to paper.
WiFi, contacts, and a batch of codes
A WiFi code encodes the network name, the password, and the security type in a specific format phone cameras recognise, so a guest points their camera at the card and gets a 'join this network' prompt instead of typing a password off a chalkboard. The characters that break this format — semicolons, commas, colons, and backslashes in a password — are escaped properly here, which is the difference between a code that joins and one that silently truncates the password at the first semicolon.
A contact code carries a vCard: name, organisation, phone, email, address. The same escaping problem bites harder in vCards, where the address is seven semicolon-separated parts: an unescaped semicolon in a street shifts every following part by one, so the street lands in the town field and the contact imports scrambled. That is handled.
The batch tab takes one line per code and gives you a zip, with each file named after its own content rather than a counter, so a folder of forty codes is still navigable. Names that would collide get numbered instead of overwriting each other.
All of it runs in your browser. The WiFi password you type and the contact details you paste are never sent anywhere — which, for these two payloads in particular, is the whole reason to prefer a page that does the work locally.
fair questions
- Do these QR codes expire?
- No. The content is encoded directly in the pattern, so there is no redirect service in the middle that can expire, change hands, or start charging. There is no account and no time limit. The trade-off is that a printed static code cannot be repointed at a different URL later.
- Can I add a logo to my QR code?
- Yes — open More options and drop an image in. The logo covers the centre of the code, so set error correction to H (about 30% recovery) to give scanners the redundancy they need to read it anyway, and test-scan the result before printing.
- Will a colored QR code still scan?
- It depends on two things: contrast and direction. Codes are defined as dark squares on a light background, and scanners disagree about the reverse — so light-on-dark is read by some apps and refused by others, while low contrast fails in poor light. This page checks both as you pick colors and warns you when a combination is risky; the built-in presets are all verified to pass that check.
- What's the difference between the error correction levels?
- They set how much of the code can be damaged or covered and still be readable: L recovers about 7%, M about 15%, Q about 25%, and H about 30%. Higher levels pack more redundancy in, which makes the pattern denser. Use M for a plain code and H whenever a logo sits on top.
- Can I make a WiFi QR code so guests can join my network?
- Yes — the WiFi tab takes the network name, password, and security type and writes them in the format phone cameras recognise, so scanning it offers to join the network. Punctuation in the password is escaped correctly, and the password never leaves your browser.
- Should I download the PNG or the SVG?
- PNG for screens, email, and anywhere an image is expected. SVG when it will be printed or scaled — it is vector, so it stays sharp at poster size, and print shops generally prefer it. Both come from the same code with the same styling.