Drop image here or click to upload PNG, JPG, GIF, SVG — max 2MB

Logo will be placed in the center. Error correction will be set to High (H) for best scanning reliability.

Enter data to generate QR code

QR Code Generator

Every restaurant in Europe switched to QR code menus during 2020 and about half of them never switched back, which is funny because five years earlier the whole tech industry had basically declared QR codes dead. I remember reading articles in 2015 saying nobody would ever scan these things voluntarily. Then Apple baked a QR scanner directly into the iPhone camera in iOS 11, Google did the same with Android, and suddenly the friction disappeared overnight. Now I’m generating QR codes for everything — WiFi credentials for the guest network so I don’t have to spell out a 20-character password, vCards for business contacts, links to Google Maps locations when someone asks “where exactly is the place?”

Use the QR code generator above to create one — paste a URL, type plain text, or switch tabs for email, phone, SMS, WiFi, and vCard formats. Customize colors and dot styles, drop in a logo if you want, and download as PNG or SVG.

QR Code Generator — Create Custom QR Codes

What Actually Goes Inside a QR Code

If you’ve ever looked closely at a QR code and wondered how that mess of squares encodes anything useful, the short answer is it’s a two-dimensional barcode that stores data in both horizontal and vertical directions — unlike old-school barcodes that only encode data along one axis. The format was invented by Denso Wave, a Toyota subsidiary, in 1994 for tracking automotive parts on assembly lines. The original spec could store around 7,000 digits or 4,000 alphanumeric characters, which was absurd overkill for a car part number but turned out to be exactly the right capacity for URLs and contact cards twenty years later.

The three big squares in the corners are finder patterns — that’s how your phone’s camera knows the orientation of the code regardless of which angle you scan it from. The smaller square (bottom-right area on most codes) is an alignment pattern that helps with perspective correction when you’re scanning at an angle, which happens constantly because nobody holds their phone perfectly perpendicular to a restaurant table. Between and around those patterns is the actual data, encoded in a specific version of Reed-Solomon error correction.

And this is where the error correction setting in the generator above actually matters in a practical way that most people ignore. There are four levels: L (7% recovery), M (15%), Q (25%), and H (30%). Higher error correction means the QR code can still scan even if part of it is damaged, dirty, or obscured — but it also means the code needs more modules (those little squares) to store the same amount of data, which makes the code denser and harder to scan from a distance. Most QR code generators default to M or Q, which is fine for digital use. But if you’re printing a QR code on a sticker that’s going on an outdoor surface where it might get scratched or faded, crank it up to H. And if you’re adding a logo in the center — which physically covers part of the code — you absolutely need H level correction or the code might not scan at all. I’ve seen event organizers print 500 flyers with a logo QR code at L correction and then wonder why half the attendees couldn’t scan it. That’s a $300 mistake nobody talks about.

Static vs Dynamic — and Why It Matters More Than You Think

The QR code generator on this page creates static QR codes, meaning the data is encoded directly into the image. Once you download it, that QR code will point to that URL forever. There is no server in between, no redirect, no tracking — the URL is literally baked into the pattern of squares.

Dynamic QR codes are different. Services like Bitly, QR Code Monkey (the pro tier), and Beaconstac generate codes that point to a redirect URL they control, and you can change the destination later. This sounds great until you realize you’re now dependent on that service staying online and not changing their pricing. I’ve encountered dead QR codes on restaurant menus, real estate signs, and museum exhibits because the business let their dynamic QR service subscription lapse and the redirect just stopped working. A printed static QR code pointing directly to your own domain will work as long as that domain exists — no middleman, no subscription.

The trade-off is that you can’t track scan analytics with a static code (there’s no server to log the request), and you can’t change the destination after printing. For most personal and small business uses — WiFi sharing, contact cards, linking to your website or social profiles — static is the right choice. If you’re running a marketing campaign where you need scan counts and A/B testing, dynamic makes sense, but use a redirect on your own domain if you can. At least then you control the infrastructure.

WiFi QR Codes Are Genuinely Underrated

The WiFi tab in the generator above is probably the most useful feature that the fewest people know about. It creates a QR code that, when scanned, automatically connects the device to your WiFi network — SSID, password, encryption type, all encoded. On iOS and Android, scanning a WiFi QR code brings up a prompt asking “Join this network?” and one tap connects you. No spelling out passwords, no “is that a zero or an O,” no texting the password to guests who immediately screenshot it and now have it forever.

I have a printed WiFi QR code stuck on the fridge. Guests scan it, connect in two seconds, done. The guest network password is a 24-character random string that I don’t even know by heart because I never have to type it. If you run a cafe, a coworking space, an Airbnb, or just have people over regularly, a WiFi QR code saves a genuinely surprising amount of time and awkward conversations. Just make sure to set the encryption type correctly in the generator — WPA/WPA2 is what almost everyone is using now, but if you’ve got WPA3 on a newer router, select that instead or older devices might fail to connect even after scanning.

For the vCard format — that encodes your name, phone, email, and address into a QR code that adds you directly to someone’s phone contacts. If you’re at a networking event or conference, having a vCard QR code on your phone screen beats handing out paper business cards that end up in a junk drawer. Though I’ll say the vCard format has a character limit issue with QR codes: if you try to stuff in a full address, company name, title, three phone numbers, and a URL, the resulting QR code gets dense enough that it becomes hard to scan from a phone screen. Keep vCards lean — name, one phone, one email, URL. That’s what people actually save anyway.

FAQ

Should I download QR codes as PNG or SVG?

Use PNG for anything digital — websites, social media, email signatures, presentations. PNG is a raster format that every platform supports and it looks fine at screen resolution. Use SVG if you’re printing the QR code, especially at large sizes like posters, banners, or signage. SVG is a vector format that scales to any size without losing sharpness, so a QR code on a 3-meter banner will look just as crisp as one on a business card.

How small can I print a QR code and still have it scan?

The general minimum is about 2 cm × 2 cm (roughly 0.8 inches) for a simple URL with medium error correction. More complex data — like a vCard with full contact details — produces denser codes that need to be printed larger, around 3-4 cm minimum. Adding a logo eats into scannable area, so logo QR codes should be printed even larger. Always test-scan the printed code from the distance you expect people to use it, not just up close.

Do QR codes expire?

Static QR codes — like the ones this generator creates — never expire. The data is encoded in the image itself with no external dependencies. Dynamic QR codes, which route through a third-party redirect server, can effectively “expire” if the service shuts down or you stop paying for the subscription. That’s the key distinction: static codes last as long as the destination they point to exists.

Why won’t my QR code scan after I added a logo?

The logo physically covers part of the QR code’s data area. If the error correction level is too low, the code can’t recover the hidden data and fails to scan. Set error correction to H (the highest level, which recovers up to 30% data loss) when using a logo. Also keep the logo to roughly 15-20% of the total QR code area — any larger and even H-level correction can’t compensate. If it still won’t scan, try simplifying the logo or reducing its size slightly.

Can I customize QR code colors?

Yes — the Colors section in the generator lets you change the foreground and background colors. The only rule for scannability is that you need sufficient contrast between the two. Dark foreground on light background works best. Avoid light-on-light or dark-on-dark combinations, and don’t invert the standard (light dots on dark background) because some older QR scanners can’t handle it. If in doubt, stick with dark blue or black on white — always works.