DEV Community

Mughal G
Mughal G

Posted on

Printing QR Codes That Actually Scan: Size, Contrast, File Type, and Testing

A QR code that works on your screen can still fail on a flyer, a sticker, or a curved bottle. Most failures come from a few avoidable mistakes. Here's a practical checklist to go through before you send anything to the printer.

1. Size: go bigger than you think

A common rule of thumb is that the code's width should be about one tenth of the scanning distance. In practice:

  • Business cards and small labels: at least about 2 cm (0.8 in) wide
  • Flyers and table cards: 3–5 cm
  • Posters read from a few meters away: 10–20 cm or more
  • Signs and banners: size it for the farthest spot where someone would reasonably stand

Long URLs make dense codes with lots of tiny modules (the small squares), and dense codes need more size. A shorter link, or a dynamic code that stores only a short redirect, gives a simpler pattern that scans more easily when it's small.

2. Leave the quiet zone alone

Every QR code needs a clear margin around it, called the quiet zone. Roughly four modules wide is the standard. Designers often crop it to save space or push text and images right up to the edge. Don't. Scanners use that empty border to find the code.

3. Contrast: dark on light

Scanners expect dark modules on a light background. Follow a few rules:

  • Use a dark foreground (black, navy, deep green) on white or a very light color.
  • Avoid inverted codes (light on dark). Some phones read them and some don't.
  • Avoid low-contrast pairs like yellow on white or gray on gray.
  • Don't print over a busy photo or pattern. Put the code on a solid panel.

Brand colors are fine as long as the contrast stays strong. If you squint and the code starts to blur into the background, the contrast is too low.

4. Logos: small and tested

A logo in the middle looks nice, but it covers part of the pattern. QR codes have error correction that can make up for some missing area, but a big logo can stop a scan. qrfyy (https://qrfyy.com) lets you upload a logo that sits in the center. Its own FAQ advises keeping it small and testing the file, and that's good advice for any generator.

5. SVG vs PNG: pick the right file

This is the most common print mistake.

  • PNG is a grid of pixels. It's fine for websites, social posts, and small prints. If you stretch it, the edges get blurry, and blurry edges make scans fail.
  • SVG is a vector file. It stays perfectly sharp at any size, from a sticker to a banner. Printers and design tools like Illustrator, Inkscape, Canva, and Affinity handle it well.

For anything printed, send SVG when you can. On qrfyy the SVG download is free (many generators charge for vector files), along with PNG, PDF, and EPS. One thing to know: on qrfyy the PDF and EPS files wrap a PNG, so they don't get sharper when enlarged. Use SVG for true vector quality.

If you have to use PNG, export it at a large size and scale it down in your layout, never up.

6. Materials and surfaces

  • Glossy lamination can reflect light into the camera. Matte is safer.
  • Curved surfaces like bottles and cups distort the code, so keep the code small relative to the curve, or put it on a flat label.
  • Uneven surfaces like kraft paper or fabric blur the edges, so print bigger and bolder.
  • Small codes on packaging: check that the printer's minimum dot size can actually reproduce the modules.

7. Static or dynamic before you print

If the link might change (a seasonal promo, a menu, a campaign page), use a dynamic code so you can update where it goes without reprinting. If it will never change, a static code is simpler and doesn't depend on any service staying online. On qrfyy, static codes never expire, and dynamic codes are free up to 20 per owner key.

8. Test like a customer

Testing matters more than any other step. Before a full print run:

  1. Print one real proof at final size on the final material. Don't just test it on screen.
  2. Scan with at least two phones, ideally one Android and one iPhone, using the built-in camera app.
  3. Try it in bad conditions: dim light, an angle, and arm's length.
  4. Check where it lands. Does the page load quickly on mobile data? Does it need a login?
  5. Recheck after any design change. Even moving the logo can break a scan.

Quick checklist

Big enough for the distance. Quiet zone intact. Dark on light. Small logo. SVG for print. Matte finish. Tested on real phones. Link checked. Do those and your code will scan the first time.

Top comments (0)