QR Code Generator — URL, WiFi, vCard, Email, SMS, Geo
Free QR code generator. Make static QR codes for URL, WiFi, vCard, email & SMS. SVG & PNG download. No expiration, no signup, 100% in your browser.
What is a QR Code?
A QR Code (Quick Response Code) is a 2D matrix barcode invented by Denso Wave in 1994 and codified by ISO/IEC 18004:2015. It encodes data into a square grid of black and white modules, with three large finder patterns at the corners that let scanners locate and orient the code. Versions range from 1 (21×21 modules) to 40 (177×177); the encoder picks the smallest version that fits your content at the chosen error correction level.
QR codes carry many data types via standard URI schemes. URLs are encoded directly. WiFi credentials use the de facto WIFI: protocol that iOS Camera (since iOS 11) and Android camera apps recognize natively. Contact cards use vCard 3.0 (RFC 2426) — broader scanner compatibility than vCard 4.0 (RFC 6350). Email links use mailto: (RFC 6068), text messages use sms: (RFC 5724), and map pins use geo: (RFC 5870). Scanning a well-formed QR triggers the right action — open URL, join WiFi, save contact, draft email — without the user typing anything.
Reed-Solomon error correction is what keeps QR codes scannable when they're scratched, folded, or partly obscured. Four levels — L, M, Q, H — recover roughly 7%, 15%, 25%, and 30% of damaged data. Higher levels add redundancy modules, so the QR grows physically larger for the same content. Choose H for printed materials that will be handled, M for screens, L only when you're squeezing in long URLs.
The biggest practical distinction is static vs dynamic. A static QR encodes your real content directly into the pixels — it works forever, with no service to maintain. A dynamic QR encodes a short link to a third-party redirect service; if that service expires, raises its price, or shuts down, every printed QR you've shipped goes dead. Read Static vs Dynamic QR Codes — why yours stops working for the full story. This tool generates static QRs only.
Many online QR generators upload your WiFi password, vCard contact details, or private URL to their server before encoding. This tool runs the qrcode npm library entirely in your browser — zero uploads, zero logs, zero tracking. It's the same privacy posture as our other client-side encoders Base64 Encoder/Decoder and URL Decoder/Encoder: your inputs never leave the page.
// Build a WiFi payload and generate an SVG QR
import QRCode from 'qrcode';
// 1. WIFI: protocol (de facto, recognized by iOS+Android)
const payload = 'WIFI:T:WPA;S:My\\;Network;P:p@ss\\;word;H:false;;';
// 2. Generate SVG (vector, scales without pixelation)
const svg = await QRCode.toString(payload, {
type: 'svg',
errorCorrectionLevel: 'M',
margin: 4,
color: { dark: '#000000', light: '#ffffff' },
});
// 3. Drop into the DOM (DOMParser-safe, not innerHTML)
const doc = new DOMParser().parseFromString(svg, 'image/svg+xml');
preview.replaceChildren(doc.documentElement); Key Features
Never Expires
Static QR codes encode your data directly into the pixels. No redirect service to fail, no monthly fee, no shutdown risk — the code keeps working forever.
7 Data Types
URL, plain text, WiFi credentials, vCard contacts, email mailto:, SMS, and geo locations — one tool for the most common QR use cases.
SVG & PNG Download
SVG by default (vector, scalable, paste straight into Figma). PNG at 256, 512, or 1024 px for screens, social posts, or print.
Custom Colors with Contrast Check
Foreground and background color pickers. The tool computes the contrast ratio and warns when scanning may fail on real phones.
4 Error Correction Levels
L (~7%), M (~15%), Q (~25%), H (~30%) — pick higher levels for print where damage, fading, and folds are likely.
100% Browser-Based
QR generation runs locally via the qrcode npm library. Your inputs — including WiFi passwords and personal vCard data — never leave your device.
No Signup, No Watermark
Open the page, generate, download. No account, no usage limits, and no logo overlay polluting your QR.
Examples
URL to website
https://go-tools.org
Most common use — paste any URL and download the QR. The link is encoded directly into the pixels, so the QR keeps working even if you switch hosting providers.
WiFi network share
SSID: Cafe WiFi / WPA2 / pass: visitor2026
iOS and Android Camera apps recognize the WIFI: protocol natively — guests scan the QR taped by the door and join the network without typing the password.
vCard business card
Ada Lovelace / Acme Corp / +1 555 0100 / ada@acme.test
Scanning the QR opens the contact app prefilled with name, phone, email, and organization. Paper business cards with a vCard QR get saved roughly 4× more often than typed entries.
Geo location
lat: 40.7829, lng: -73.9654 (Central Park)
geo: URI opens the default maps app with a pin already dropped — perfect for venue signage, restaurant flyers, real estate listings, and wedding invitations.
How to Use
- 1
Choose the data type
Pick the tab that matches what you're encoding: URL for websites, WiFi for network sharing, vCard for contact info, Email or SMS for prefilled messages, Location for map pins, or Plain Text for arbitrary content.
- 2
Fill in the fields
Each tab shows the right fields for that type. WiFi needs SSID, password, and security type. vCard accepts name, phone, email, organization, and website. The QR preview updates as you type.
- 3
Customize (optional)
Open the Customize panel to change error correction level (M is fine for most cases, H for print), output size (200-1024 px), and foreground/background colors. The tool warns you if contrast is too low for reliable scanning.
- 4
Download SVG or PNG
Click Download SVG for vector output (scalable, perfect for print) or pick a PNG size (256/512/1024 px) from the dropdown. Use Copy SVG to paste straight into Figma or your design tool.
Common QR Code Mistakes
Dynamic QR expired
The QR encoded a short URL like bit.ly/xyz, the redirect service expired, and the QR now goes nowhere. Static QR encodes your real URL directly — never fails.
QR encodes: https://bit.ly/abc → 404 after subscription lapses
QR encodes: https://your-domain.com/menu directly
Low contrast custom colors
Light gray on white, or yellow on white — looks pretty in design mocks, fails to scan on most phones in the real world.
FG #cccccc on BG #ffffff (ratio 1.6:1)
FG #003366 on BG #ffffff (ratio 12.6:1)
Unescaped WiFi special characters
If your password contains ;, :, \, or ", they must be backslash-escaped in the WIFI: payload. This tool does it automatically — many cheap generators don't.
WIFI:T:WPA;S:Cafe;P:p@ss;word;; (parser breaks at the unescaped ;)
WIFI:T:WPA;S:Cafe;P:p@ss\;word;;
Too low error correction for printing
Level L on a printed flyer that gets a coffee stain or fold mark stops scanning. Use H for any physical printout that will be handled.
Print poster, ECC=L, partially folded → unreadable
Print poster, ECC=H → readable even with 30% damage
Logo too large
Embedding a logo over more than 25% of QR area corrupts too many modules even at ECC H. Keep logos at 20% or smaller, centered.
40% logo over center → fails on Samsung phones
15% logo, ECC=H → reliable across phones
URL too long for ECC level
Tracking URLs with UTM parameters (utm_source, utm_medium, utm_campaign...) push the QR past the byte limit at ECC=M. Either lower ECC or use a static URL shortener you control.
?utm_source=...&utm_medium=...&utm_campaign=... (350 chars at M → reject)
Use /go/spring (35 chars) with server-side redirect to the long URL
Common Use Cases
- Restaurant menus
- Print a URL QR on the table — customers view the menu on their phones. Static QR means it works even if you switch hosting providers or change menu domains.
- WiFi for guests
- Tape a WiFi QR by the door at home, in cafés, or in conference rooms. Guests scan and join without typing the password — and you never have to read it out loud.
- Event check-in
- Print a URL QR linking to your registration page on tickets and signage. Shows up on photographer prints, name tags, lanyards — every scan is a tracked check-in.
- Business cards
- Add a vCard QR to paper cards — scanning saves your contact instantly. Roughly 4× higher save rate than asking the recipient to type your details into their phone.
- Location pins for venues
- Geo QRs open the default maps app with the pin already set. Use them on real estate listings, restaurant flyers, conference signage, and wedding invitations.
- Marketing posters
- URL QRs with UTM parameters track print campaign attribution. A static QR survives even if the campaign analytics service shuts down or your account expires.
- Product packaging
- Encode warranty, manual, or registration URLs on the box. Use error correction H so the QR survives shipping damage, scuffs, and fold-over flaps.
- Museum & exhibit labels
- Audio guide URLs, deeper context, language alternatives — visitors get rich content from their own phone instead of carrying bulky printed booklets.
Technical Details
- ISO/IEC 18004:2015 Compliant
- Output follows the international QR Code standard. Versions 1 to 40 (21×21 to 177×177 modules) selected automatically based on content size and chosen error correction level.
- Reed-Solomon Error Correction
- QR codes use Reed-Solomon coding to recover from damage or occlusion. Levels L/M/Q/H recover roughly 7%, 15%, 25%, and 30% of damaged data. Higher levels mean a larger QR for the same content.
- Standard URI Schemes
- WIFI: protocol (de facto, recognized by iOS and Android), mailto: (RFC 6068), sms: (RFC 5724), geo: (RFC 5870). Contact cards use vCard 3.0 (RFC 2426) — broader scanner compatibility than vCard 4.0 (RFC 6350). Built-in iOS and Android camera apps recognize all of them.
- Auto Encoding Mode
- The qrcode library selects the most efficient encoding (numeric, alphanumeric, byte, or kanji) for each input. UTF-8 byte mode handles non-ASCII text including emoji and CJK characters.
Best Practices
- Don't crop the quiet zone
- QR codes need a 4-module-wide margin of background color around them. This tool includes it by default — don't crop it out when placing the QR in a layout, even if it looks like wasted whitespace.
- Use ECC level H for printed QRs
- Print is unforgiving — fading, scratches, and fold lines all damage the code. Error correction level H (~30% recovery) saves you. Level M is fine for screens that don't degrade.
- Keep contrast ratio at 4.5:1 or higher
- QR scanners measure contrast between dark and light modules. Stick to dark foreground on light background. Inverted (light on dark) works on some phones but fails on others.
- Test on iOS and Android
- iOS Camera reads QR codes by default since iOS 11. Android varies by manufacturer — Samsung, Pixel, and Xiaomi all behave slightly differently. Test both before printing 10,000 flyers.
- Use HTTPS and short URLs
- Long URLs make the QR denser (smaller modules → harder to scan). If your tracking URL is 200+ characters, run it through a static URL shortener you control — not Bitly, since those expire.
Frequently Asked Questions
Why does my QR code stop working after a while?
Will this QR code expire?
How do I create a WiFi QR code?
How do I make a vCard QR code for my business card?
Is this QR code generator free?
Can I download QR codes as SVG?
What is the maximum length of data a QR code can hold?
What error correction level should I use?
Can I add a logo to the QR code?
Are my inputs uploaded to a server?
Why is my custom-colored QR not scanning?
What QR code version is generated?
Can I use this QR code for commercial purposes?
Does this work offline?
Related Tools
View all tools →Base64 Decoder & Encoder
Encoding & Formatting
Decode and encode Base64 online for free. Real-time conversion with full UTF-8 and emoji support. 100% private — runs in your browser. No signup needed.
JSON Diff & Compare
Encoding & Formatting
Compare two JSON files instantly in your browser. Side-by-side highlighting, RFC 6902 JSON Patch output, ignore noisy fields like timestamps and IDs. 100% private, no upload.
JSON Formatter & Validator
Encoding & Formatting
Format, validate and beautify JSON instantly in your browser. Free online tool with syntax validation, error detection, minify and one-click copy. 100% private.
JSON to YAML Converter
Encoding & Formatting
Paste JSON, get YAML instantly. Live conversion in your browser. K8s/Compose-ready, 2/4-space indent, smart quoting. 100% private, no upload.
URL Encoder & Decoder with Built-in URL Parser
Encoding & Formatting
Decode or encode URLs in real time with built-in URL parser. Dual mode: encodeURI & encodeURIComponent. 100% private, no data sent to any server.
YAML to JSON Converter
Encoding & Formatting
Paste YAML, get JSON instantly. Live conversion in your browser. K8s manifests, OpenAPI specs, helm values supported. 100% private, no upload.