Free QR Code Generator
No sign-up, no watermark, no expiry. Generated in your browser with our own open-source, zero-dependency encoder.
How to create a QR code
- Choose what to encode. URLs are the classic, but WiFi credentials, contact cards (vCard), email drafts, phone numbers and SMS messages all work — switch types with the tabs above.
- Type your content. The preview updates live with every keystroke. There's no Generate button because there doesn't need to be one.
- Style it (optional). Change the foreground and background colors, switch to rounded or dot modules, adjust the quiet-zone margin, or drop your logo in the center. Keep contrast high — dark modules on a light background scan best.
- Download or share. PNG for documents, SVG for print, or copy the image straight to your clipboard. The share link reproduces your exact settings — minus anything sensitive, which never enters the URL.
How QR codes actually work
A QR code is a grid of dark and light modules encoding your data plus a generous helping of Reed–Solomon error correction — the same math that let CDs play through scratches. Your text is packed into the densest of three encoding modes (numeric, alphanumeric, or bytes), split into codewords, and the error-correction codewords are computed over a Galois field. The three big squares are finder patterns that tell the scanner where the code is and which way is up; the smaller squares are alignment patterns that correct for perspective distortion.
Finally, one of eight mask patterns is XORed over the data region. Each mask is scored against four penalty rules — long runs, solid blocks, fake finder patterns, and dark/light imbalance — and the best-scoring mask wins, which is why the same content can produce different-looking (but equally valid) codes.
Our encoder implements all of this from the ISO/IEC 18004 specification in about a thousand lines of audited, dependency-free TypeScript. Every build is verified by round-tripping thousands of payloads through an independent decoder across all versions, masks and error-correction levels.
Frequently asked questions
- Is this QR code generator really free?
- Yes — completely. No sign-up, no watermark, no expiring codes, no premium tier. The whole site is open source under the MIT license, so you can verify that yourself or even self-host it.
- Do the QR codes expire?
- Never. These are static QR codes: your content is encoded directly into the image itself. There is no redirect through our servers, so nothing can expire and no one can take your code hostage behind a paywall.
- Is my data uploaded to your servers?
- No. The QR code is generated entirely in your browser using our own open-source encoder. Your URLs, WiFi passwords and contact details never leave your device — you can even load the page and then go offline.
- PNG or SVG — which should I download?
- Use SVG for print and design work: it scales to any size without pixelation, from a business card to a billboard. Use PNG for documents, presentations and anywhere raster images are expected — up to 4096×4096 here.
- What does the error correction level mean?
- QR codes carry redundant Reed–Solomon data so they still scan when partially damaged or obscured. L survives about 7% damage, M 15%, Q 25%, H 30%. Higher levels create denser codes. When you embed a logo, we automatically switch to H.
- Can I put my logo in the middle of the QR code?
- Yes. Upload an image and it is drawn in the center; error correction is bumped to level H so the covered modules are recoverable. Always test-scan afterwards — very large logos can still defeat scanning.
- Why is my WiFi QR code not connecting?
- Check the network name is exactly right (SSID is case-sensitive), the password is correct, and the security type matches your router (WPA covers WPA2/WPA3). Both iOS and Android connect from the native camera app.
- Can I use the generated QR codes commercially?
- Yes. QR codes themselves are an open ISO standard (ISO/IEC 18004), and everything you create here is yours — use it in products, packaging, menus, ads, anything.
- What is the maximum amount of data a QR code can hold?
- Up to 2,953 bytes at the largest size (version 40, level L) — roughly 4,296 alphanumeric characters. In practice, keep payloads short: less data means bigger modules and far more reliable scanning.
- Is there an API?
- Yes — POST /api/v1/qr with your data and get an SVG or PNG back. No API key, no sign-up, same promise as the UI. There is also an MCP endpoint so AI assistants can generate QR codes directly.
API — same tool, no key required
The exact encoder that powers this page also runs behind a free REST endpoint. No API key, no sign-up, honest rate limits.
# SVG (default)
curl -X POST https://zeal.tools/api/v1/qr \
-H 'content-type: application/json' \
-d '{"data": "https://zeal.tools", "options": {"ecLevel": "M"}}'
# PNG, straight to a file
curl 'https://zeal.tools/api/v1/qr?data=https://zeal.tools&format=png&size=1024' -o qr.png
# WiFi payload
curl -X POST https://zeal.tools/api/v1/qr \
-H 'content-type: application/json' \
-d '{"type": "wifi", "ssid": "MyNetwork", "password": "secret123", "format": "svg"}' MCP clients can call the same core: add https://zeal.tools/mcp to your client and use the generate_qr tool.
The Zeal Promise
Non-negotiable, on every tool we ship.
- No sign-up — ever
- No watermarks on any output
- No ads near the download button
- Works fully on mobile
- Privacy-first: processing stays in your browser
- Open source (MIT) — audit it, contribute, self-host
- Zero runtime dependencies in tool logic