QR Code Generator
Make a QR code for a link, a Wi-Fi network, a contact card, a WhatsApp chat or a calendar event, and download it as a PNG or a sharp SVG.
Codes are drawn on your device. Wi-Fi passwords and phone numbers never leave it
Codes that keep working
Your code is drawn in your browser by an encoder written for this site, and it carries your content directly. Nothing is uploaded, no shortener sits in the middle, and the code points exactly where you told it to for as long as that destination exists. That is worth checking before you print a code anywhere permanent: a code that encodes a redirect only works while the redirect does, so it is always worth knowing which kind you have. You can prove which kind this one is by loading the page, disconnecting from the internet, and generating a code anyway.
What the different types actually produce
A QR code is just text with a convention on top. A Wi-Fi code is a short string that phones recognise and offer to join; a contact code is a vCard, the same format your phone exports; a WhatsApp code is an ordinary wa.me link. Choosing a type here fills in the right format and escapes the characters that would otherwise break it. That escaping is the part hand-made codes get wrong: a Wi-Fi password containing a semicolon or a comma will silently produce a code that tries to join the wrong network unless those characters are escaped, so they are.
Error correction, and why bigger is not always better
QR codes carry redundant data so they still read when part of the symbol is dirty, creased or covered. Level L recovers about 7 percent of the symbol, M about 15, Q about 25 and H about 30. Higher levels are not free: the same content needs a denser grid, and a denser grid needs either more space or better printing to stay readable. M is the right default for almost everything. Move to Q or H for a code that will be printed small, stuck on a vehicle, laminated on a menu or printed with a logo over the middle, and stay at L only when the content is long and the code will be scanned from a clean screen.
Print it as SVG
The PNG download is fine for a screen or a slide. For anything going to a printer, take the SVG: it is made of vector squares, so it stays perfectly crisp at any size, from a business card to a banner. A QR code enlarged from a small PNG picks up soft edges that make scanners work harder in bad light, and it is the most common reason a code that worked on screen fails on paper.
Colour, contrast and the quiet zone
Scanners look for dark modules on a light background. Inverting that, or picking two colours of similar lightness because they match a brand, is the fastest way to make a code that a phone cannot read in a dim restaurant. The page checks the two colours you pick and warns you before you download rather than after you print a thousand of them. The white border around the code, called the quiet zone, is part of the specification and is included in both downloads: cropping it off breaks scanning, so do not trim to the edge of the squares.
Frequently asked questions
Do these codes expire?
No. The code contains your content directly, with no redirect through this site in the middle, so there is nothing that can expire or be switched off. A link code keeps working for as long as the page it points to exists.
Is it safe to make a Wi-Fi QR code here?
Yes. The code is drawn in your browser and the network password is never sent anywhere. You can check this by loading the page, disconnecting from the internet, and generating a code: it still works.
How much text can one code hold?
A great deal, though the grid gets denser as you add more. Around two thousand characters is comfortable at the default error correction level. If you go past what a code can hold, the page says so instead of producing something unreadable.
PNG or SVG, which should I download?
SVG for anything printed, because it stays sharp at any size. PNG for screens, email and slides, where a fixed-size image is simpler to place.
Can I put my logo in the middle?
Not on this page, but you can add one afterwards in any image editor. If you do, generate at error correction level H first and keep the logo under about a fifth of the width, then test the result with two or three different phones before printing.
Why is my coloured code not scanning?
Almost always contrast. Scanners expect dark on light, and two colours of similar lightness fail in poor light even when they look fine on a bright screen. The page warns you when the pair you have picked is risky.

