QR Code Generator
Generate QR codes for URLs, text, WiFi, vCard, email, and more — download as SVG or PNG
QR Code Type
Content
Customization
Preview
Version 2 · 25×25 modulesDownload & Export
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 300 300" width="300" height="300"> <rect width="300" height="300" fill="#ffffff"/> <rect x="36.36" y="36.36" width="9.09" height="9.09" fill="#000000"/> <rect x="45.45" y="36.36" width="9.09" height="9.09" fill="#000000"/> <rect x="54.55" y="36.36" width="9.09" height="9.09" fill="#000000"/> <rect x="63.64" y="36.36" width="9.09" height="9.09" fill="#000000"/> <rect x="72.73" y="36.36" width="9.09" height="9.09" fill="#000000"/> …
What Is a QR Code?
A QR code (Quick Response code) is a two-dimensional matrix barcode invented by Denso Wave in 1994. Unlike traditional one-dimensional barcodes that only encode numbers, QR codes can store hundreds of characters of text, URLs, contact information, and structured data. Smartphones with cameras can scan QR codes in milliseconds, making them the fastest way to transfer information between the physical and digital worlds.
QR codes are defined by the ISO/IEC 18004 standard. The black and white square modules are arranged in a specific pattern, with three distinctive “finder” squares in the corners that allow scanners to locate and orient the code regardless of the viewing angle.
How to Create a QR Code
- Choose the QR type — URL, plain text, WiFi, vCard, email, phone, or SMS
- Enter the content — type your URL, network credentials, contact details, or message
- Customize — select foreground/background colors, error correction level, and output size
- Download — save as SVG for scalable vector graphics, or PNG for raster image
The QR code updates in real time as you type. All generation happens in your browser using a custom-built Reed-Solomon error correction encoder — no data is sent to any server.
QR Code Types
URL QR Codes
URL QR codes are the most common type. They encode a web address that opens directly in the phone’s browser when scanned. Use them on business cards, printed materials, product packaging, restaurant menus, and event posters to give people instant access to your website.
Best practices:
- Use HTTPS URLs whenever possible
- Keep URLs short — longer URLs require a larger, denser QR code
- Test the QR code on multiple devices before printing
WiFi QR Codes
WiFi QR codes encode network credentials in the format WIFI:T:<encryption>;S:<SSID>;P:<password>;;. When scanned, iOS 11+ and Android 10+ devices can connect to the network automatically without typing a password. This is perfect for guest networks, public WiFi at cafes or offices, and home network sharing.
Supported encryption types:
- WPA/WPA2 — the most common home and office router security (recommended)
- WEP — older, less secure (legacy devices)
- None (Open) — for open networks with no password
vCard Contact QR Codes
vCard QR codes (using the vCard 3.0 format) allow people to save your contact information directly to their address book with a single scan. They support name, phone number, email address, organization, website URL, and mailing address. This is the modern replacement for paper business cards at conferences and networking events.
Email QR Codes
Email QR codes generate a mailto: link that opens the phone’s email app pre-filled with the recipient address, subject line, and body text. Useful for feedback forms, support requests, and event RSVPs.
Phone and SMS QR Codes
Phone QR codes encode a tel: link that opens the dialer app. SMS QR codes use the sms: scheme and can include a pre-written message. Both make it easy for customers to contact you from printed materials without retyping phone numbers.
Error Correction Levels
QR codes include redundant data that allows them to be read even when partially damaged, smudged, or obscured. The Reed-Solomon error correction algorithm can recover data from a damaged portion of the code. There are four levels:
| Level | Recovery Capacity | Use Case |
|---|---|---|
| L (Low) | 7% | Clean, indoor environments; digital displays |
| M (Medium) | 15% | General purpose; most common choice |
| Q (Quartile) | 25% | Industrial environments; logos overlaid on QR codes |
| H (High) | 30% | Outdoor use; harsh environments; maximum durability |
Higher error correction creates more data redundancy, resulting in a denser, larger QR code. Level M is recommended for most uses. Use Level H if you plan to overlay a logo on the QR code (the logo obscures part of the pattern, but error correction recovers the data).
SVG vs PNG Download
SVG (Scalable Vector Graphics) is the preferred format for most uses:
- Scales to any size without pixelation — perfect for print at any resolution
- Smaller file size than PNG for typical QR codes
- Can be directly embedded in HTML:
<img src="qr.svg">or inlined in HTML - Editable in vector graphics applications (Illustrator, Inkscape, Figma)
PNG is useful when SVG is not supported:
- Compatible with all image editing software
- Required by some document formats (Word, older email clients)
- Good for embedding in PowerPoint presentations
- Fixed resolution — download at the size you need
How QR Encoding Works
Each QR code module (square) stores 1 bit of information. The encoding process:
- Mode selection — the encoder automatically picks the most efficient mode: Numeric (for digits only), Alphanumeric (for uppercase letters and a limited character set), or Byte (for arbitrary UTF-8 text)
- Data encoding — the input is encoded into a bit stream according to the selected mode
- Error correction — Reed-Solomon codewords are generated. These are computed using Galois Field GF(256) arithmetic, allowing decoders to reconstruct data from a partially damaged code
- Interleaving — data and error correction codewords are interleaved across “blocks” to distribute burst errors
- Module placement — codewords are placed into the matrix, avoiding reserved areas (finder patterns, alignment patterns, timing patterns, format information)
- Masking — eight mask patterns are evaluated; the pattern with the lowest penalty score is applied to improve scanner readability
- Format information — error correction level and mask pattern are encoded into the format information strips
Privacy and Security
This QR code generator runs entirely in your browser. The QR encoding algorithm — including Reed-Solomon error correction and module placement — is implemented from scratch in TypeScript with zero external dependencies. Your URLs, WiFi passwords, contact information, and email addresses are never transmitted to any server.
The generated SVG code is available to copy directly. Since QR codes are images, the data is embedded in the image file itself — there is no server-side redirect or tracking.
Frequently Asked Questions
How large can the QR code content be? QR codes support up to version 40, which can encode up to 2,953 bytes (Byte mode, error correction L) or 7,089 numeric digits. For URLs, this is far more than needed. Very long vCard entries or email bodies may require higher versions and produce larger, denser codes.
Can I add a logo to the center of a QR code? Yes — this works because of error correction. Use Error Correction Level H (30%), which allows up to 30% of the QR code to be obscured. Download the SVG and overlay your logo in a vector editor. Test thoroughly — logo placement can fail if the covered modules are critical.
What QR code version does this tool generate? The encoder automatically selects the minimum version (1–40) that fits your content at the selected error correction level. Smaller content = lower version = simpler, less dense QR code. The current version and module count are displayed in the preview.
Are QR codes permanent? A static QR code encodes the URL directly in the pattern — changing the destination requires generating a new code. For dynamic QR codes (where you can change the destination after printing), use a URL shortener that supports redirects.
Why does my QR code fail to scan?
Common causes: too high contrast issue (use pure black on white), printing too small (minimum 2cm × 2cm for most scanners), low error correction on a damaged or dirty code, or incorrect format for the data type (e.g., missing https:// prefix).