QR Code Generator
Type anything — get a QR code instantly. Pick the error-correction level for damage tolerance, customize colors, and download as SVG (vector, infinitely scalable) or PNG (raster, fixed pixel size). Encoded entirely in your browser; nothing is uploaded.
Picking the right error-correction level
| Level | Recovery | When to use |
|---|---|---|
| L | ~7% | Digital displays only. Smallest QR. |
| M | ~15% | Default. Print, screen, most cases. |
| Q | ~25% | Stickers, low-quality print, outdoors. |
| H | ~30% | Damaged surfaces, very rough conditions, when adding a logo overlay. |
Common content formats
QR codes hold any text. The phone camera / scanner app interprets specific prefixes as actions:
- URL:
https://tooljo.com— opens in browser. - Email:
mailto:hello@example.com?subject=Hi&body=Hello - SMS:
sms:+15551234567?body=Hello - Wi-Fi:
WIFI:T:WPA;S:MyNetwork;P:supersecret;; - vCard: full vCard 3.0 text — name, phone, email, address.
- Geo:
geo:37.7749,-122.4194 - Calendar: full iCalendar VEVENT block.
- Plain text: anything else. Most scanners show it; some prompt to copy.
Why this generator
- Real ECC math. Reed-Solomon encoding with proper polynomial division. Most generators online use the same well-known libraries; the difference is whether they upload your text. We don't.
- Mask selection. The encoder evaluates all 8 mask patterns by the four standard penalty rules and picks the lowest-score one — same as a phone scanner expects.
- Vector + raster. SVG download for printing at any size; PNG download for direct embedding.
- No upload. Sensitive content (Wi-Fi password, internal URLs, contact info) never leaves your browser. Verifiable in DevTools.
Tips for printable QR codes
- Minimum 1 cm square for reliable phone-camera scanning at arm's length. 2 cm for street signage.
- White margin ("quiet zone") of at least 4 modules around the code. The generator includes this automatically; don't crop into it.
- Print at 300+ DPI if rendering as a raster. Our SVG download stays sharp at any resolution.
- Test scan before mass-printing. Print one, scan with three different phones (or apps). Photo and old-Android scanners are pickier than iOS Camera.
What this tool does not do (yet)
- Logos overlaid in the centre — possible (with H ECC) but adds visual layout we haven't built. SVG export means you can do this in Figma/Illustrator.
- Bulk generation — one at a time. CSV upload + bulk export is on the roadmap.
- Tracking / analytics — by design. If you want scan counts, use a URL shortener (bit.ly, etc.) and put the short URL in the QR.
FAQ
Is my content sent to a server?
No. The QR encoding runs entirely in your browser — open DevTools → Network and confirm. The text never leaves your device, even when you download the resulting image.
What does ECC level mean?
Error correction. The QR code stores extra redundancy so it still scans when partially obscured. L recovers ~7% damage, M ~15%, Q ~25%, H ~30%. Higher ECC means a denser QR code (more modules per data byte) but more tolerance for stickers, fingerprints, or print imperfections. Default M is right for most cases; pick H if the QR will be on a sticker or printed material that may get damaged.
Why is my QR code so dense for a short URL?
QR codes have a minimum size that depends on the version (the smallest version that fits the data). A 12-character URL fits in version 1 (21×21 modules). The visual density at low pixel-size is from the scale, not from the QR itself — try increasing the pixel size slider.
Can I customize the colors?
Yes — pick any foreground and background. Just keep the contrast high (foreground darker than background by a wide margin). Some scanners reject low-contrast or inverted (light-on-dark) QR codes. If in doubt, test the resulting image with your phone camera before using.
How long can the content be?
QR codes support versions 1–40, with up to ~3 KB at the lowest ECC. This generator supports the full range. Practically, very long content (>500 chars) makes the QR dense and harder to scan reliably; for long URLs, use a URL shortener and put the short URL in the QR.
Does this work for Wi-Fi / vCard / SMS / etc.?
Yes — QR is just bytes. The structured formats are conventions on what those bytes contain. For Wi-Fi: WIFI:T:WPA;S:NetworkName;P:Password;;. For vCard: standard vCard 3.0 text. For SMS: sms:+15551234567?body=Hello. Paste any of these directly. We have focused builders for Wi-Fi and vCard coming soon.