Create QR codes for URLs, vCards, WiFi, email, and text. Customize colors and size, download as PNG or SVG. Perfect for marketing.
Pick a content type, type the payload, and the code redraws as you type. There is no "generate" button to hunt for and no account step. Everything runs in your browser using a JavaScript QR encoder, so the URL you are encoding, the WiFi password you are handing to guests and the phone number you are putting on a flyer never leave the machine you are sitting at. Nothing is uploaded, nothing is logged server-side, and the generated code is not stored anywhere for later retrieval — if you close the tab before downloading, it is gone.
When you are done, download the result as a PNG for slides and social posts, or as an SVG when the code is going to print and needs to stay crisp at any size. For URL and plain-text codes you can also copy a shareable link that reopens this page with the same payload, size and error-correction level already filled in — useful when you are handing the job to a designer.
A QR code has no concept of "a WiFi code" or "an email code". It encodes a string. What makes a scan open the mail app instead of a browser is the prefix convention the string uses, which phone cameras recognise. This tool builds those strings for you:
| Content type | What gets encoded | What the scan does |
|---|---|---|
| URL | The address exactly as typed, e.g. https://example.com/spring-menu | Opens the link in the phone’s browser |
| Text | The raw characters, no prefix | Displays the text; the camera app may offer to search or copy it |
mailto:you@example.com?subject=...&body=... | Opens a pre-addressed draft with subject and body filled in | |
| Phone | tel:+15551234567 | Loads the number into the dialler (most phones ask before calling) |
| SMS | sms:+15551234567?body=... | Opens a new message to that number with your text pre-typed |
| WiFi | WIFI:T:WPA;S:NetworkName;P:password;; | Offers to join the network without typing the password |
Two honest caveats. First, this tool does not build vCard or MeCard contact codes — if you need a full contact card with name, title, company and address, this is not the right generator. Use the Email or Phone type for a single point of contact instead. Second, the shareable-link feature only round-trips the URL and Text types; the structured types (email, phone, SMS, WiFi) are deliberately not written into the query string, which is exactly what you want for a WiFi password.
Worth being blunt about: a WiFi QR code contains the network password in readable plain text. Anyone who photographs the poster can decode it with any QR reader. That is fine for a guest or café network, and it is a genuinely good use of the format. It is not fine for the network your point-of-sale terminals and file server sit on. If you are printing a guest code, print a guest network. The encryption dropdown offers WPA/WPA2, WEP and None; pick the one the access point is actually running, because a mismatch makes the join attempt fail silently on some phones. Choose "None" only for genuinely open networks — the password field is ignored in that case.
QR codes carry Reed–Solomon error correction, which means a portion of the code can be obscured, smudged or torn and a reader can still reconstruct the payload. You choose how much of that redundancy to spend. The four levels defined by the QR standard are:
| Level | Approximate recovery | Use it when |
|---|---|---|
| L (Low) | Around 7% of codewords | Screen-only codes, or a long URL you need to keep visually simple |
| M (Medium) | Around 15% | The sensible default, and what this tool starts on |
| Q (Quartile) | Around 25% | Printed material that will be handled: menus, packaging, tickets |
| H (High) | Around 30% | Harsh environments, curved surfaces, or codes with a logo pasted over the centre |
The tradeoff is direct and unavoidable: redundancy costs capacity. At a fixed amount of data, raising the level from L to H forces the encoder to use a larger QR version — more modules, each one smaller on the page at the same physical dimensions. So the level that makes the code more robust in theory can make it harder to scan in practice, because you have shrunk every module. The rule of thumb that works: choose the level by how the code will be handled, then check the printed size is still generous, and raise the size rather than lowering the level.
The QR standard tops out at version 40, which holds up to 7,089 numeric characters, 4,296 alphanumeric characters, or 2,953 bytes — and those maxima are only available at error correction level L. Higher levels reduce them substantially. Those are ceilings, not targets. A code near the ceiling has a very fine module grid and will frustrate a mid-range phone camera in poor light. In practice, keep URL payloads short. If your link is a tracking URL with fifteen query parameters, shorten it before encoding — the difference between a 40-character URL and a 200-character one is visible to the naked eye in the density of the resulting code.
The size slider runs from 256 to 1024 pixels in 128-pixel steps and controls the exported raster dimensions, not the number of modules. The module count is decided by your payload length and error correction level; the size setting just decides how many pixels each module gets. Bigger export means more pixels per module, which means more tolerance for camera blur, cheap optics and awkward angles.
The generator renders a two-module margin around the code. That margin is the quiet zone — blank space a reader needs in order to find the code’s boundary at all. The QR specification calls for a quiet zone of four modules, so if your code is going somewhere crowded, place it on additional white space rather than butting it up against artwork, a table border or the edge of the page. This is one of the most common reasons a technically perfect code fails to scan on a busy layout.
Pixels stop being meaningful once the code is on paper; what matters is millimetres per module and reading distance. Download the SVG for anything going to print — it scales without the soft, fuzzy module edges that a scaled-up PNG produces, and fuzzy edges are exactly what defeats a scanner. A widely used starting point for handheld distances is a code no smaller than about 2 cm square, scaled up for longer reading distances: a code on a window intended to be scanned from the pavement needs to be dramatically larger than one on a business card.
The foreground and background colour pickers let you match a brand palette, and this is where most homemade QR codes go wrong. A scanner thresholds the image into dark and light modules. It needs the "dark" modules to be genuinely darker than the "light" ones under real lighting, through a phone camera that is auto-exposing for the whole scene.
https://, or a staging URL that will 404 in production are all invisible in
the black-and-white pattern.This is the point most people learn the expensive way. The URL is baked into the pattern of black and white modules. There is no server in the middle, no lookup, no dashboard. Reprinting the banner is the only way to change where a printed code goes.
The standard defence is one layer of indirection: encode a URL you control and can redirect
later — something like https://yourdomain.com/go/spring on your own domain,
configured to redirect to wherever the campaign currently lives. Then the printed code stays valid
forever and the destination is a configuration change. The tradeoff is that a redirect URL is
slightly longer than a bare landing-page path, and that you must keep that redirect alive for as long
as the printed material exists. Third-party "dynamic QR" services do exactly this, with the
significant catch that the code dies if the service does or if you stop paying. Codes generated here
are static by design: they point wherever you told them to, they depend on no service of ours, and
they will keep working long after this page does.
Scan the actual output, at the actual size, on the actual medium, with more than one phone. A code that scans instantly from a laptop screen at 800 pixels can fail at 18 mm on matte card in a dim restaurant. Test at an angle, test in low light, and test with an older handset if your audience is likely to have one. Note that this generator creates codes; it does not read or decode them, so use a phone camera or a dedicated reader for verification.
A QR (Quick Response) code generator converts text, URLs, contact information, Wi-Fi credentials, or other data into a two-dimensional barcode that can be scanned by smartphone cameras and dedicated readers. Invented by Denso Wave in 1994 for tracking automotive parts, QR codes have become ubiquitous in contactless payments, event ticketing, restaurant menus, product packaging, and digital marketing.
QR codes encode data as a matrix of black and white modules (squares) arranged in a grid pattern. They include built-in error correction, meaning they can still be read even when partially damaged or obscured. This robustness, combined with the universal availability of smartphone cameras, makes QR codes the most practical bridge between physical and digital content.
A QR code consists of several functional areas:
Finder patterns: Three large squares in three corners that help scanners locate and orient the code.
Alignment patterns: Smaller squares that help correct for distortion when the code is photographed at an angle.
Timing patterns: Alternating black-white rows/columns that define the grid spacing.
Data and error correction: The actual encoded information plus Reed-Solomon error correction codes.
| Error Correction Level | Recovery Capacity | Best For |
|---|---|---|
| L (Low) | ~7% damage | Clean environments, maximum data |
| M (Medium) | ~15% damage | General purpose (default) |
| Q (Quartile) | ~25% damage | Industrial environments |
| H (High) | ~30% damage | Logos embedded in QR code |
QR code data types:
| Type | Format | Example |
|---|---|---|
| URL | Plain text URL | https://example.com |
| Wi-Fi | WIFI:T:WPA;S:NetworkName;P:Password;; | Auto-connect to network |
| vCard | BEGIN:VCARD... | Contact card |
| mailto:user@example.com | Compose email | |
| SMS | smsto:+1234567890:Message | Send text message |
| Phone | tel:+1234567890 | Dial number |
QR (Quick Response) code is a 2D barcode that stores data as black squares on white background. Invented by Denso Wave (Toyota subsidiary) in 1994 for tracking automotive parts. Uses Reed-Solomon error correction - works even if 30% damaged. Scanning with smartphone camera decodes the pattern into text, URL, or other data. Can store up to 4,296 alphanumeric characters or 7,089 numeric digits. Widely used for: contactless payments, marketing campaigns, product tracking, authentication, WiFi sharing, digital menus. This tool generates standards-compliant QR codes in multiple formats (PNG, SVG).
QR codes support multiple data types: URL/website link (most common), plain text (up to 4,296 characters), contact information (vCard format - name, phone, email, address), WiFi credentials (SSID, password, encryption type - auto-connect on scan), email address with subject/body, phone number (click to call), SMS message (recipient + pre-filled text), geo-location (GPS coordinates), calendar events (iCal format), crypto wallet addresses. Best practice: URLs should be short (long URLs create dense, harder-to-scan codes). Use URL shorteners if needed. This tool supports all major QR code data types with format validation.
QR codes have 4 error correction levels that determine damage tolerance: L (Low) - 7% recovery, fastest scanning, smallest size. M (Medium) - 15% recovery, default for most uses. Q (Quartile) - 25% recovery, good for printed materials. H (High) - 30% recovery, best for damaged/dirty environments. Higher correction = larger QR code (more data cells). Use L for digital displays (screens, perfect quality). M for business cards, flyers. Q/H for outdoor use, stickers, products (wear and tear). This tool defaults to M (balanced), allows selection of other levels for specific use cases.
QR codes can be customized while maintaining scannability: Colors - foreground (data modules) must be dark, background must be light. Ensure high contrast ratio (3:1 minimum). Avoid: light colors on dark background (scanners expect opposite). Size - minimum 2x2cm (0.8") for reliable scanning. Larger is better for distance scanning. Logo/image - can embed in center (up to 30% area with H error correction). Must not obstruct positioning squares (3 corners). Quiet zone - white border required (4 modules minimum) for scanner detection. This tool generates customizable QR codes with color picker and size options.
Physical print: 2x2cm minimum, 3x3cm recommended for business cards, 5x5cm+ for posters/signage. Use 300+ DPI PNG or vector SVG. Digital screens: 200x200px minimum on mobile, 400x400px for desktop. SVG recommended for responsive scaling. Packaging: 1.5x1.5cm minimum (depends on scan distance), high error correction (Q/H). T-shirts/fabric: 10x10cm minimum (curved surface + movement), H error correction. Billboards: scale to viewing distance (1cm per meter of distance). Vector formats (SVG, EPS) scale infinitely without quality loss. This tool exports optimized formats for each use case.
WiFi QR codes allow instant network connection without typing passwords. Format: WIFI:T:WPA;S:NetworkName;P:Password;H:false;; where T = security type (WPA, WPA2, WEP, or nopass), S = SSID (network name), P = password, H = hidden network (true/false). Example: WIFI:T:WPA2;S:MyNetwork;P:SecurePass123;; Scanning auto-fills WiFi settings - user taps Connect. Best practices: use WPA2/WPA3 encryption, avoid special characters in SSID/password (causes encoding issues), test before deploying, print multiple copies for guests. This tool generates WiFi QR codes with automatic format validation and preview.
QR codes themselves are not encrypted - anyone can scan and read the data. Security risks: malicious URLs (phishing sites, malware downloads), QR code replacement (stickers over legitimate codes), data leakage (sensitive info visible when scanned), tracking (shortened URLs with analytics). Mitigation: preview URL before visiting, use QR scanner app with URL preview, don't encode sensitive data (passwords, credit cards), use HTTPS URLs only, implement link expiration for temporary access, monitor QR code analytics for abuse. For sensitive use cases, combine with authentication (password, 2FA). This tool highlights security best practices during QR generation.
Direct QR codes (static data) cannot track scans. For analytics, use dynamic QR codes pointing to redirect URLs: create unique tracking URL (bit.ly, goo.gl, custom domain), generate QR pointing to tracking URL, redirect to actual destination, analytics platform logs: scan count, timestamp, location (IP geolocation), device type, referrer. Track with UTM parameters: ?utm_source=qr&utm_medium=print&utm_campaign=fall2025. Services: Google Analytics, Bitly, QR code platforms with built-in analytics. A/B test different QR placements, compare scan rates across locations/materials. This tool generates QR codes compatible with any URL shortener or tracking platform.