📱 QR Generator
Generate QR codes for URLs, text, or any data — offline
✓ Free Forever · ✓ No Signup · ✓ No Upload · ✓ Works Offline
🔒 Your data never leaves your device. All processing happens locally in your browser using qrcode.js library (client-side). No upload, no server, no tracking.
Features
- Any Content — Generate QR codes for URLs, plain text, email addresses, phone numbers, WiFi credentials, and more.
- Custom Colors — Choose any foreground and background color to match your brand.
- Adjustable Size — Generate from 100px to 1000px — perfect for everything from small labels to large posters.
- PNG and SVG Export — Download as PNG for images or SVG for infinitely scalable vector graphics.
- High Error Correction — Uses the strongest level, H (30%), whenever your content fits, so the code still scans when partly damaged or covered by a logo.
How It Works
- Enter your content — Type a URL, text, email, phone number, or any data you want to encode.
- Customize appearance — Set the size, foreground color, and background color.
- Download QR code — Export as PNG (raster) or SVG (vector) — both generated entirely offline.
Use Cases
- Link to your website or social media profiles
- Business cards with scannable contact info
- Product packaging with link to instructions
- Event check-in codes and tickets
- WiFi network sharing (WIFI:T:WPA;S:network;P:password;;)
Frequently Asked Questions
Can I put a logo in the middle of the QR code?
Yes. Add your logo and it is placed on a white backing in the center. The code uses high error correction (level H), so it still scans — but always test the final code with a phone.
Is the QR code generated offline?
Yes, completely. The qrcode.js library runs in your browser. Your data is never sent anywhere.
When should I use SVG vs PNG?
SVG is vector — it scales to any size without losing quality. Best for print. PNG is raster — best for digital use at a specific size.
What's the maximum content length?
2,953 bytes, about that many plain Latin characters (Chinese characters and emoji take 3–4 bytes each). Up to 1,273 bytes the code keeps level-H error correction; longer content steps down a level so it still fits, and the page tells you when it does. A logo needs level H, so with a logo the limit is 1,273 bytes. In practice, shorter is better: a short link makes a sparse code that scans from across a room.
Can I use custom colours?
Yes. Keep the code darker than the background and the contrast high: light-on-dark (inverted) codes and pale colours trip up a lot of scanner apps, so the page warns you when your pair is risky. Test with a phone before you print.
From the blog
- 📖 How a QR Code Still Scans With a Logo in the Middle — You can drop a logo into the center of a QR code and it still works — thanks to built-in error correction. Here's how that works, how big the logo can be, and how to make one in your browser.
- 📖 How to Make a Free QR Code That Doesn't Expire — Many "free" QR codes secretly redirect through a server and die when you stop paying. Here's how to make a static QR code that works forever.
Related Tools
- ▮▯▮ Barcode Generator — Generate barcodes in Code128, EAN-13, UPC-A, and more formats
- 📡 Share Files Between Devices — Send files phone-to-PC — or anywhere — straight between two browsers. No upload, no account, no email. One device makes a code, the other joins, and the files fly device-to-device.
- > Image to Base64 — Convert images to Base64 data URIs — perfect for embedding in code
- 📦 Compress Image — Reduce file size without losing quality — all in your browser
💬 Bug, idea, or just to say hi? Tell Milo 🐨 · hello@toolkoala.com