How to Design QR Codes That Scan Reliably in Print
Size, quiet zone, contrast, error correction and logos: what makes a printed QR code scan on the first try, and how to test it before a print run.
Updated: 7 min read
A QR code that works perfectly on your monitor can fail completely on a poster, a menu or a business card. Screens are bright, sharp and held close; print is matte, sometimes glossy, often viewed from across a room and under poor light. The good news is that almost every scanning problem comes from a handful of predictable causes. Get size, margins, contrast and data density right, test properly, and your printed codes will scan on the first try.
Size depends on how far away people stand
The most common mistake is printing the code too small for the distance it will be scanned from. A phone camera needs each tiny square of the code, called a module, to cover enough pixels to tell black from white. The farther away the camera, the larger those modules must be.
A widely used rule of thumb is a ratio of about 10 to 1: the scanning distance should be no more than ten times the width of the code. In practice that means:
- Business cards and product labels, scanned from 20 to 30 cm: at least 2 to 3 cm wide.
- Flyers, menus and table tents, scanned from about half a meter: 4 to 5 cm or more.
- Posters on a wall, scanned from a meter or two: 10 to 20 cm.
- Banners and shop windows seen from the street: much larger, and worth testing on site.
These figures assume a fairly simple code. A code that holds a long web address, a full contact card or Wi-Fi details has more modules, so each module is smaller at the same printed width. vupdf's QR generator shows a scan difficulty rating, from easy to very dense, together with a minimum width in millimeters for the current content. Treat that number as a floor, not a target.
Keep the content short and the quiet zone clear
Every character you add makes the code denser. A long tracking link with several parameters can easily double the number of modules compared with a short, clean address. If you control the destination, use the shortest URL that still makes sense, and leave out tracking parameters you do not truly need.
The empty border around the code, known as the quiet zone, matters just as much. Scanners use it to find where the code begins. The QR specification calls for a margin four modules wide on every side. When designers crop that space to save room, or place the code right against a photo or a colored edge, scanning becomes unreliable. vupdf's margin setting under Advanced controls this border; if you add a frame, the margin is handled automatically because the frame brings its own padding. When you place the code in a layout, keep text, lines and images outside that blank border too.
Contrast and colors
Scanners read the difference in brightness between dark and light modules, not color as such. That gives you more freedom than you might think, but within limits:
- Keep the code dark on a light background. Inverted codes, light modules on a dark background, are not read by every scanner app.
- Choose a foreground that is clearly darker than the background. Navy on white works; yellow on white or red on dark green does not.
- Be careful with gradients and photographs behind the code. A busy background breaks up the quiet zone and the light modules.
- Avoid metallic and very glossy inks for the code itself. Reflections can blind the camera at certain angles.
vupdf lets you set the foreground, background and corner colors separately, and warns you when contrast is low or the colors are inverted. If you need the code to sit on a colored surface, the transparent background option is available for PNG, WEBP and SVG downloads; in that case make sure the surface itself is light enough.
Error correction and logos
QR codes contain redundant data so they can still be read when part of the code is dirty, scratched or covered. There are four standard levels, and vupdf offers all of them: Low (about 7 percent of the code can be recovered), Medium (15 percent), Good, often called Q (25 percent), and Highest, often called H (30 percent).
Higher error correction sounds strictly better, but it adds modules and makes the code denser. A sensible approach:
- Use Low or Medium for clean indoor uses such as documents, screens or business cards, where the code will not be damaged.
- Use Good or Highest for outdoor signs, packaging that gets handled, stickers on equipment, and anything likely to get scuffed.
- Use Highest whenever you place a logo in the middle.
A logo works only because error correction fills in the modules it covers. That is why vupdf switches error correction to the highest level automatically when you upload a logo. Keep the logo modest in size, leave the three large corner squares untouched, and test the result more carefully than a plain code. Styled dots and rounded corners, which vupdf also offers, are generally fine for modern phones, but the more decorative the style, the more important testing becomes.
Open Generate QR CodeTurn a link, text, or wifi info into a QR code.After the design: code type and file format
Static or dynamic?
There are two broad kinds of QR codes. A static code stores the content itself: the web address, the text, the Wi-Fi password. Nothing stands between the scan and the destination, the code never expires and no outside service is involved. The trade-off is that you cannot change the content after printing; a typo in the URL means reprinting.
A dynamic code stores a short redirect address run by a service, which then forwards visitors to the real destination. You can change the destination later and often see scan statistics, but the code stops working if the service shuts down or the subscription ends.
vupdf generates static codes, directly in your browser. For links, that means the safest approach is to point the code at a page you own and control. If the content behind it needs to change, update the page rather than the code.
Which file format for print
vupdf can download your code as PNG, JPG, WEBP, SVG or PDF. For print, SVG is usually the best choice because it is a vector format: it stays perfectly sharp at any size, and most design and layout programs accept it. PDF also works well when you send the file straight to a print shop. PNG is a good option for documents and office software; download it large enough that it never needs to be scaled up. Avoid enlarging a small raster image, because blurred module edges are a frequent cause of failed scans.
If you want codes on paper without a design program, vupdf can also place the finished code on a blank PDF page, with several copies laid out on one sheet and optional cutting lines, or onto an existing PDF of your own. The tool will not let you shrink a code below the minimum readable width it calculated.
Test before you print the whole run
Testing on your screen is not enough. Before ordering hundreds of copies:
- Print a single proof at the final size, on the same kind of paper if possible.
- Scan it with at least two different phones, ideally one older model, using both the built-in camera app and a common scanner app.
- Scan from the real distance and at a slight angle, not only straight on from up close.
- Try it in the lighting where it will hang: a dim restaurant, a sunny window, a fluorescent hallway.
- Check that the destination opens correctly and works on mobile.
Summary
A reliable printed QR code is big enough for its viewing distance, carries as little data as possible, has a clean margin and strong dark-on-light contrast, and uses error correction that fits its environment. Design it with those limits in mind, export it in a vector format, and always scan a real proof before the print run.
