Making a QR code that still scans on a poster
A QR code is a two-dimensional barcode that stores text — most often a URL — as a grid of black and white modules, with built-in error correction that lets a scanner recover the data even when part of the code is damaged or obscured.
Generating a QR code takes two seconds. Generating one that still scans after it has been printed at 2 cm on a menu, photographed at an angle, in poor light, by a five-year-old phone is a different problem — and that problem is about module size, quiet zones and contrast, not about the generator.
This page covers what this generator produces, the specification details that decide whether a code scans in the real world, and the honest trade-off between a static code like this one and the dynamic codes marketing platforms sell.
What this generator produces
- Output format
- A PNG rendered on a canvas in your browser and downloaded directly. Nothing is uploaded, so a code containing a private link or Wi-Fi password never leaves your device.
- Size range
- 128 to 512 pixels square, adjustable in 32-pixel steps, defaulting to 256. That is a screen-resolution image — see the print guidance below before sending it to a printer.
- Error correction
- Level M, the library default, which recovers roughly 15% of the code if it is damaged, smudged or partly covered.
- Quiet zone
- The generated image includes a 2-module margin. The QR specification calls for 4 modules of clear space, so add white padding around the image when placing it on a busy or coloured background.
- Capacity
- The format tops out near 2,300 bytes at error-correction level M, but that is theoretical. Anything approaching it produces a dense grid that phones struggle to read at small print sizes.
- Static by design
- The destination is encoded in the image itself. Once printed, it cannot be changed — which is the central trade-off discussed further down.
Print size: the rule that prevents most scan failures
Direct answer: a widely used field guideline is that scan distance is roughly ten times the width of the code. A code 2 cm wide is comfortable at about 20 cm; a poster read from 3 metres needs one around 30 cm wide.
| Placement | Typical read distance | Practical minimum size |
|---|---|---|
| Business card | 15–25 cm | 2 cm — keep the encoded URL short |
| Restaurant menu or table tent | 25–40 cm | 2.5–4 cm |
| Product packaging | 20–30 cm | 2–3 cm, away from folds and seams |
| A4 flyer or poster in hand | 30–60 cm | 3–6 cm |
| Wall poster | 1–3 m | 10–30 cm |
| Vehicle livery or billboard | 5 m and beyond | Scale to distance ÷ 10, and expect low scan rates regardless |
For print, export at the largest size available here and scale up in your design software only if the tool preserves crisp edges — a blurry, upscaled 256-pixel PNG is one of the most common reasons a printed code fails.
Why printed QR codes fail to scan
Inverted or low-contrast colours
Scanners expect dark modules on a light background. White-on-black works on some phones and not others, and a mid-grey code on a coloured background frequently fails. Keep it black on white unless you are prepared to test on several devices.
No quiet zone
Placing a code flush against an image edge, a border or a block of text removes the clear margin the scanner uses to locate the pattern. Leave white space equal to at least four module widths.
A URL that is far too long
Every extra character adds modules and shrinks each one. Encode a short link rather than a URL carrying five UTM parameters — and if you need campaign tracking, use a redirect that adds the parameters server-side.
Printed on a curve, a fold or a reflective surface
Bottles, tubes, glossy laminate and the fold of a leaflet all defeat the camera. Move the code to a flat matte panel.
The destination changed after printing
A static code encodes the URL permanently. If the landing page might move, encode a URL on a domain you control and redirect from there — the .htaccess redirect generator will produce the rule.
Nobody tested it
Test the final printed piece with at least three phones, including an older Android device, in the lighting where it will actually be used.
Static codes vs. dynamic QR services
This generator makes static codes. Understanding the difference prevents both an unnecessary subscription and an expensive reprint.
| Static (this tool) | Dynamic (a paid service) | |
|---|---|---|
| Destination | Fixed in the image forever | Editable after printing |
| Scan analytics | None built in — use UTM parameters and your own analytics | Scan counts, times and rough locations |
| Ongoing dependency | None; the code works forever | Stops working if the service shuts down or you stop paying |
| Cost | Free | Subscription, usually per code or per scan volume |
| Privacy | No third party sees the scan | The service records every scan |
| Best for | Wi-Fi details, contact cards, permanent links, anything you must not lose control of | Print campaigns where the landing page will change and scan reporting is required |
A middle path gets most of both: encode a short URL on your own domain and redirect it. You keep control, you can change the destination, and there is no third party in the loop.
Before you send artwork to print
- Scan the final artwork — not the screen preview — with more than one phone.
- Confirm the destination page is mobile-friendly; most scans arrive on a phone. Check it with the website speed test.
- Add a short line of text telling people what they get ("Scan for the menu"). Unlabelled codes get far fewer scans.
- Keep the quiet zone clear of borders, captions and background art.
- If the image needs resizing for a layout, use the image resizer rather than dragging a corner in a document editor.
- Encoding a product identifier rather than a link? A linear barcode is usually the right format for retail scanning.
How this page is maintained
The size range, 2-module margin and error-correction level were read from this tool’s configuration. Capacity and quiet-zone figures come from the QR Code specification; print-size guidance is presented as a field rule of thumb, because real-world scan rates depend on the camera, the lighting and the substrate.
Written and reviewed by the ToolsRacks editorial team. Last reviewed: .