Free QR code generator with logo, colors, gradient, dark mode and custom shapes. WiFi, vCard, WhatsApp and more. Download PNG, SVG or PDF, processed locally.
A QR code generator converts text, URLs, or other data into a scannable QR (Quick Response) code image. QR codes store information in a two-dimensional barcode that can be read by smartphone cameras and dedicated scanners.
QR codes encode data in a grid of black and white squares. The pattern includes finder patterns (the three large squares in corners) for orientation, alignment patterns for distortion correction, and data modules that store the actual information. Error correction codes allow the data to be recovered even if part of the QR code is damaged or obscured.
Keep encoded data short — shorter data produces simpler, more scannable codes. Use high contrast colors (dark foreground on light background). Test the code with multiple devices before printing. Add a short call-to-action near the code (e.g., "Scan to visit our website").
QR codes are generated entirely in your browser using the qrcode library. No data is sent to any server.
Generate random strings with the Random String Generator. Create passwords with the Password Generator.
A static QR code contains the destination itself. Scan it and the phone reads the literal URL or text encoded in the pattern. It works forever, needs no account, and cannot be switched off by a third party. A dynamic QR code encodes a short redirect link owned by a QR service; the service then forwards visitors to wherever you currently point it, and counts the scans.
Dynamic codes are genuinely useful for printed campaigns where the destination may change, but they come with a dependency: if the subscription lapses or the provider shuts down, every printed code becomes a dead link — including the ones already on packaging, menus and signage. Many people discover this after a free trial expires and their restaurant menu code starts showing an upgrade prompt. This generator produces static codes, so the code keeps working as long as the destination page exists, with nothing to renew and no scan tracking in the middle.
If you need the flexibility of a dynamic code without the dependency, encode a short URL on your own domain (example.com/menu) and manage the redirect yourself. You keep control and can change the target whenever you like.
QR codes include Reed–Solomon error correction at one of four levels: L (about 7% of the code recoverable), M (15%), Q (25%) and H (30%). Higher levels mean a damaged, dirty, partially covered or badly printed code still scans — but they also add modules, making the pattern denser for the same data.
Two physical rules explain nearly every unscannable printed code. First, the quiet zone: QR codes need clear margin equal to four modules on all sides. Designers frequently crop this away to fit a layout, and scanners then fail to find the pattern. Second, the 10:1 distance rule: the printed width should be roughly one tenth of the expected scan distance. A code read from 30 cm can be 3 cm wide; a code on a poster read from 3 m needs to be about 30 cm wide. Below about 2 cm, phone cameras struggle regardless of resolution because the module size approaches the sensor's ability to resolve it.
For print, export at a size where each module is at least 4 printed pixels at 300 DPI, and never scale a small raster code up — regenerate it larger instead, since upscaling blurs the module edges that the decoder depends on.
Decoders assume dark modules on a light background. Inverting that (light modules on dark) fails on a surprising number of older scanner apps, even though modern iOS and Android cameras usually cope. Keep a contrast ratio of at least 4:1 between foreground and background, avoid gradients across the pattern, and never place a code over a photograph. Red and light-yellow foregrounds are the most common failures because many camera sensors read red channels with less contrast than they appear to the eye.
The format can theoretically hold about 4,296 alphanumeric characters, but a code that dense is impractical: version 40 has 177x177 modules and needs either a large print size or a very close, steady camera. In practice, keep URLs under roughly 100 characters. Removing tracking parameters is the easiest win — a URL with five UTM values can double the module count. If you need analytics, use a short redirect on your own domain rather than appending a long query string.
Test on at least an iPhone and an Android device, using the built-in camera app rather than a third-party scanner, because the built-in apps are what the public actually uses. Test the final printed piece, not the screen version — ink spread on uncoated paper thickens modules and can merge them. Scan at the realistic distance and in realistic light, including dim restaurant lighting if that is the setting. Finally, print a short instruction next to the code. A bare code earns far fewer scans than one labelled "Scan for today's menu", because people need a reason before they raise a phone.
Quishing — QR phishing — works because a pattern of squares reveals nothing about where it leads. Attackers place stickers over legitimate codes on parking meters, restaurant tables and charging stations. As a user, read the URL preview your camera shows before tapping, and be suspicious of any code that leads to a payment or login page. As a publisher, prefer codes pointing at your own domain, print them directly on materials rather than as removable stickers where possible, and tell customers what domain to expect.
Because this generator builds the pattern locally in your browser, the content you encode — a private Wi-Fi password, an internal asset tag, an unpublished landing page — is never transmitted to a server or stored in anyone's scan database.
URLs, plain text, email addresses, phone numbers, Wi-Fi credentials, and more. URLs are the most common use case.
256px is good for digital use. For print, use 512px or larger. The minimum depends on how much data you're encoding.
QR codes include redundant data so they can still be read if partially damaged. This tool uses Medium (M) level, which allows ~15% damage recovery.
Yes. Upload a PNG, JPG, WebP or SVG logo. The tool automatically switches to error correction H (30%), clears the dots behind the logo, and lets you set logo size and padding. Keep the logo under about 30% and use Test scan before printing.
Yes. Use the Dark mode preset (light dots on a dark background) or tick Transparent background to place the code over your own design. Modern phone cameras read inverted codes, but some older scanner apps do not, so the tool warns you and lets you test.
SVG for print and designers (infinitely sharp), PDF for ready-to-print sheets, PNG for web and documents, JPG where transparency is not supported, and WebP for small web files. Raster exports go up to 4096×4096px.
No. They are static codes that encode your content directly, with no redirect service in between, so they never expire and nobody logs the scans.
Yes. Open Bulk generate, paste up to 200 values (one per line, optional file name after a comma) and download a ZIP with every code in your current design.
Browse all free tools · Guides and tutorials · PDF tools · Developer tools · Text tools · SEO tools