How to use the QR code generator
Choose a content type from the tabs, fill in the form and the code redraws as you type. A URL opens in the browser, Wi-Fi offers to join the network, a vCard or the more compact MeCard offers to save a contact, Email and SMS open a pre-filled message, Phone starts a call and WhatsApp opens a chat through wa.me. Location encodes a Google Maps link by default, because iPhone cameras don’t reliably open the older geo: format; you can choose an Apple Maps link or geo: for Android-only use, and paste coordinates or a Google Maps link straight into the latitude box. Event writes an iCalendar event (title, start, end, location, notes) that phones offer to add to the calendar; times are converted to UTC from the time zone you pick, with daylight saving handled.
Open Encoded text under the preview to see exactly what the code contains. The tool handles the fiddly escaping for you — a Wi-Fi password containing a semicolon or a colon, or a vCard address with commas, is escaped the way the formats require, which is the most common reason home-made Wi-Fi codes fail. Enterprise (802.1X) Wi-Fi is supported for Android; iPhones need a configuration profile for those networks.
When you are happy, scan the preview with your own phone before you print anything. Then download a PNG at 512 to 2048 pixels for screens, or at 300 dpi for the print width you set; an SVG, which is vector and stays sharp at any size; or a PDF or EPS made at the exact print size for printers and design software.
Static codes: why these never stop working
Many popular generators create dynamic codes by default: the square actually contains a short link to their own server, which then redirects to your page. That lets them count scans, but it also means the code dies if you stop paying or the company disappears — a common and unpleasant surprise on printed menus and business cards.
Every code made here is static: your link, network details or contact card are written directly into the pattern. Nothing sits in between, nobody logs the scans and there is nothing to expire. The trade-off is that you cannot change the destination after printing, so if a link might change, point the code at a page you control and change what that page shows. If you need scan counts, add a campaign parameter such as ?utm_source=poster to the URL and read it in your own analytics.
Error correction, size and scanning distance
QR codes use Reed–Solomon error correction, so a damaged or partly covered code can still be read. Higher levels are more robust but need more modules, which makes each square smaller at the same print size.
| Level | Recovers | Use it for |
|---|---|---|
| L | about 7% | Long content on screens, where damage is unlikely |
| M | about 15% | The sensible default for print and screens |
| Q | about 25% | Outdoor posters, stickers, packaging that gets scuffed |
| H | about 30% | Codes with a centre logo — chosen automatically |
The generator picks the smallest of the 40 QR versions that fits your content and tests all eight mask patterns, keeping the one with the lowest penalty score so the code has no large blocks or finder-like patterns that confuse scanners. A useful rule for print size is a 10:1 distance-to-width ratio: a code scanned from one metre away should be at least 10 cm wide. Type a print width under the downloads and the tool shows the size of each module, the distance it can be scanned from and the smallest safe size for your code — modules under about 0.4 mm, or codes under 2 cm, are unreliable. Keep URLs short — a short address gives a lower version with bigger, easier modules.
Colours, shapes, frames, logos and the quiet zone
- Contrast. Scanners look for dark modules on a light background. The tool shows the contrast ratio and warns below 4.5:1. Dark blue, green or burgundy on white or cream works; yellow on white, or grey on grey, does not. If you give the corner squares their own colour, keep them dark too — scanners locate the code by them.
- Shapes. Modules can be square, rounded or dots, and the three corner squares square, rounded or circular. We decoded every combination from every download format with the ZXing reader used by Android. Rounded and circular corners are read by the iPhone and Android camera apps, but some older third-party scanners only look for square corners, so Square stays the default and a note appears when you change it.
- Frame and caption. A frame with a short call to action such as “Scan me” or “Scan for the menu” is drawn outside the quiet zone, so it doesn’t affect scanning. PDF and EPS use a built-in font that covers Western European letters.
- Inverted codes. Light modules on a dark background look stylish but some older scanner apps cannot read them. Test on several phones if you invert.
- Quiet zone. The standard asks for an empty border four modules wide. Printing a code tight against other artwork is one of the most common reasons it fails.
- Logo. A centre logo hides part of the data, so the level is locked to H and the logo is limited to 30% of the width, with a padded background. Around 20% is the sweet spot. Your image never leaves the browser and is embedded in the SVG, PDF and EPS downloads too.
Gradients are deliberately not offered: they reduce contrast unevenly across the code, which is the easiest way to make a stylish code that some phones can’t read. Printing a Wi-Fi code for guests? Pair it with a strong key from the password generator. Checking which network your devices are on? What is my IP shows the address and provider you are connecting through. To embed a PNG in HTML or CSS without a separate file, run it through Base64 encode.
Frequently asked questions
Do these QR codes expire or have a scan limit?
No. The codes are static: the content is written directly into the pattern, with no redirect through our server or anyone else's. They work for as long as the destination exists, can be scanned any number of times, and do not depend on Key & Pixel staying online.
Can I change where the QR code points after printing it?
Not with a static code — the destination is part of the pattern. If the target might change, encode a short link to a page you control, such as yoursite.com/menu, and update that page instead. That keeps the advantages of a static code while giving you the flexibility of a dynamic one.
How do I make a QR code for my Wi-Fi?
Choose the Wi-Fi tab, type the network name exactly as it appears on your devices (it is case-sensitive), choose the security type and enter the password. Tick Hidden network if the name is not broadcast. iPhones and Android phones will offer to join the network when they scan it, with no typing.
Will a logo stop the QR code from scanning?
Not if it is kept modest. Adding a logo locks error correction to level H, which can rebuild about 30% of the code, and the tool pads the logo with the background colour. Keep it around 20% of the width, avoid covering the three corner squares, and always test with a couple of phones before printing.
Which download format should I use — PNG, SVG, PDF or EPS?
Use PDF or EPS for professional print: both are vector and are made at the print width you set, so a printer or design app places them at the right size. SVG is vector too and suits websites and designers. Use PNG for slides, emails and documents; 1024 px is plenty on screen, and the 300 dpi option gives a print-ready bitmap with its resolution recorded.
How much text can a QR code hold?
Up to 2,953 bytes at level L in the largest version, 40, falling to 1,273 bytes at level H. Digits-only content packs far more densely, up to 7,089 digits. In practice, keep content short: a long payload makes a dense code that phones struggle with, so link to long text rather than encoding it.
Can I make a QR code for a calendar event?
Yes. Choose the Event tab, add a title, the start and end, a location and notes, and pick the time zone. The code contains a standard iCalendar event, and iPhone and Android phones offer to add it to the calendar when scanned. Times are converted to UTC with daylight saving handled, so the event shows at the correct local time wherever the phone is. All-day events are supported too.