How to use — step by step
Print-safe QR codes that can never stop working — with custom colors and styles, exported as PNG, JPEG or SVG.
- Type the destination: a URL, plain text, Wi-Fi details, anything. It is encoded directly into the code's dots.
- Pick a size for export — 512 px is comfortable for print; 1024+ for posters.
- Choose an error-correction level. M is the everyday default; H survives small damage or a logo overlay best.
- Style it: dot shape, corner shape, dot and corner colors, background. Keep contrast strong — dark dots on a light background scan best.
- Download PNG for screens and documents, JPEG for photos-with-backgrounds, SVG for infinite-resolution print work.
- Test-scan the downloaded file with two different phones before printing a thousand flyers.
How it works
The generator builds static QR codes: your destination is encoded directly into the black-and-white matrix. That's the whole point — there is no redirect service in the middle that can switch the code off. The 'free trial' QR sites encode a short link to their own server, so when the trial lapses, every printed code silently dies. A static code has nothing to lapse.
Error correction is the built-in redundancy that lets scanners read a damaged code. The four levels recover roughly L 7%, M 15%, Q 25% and H 30% of the codewords. Higher levels produce denser codes but tolerate scuffs, glare, fabric texture — or a small logo drawn over the center. If you overlay a logo, use H and keep the overlay under about 30% of the code area.
Scannability is contrast plus quiet zone: the white margin around the code (part of the standard) matters as much as the dots. Keep the background light, the dots dark, and don't crop the margin when placing the code.
Print production rules of thumb: minimum code size ≈ scan distance ÷ 10 (a code scanned from 50 cm should be ≥5 cm), matte over gloss, and never place codes on fabric or curved surfaces unless the size compensates. For Wi-Fi sharing you can type the standard plain-text format (WIFI:S:your-network;T:WPA;P:your-password;;) so guests' cameras offer to join; the same text-encoding trick covers simple vCard lines. Test with a phone that has never joined the network — your own phone auto-connects and proves nothing.
Frequently asked questions
Static or dynamic — which should I use?
Static for anything you print or engrave: it cannot expire. Dynamic codes (a redirect you can re-point) need a paid service — and die with it. This tool makes static codes.
Can I track scans?
Not with a static code — there's no server in the loop to count. That's the honest trade-off: permanence and privacy instead of analytics.
Why is my code not scanning?
Check contrast (dark on light), restore the quiet-zone margin, print larger, or raise error correction. Glossy paper under direct light can also defeat scanners — matte finishes scan more reliably.
Can I put my logo in the middle?
The styling supports colors and shapes; for a true logo overlay, export at high error correction (H) and keep the logo small enough to leave the three corner finder patterns and data clear.
Can a static code ever stop working?
Only physically — scratched, painted over, or on a defunct destination page. The encoding itself has no expiry, no trial, and no dependency on any service staying online.
Can I change where an existing printed code points?
No — that's the definition of static. If you need re-pointable codes, that's a hosted (dynamic) product with its own monthly fee; print static codes for destinations you control that won't move (your site's homepage is safest).
Why does higher error correction make the code denser?
Redundancy costs capacity: H-level codes carry extra recovery blocks, so the same URL needs more modules. Denser is fine — scanners prefer it over a damaged sparse code.