Static QR codes that never expire and never track
Most “free” QR generators don't encode your link directly - they embed their own redirect URL and point it at your destination. That lets them count scans, change the target later, or lock the code behind a paywall. If the service shuts down, your printed code dies with it.
This generator makes static QR codes: the URL, WiFi credentials, text or email you enter is encoded straight into the QR matrix. There is no middleman, no tracking, and no expiry. The code works forever - even offline, even if RaveTools disappears.
Everything runs in your browser. The QR matrix, the SVG rendering, the OKLCH gradient math, the scannability checks and the PNG export all happen on your device. Nothing you type, and no logo you upload, is ever sent to a server.
How to make a custom QR code
- Pick a data type - URL, plain text, WiFi or email - and fill in the mini-form.
- Style it: choose a module shape, a solid color or an OKLCH gradient, the quiet-zone margin and the error-correction level.
- Optionally upload a center logo - the error-correction level bumps automatically so it still scans.
- Watch the live scannability bar: keep it green by holding good contrast and a reasonable logo size.
- Export a clean SVG (copy to clipboard too) or a PNG at the size you need.
Frequently Asked Questions
About the QR code generator.
From the blog
How to Design a Custom QR Code With a Logo That Actually Scans
A technical guide to embedding logos in QR codes, understanding Reed-Solomon error correction, and choosing the right colors and formats for print.
Read →NetworkingHow to Make a Secure WiFi QR Code (And the Format That Powers It)
Discover how WiFi QR codes work entirely offline, the exact WNC string syntax to format your own, and the privacy benefits of static generation.
Read →QR CodesStatic vs Dynamic QR Codes: Why Your 'Free' QR Code Will Expire
Learn the technical difference between static and dynamic QR codes, and why many free generators trap you with broken links and subscriptions.
Read →