QR Codes

How to Make a QR Code People Actually Scan: Size, Placement, and Print

A QR code only works if people can and will scan it. Here are the practical rules for size, contrast, quiet zones, placement, and print that make a code reliable in the real world.

Shaikh Jabir Mohammed 13 min read
Share
On this page

A QR code is only as good as the scans it gets. You can design a beautiful one, print it on thousands of flyers, and get almost nothing — not because the code is broken, but because it is too small, too low-contrast, in the wrong place, or gives people no reason to lift their phone. The technology is reliable; the way codes are deployed in the real world often is not.

This guide is about the practical side of QR codes: the size, contrast, spacing, placement, and print choices that decide whether a code actually gets scanned. The QR Code Studio handles the design and styling; this is how to make sure what you print works when a real person points a real phone at it in real light.

Key takeaways

  • Size to the scanning distance — a rule of thumb is the code should be about a tenth of that distance.
  • Contrast is non-negotiable: dark code on a light background is the reliable default.
  • Leave a quiet zone — a clear margin around the code — or scanners struggle to find its edges.
  • Placement and a clear call to action matter as much as the code itself — tell people why to scan.
  • Always test the real printed piece in real light, not just the design on your screen.

Quick answer

To make a QR code people actually scan: size it to the distance it will be read from (roughly a tenth of that distance is a safe starting point), keep strong contrast with a dark code on a light background, leave a clear quiet-zone margin around it, place it where a phone can comfortably reach and hold it steady, and add a short call to action telling people what they get. Keep any logo modest and centred, print on a flat, matte surface where possible, and always test the actual printed piece in real lighting before you produce it at scale. The QR Code Studio covers the design; these rules cover whether it works in the wild.

Size: the mistake that kills the most scans

The most common reason a QR code fails is simply that it is too small for where it lives. A code that scans fine held in your hand on screen becomes unscannable when shrunk into the corner of a poster read from three metres away. Scanning distance and code size are linked, and ignoring that link wastes more codes than any design flaw.

A workable rule of thumb is the 10:1 ratio: the code should be about one-tenth of the distance from which it will be scanned. A code read at arm’s length (say 30 cm) can be around 3 cm; a code on a poster meant to be scanned from three metres needs to be around 30 cm. These are starting points, not laws, but they keep you from the classic error of printing a stamp-sized code on a banner.

When you are unsure, err larger. A code that is bigger than it strictly needs to be still scans perfectly; a code that is too small does not scan at all, and there is no recovering the scans you never got. Size is the cheapest reliability you can buy — it costs a little layout space and saves the entire point of printing the code.

Contrast and colour: keep it readable

Scanners read a QR code by distinguishing dark modules from a light background. Anything that weakens that distinction weakens the scan. The reliable default is a dark code on a light background, because that is what the vast majority of scanning apps and cameras expect and handle best.

You can style codes with colour and gradients in the studio, and colour is great for matching a brand — but keep the contrast strong. A dark-enough code on a light-enough background reads reliably; a mid-tone code on a busy or similar-toned background does not. Two specific traps to avoid:

  • Reversed colours (light on dark). These can work, but they are riskier because some scanners assume dark-on-light. If you must reverse, test thoroughly; if you are unsure, do not.
  • Printing over a photo or pattern. A code sitting on top of an image loses the clean contrast it depends on. If you want a code on a busy background, put it inside a solid light panel so it has a clean field to be read against.

Strong, simple contrast is boring and it works. That is a good trade for something whose only job is to be scanned.

The quiet zone: give the code room to breathe

Every QR code needs a quiet zone — a clear, empty margin all the way around it. Scanners use that margin to detect where the code begins and ends. Crowd the code against text, a border, or the edge of a page, and you take away the frame the scanner relies on, and an otherwise perfect code fails.

A safe quiet zone is roughly four modules wide (a module is one of the small squares that make up the code) on every side. In practice, just leave a comfortable clear border around the code and never let text or graphics touch it. This is one of the most common and most invisible reasons codes fail: the code itself is fine, but it is jammed into a layout with no breathing room. Designers focused on tidy, edge-to-edge layouts break codes this way constantly.

Placement: reachable, steady, and lit

Where you put a code decides whether a phone can actually engage with it. A code that is technically perfect but positioned badly still gets few scans. Think about the physical act of scanning:

  • Reach. The code must be somewhere a person can bring their phone close and hold it steady. A code high on a wall, behind glass at an angle, or in a spot people rush past does not get scanned no matter how well it is made.
  • Stability. Scanning wants a still target. A code on a flapping flyer, a moving vehicle, or a screen someone is scrolling is hard to lock onto. Fixed, flat, and still wins.
  • Light. Cameras need light. A code in a dim corner, or one that reflects glare back at the phone, fights the scanner. Matte surfaces in decent light scan far more reliably than glossy ones under a spotlight.
  • Height and context. Put the code where the decision happens — near the product, at the counter, at eye level on the poster — not wherever there happened to be blank space.

Good placement is empathy for the person scanning: make it easy to point a phone at, in a moment when they actually want to.

Give people a reason to scan

A code with no context is a small act of faith most people will not make. “What is this and why would I point my phone at it?” is the question every unlabelled code fails to answer. The fix is a short, specific call to action right next to the code.

“Scan to see the menu”, “Scan for 10% off”, “Scan to pay by UPI”, “Scan to leave a review” — each tells the person exactly what they get and turns a mysterious square into an obvious next step. Specific beats vague every time: “Scan me” is weak, “Scan to watch the setup video” is a reason. Pair the call to action with the code so they are read together, and you convert curiosity into scans.

This matters as much as any technical rule, because a code that could scan but never gets pointed at is exactly as useless as one that cannot scan at all.

Logos and styling without breaking the code

Branding a code makes it look intentional and trustworthy, and a QR code can carry a centre logo because it has built-in error correction — the ability to be read even when part of it is obscured. The studio raises that error correction automatically when you add a logo, a gradient, or fancy module shapes, so a modest centre logo stays scannable. A few guardrails keep it safe:

  • Keep the logo modest and centred. A logo up to roughly a fifth to a quarter of the code area is a safe guide; bigger than that covers too much for error correction to recover.
  • Never cover the corner squares. The three large squares in the corners (the finder patterns) let scanners locate and orient the code — they must stay clear.
  • Keep contrast even with styling. A gradient or coloured modules are fine as long as they stay dark enough against a light background.

Styling is worth doing — a branded code invites more trust than a bare one — but the code’s job comes first. When in doubt, dial the styling back and test.

Choose the right kind of code for the job

Codes come in two kinds, and the choice affects how you use them over time. A Fixed (static) code bakes the content into the image: it works forever and is free, but it cannot be edited or measured. A Trackable (dynamic) code encodes a short link the studio hosts, so you can change the destination after printing and see how many scans it got. For a printed campaign, a permanent sticker, or anything where you might want to repoint the link later or know whether it worked, a trackable code is worth the small cost — printing thousands of a fixed code you later need to change is an expensive mistake. For a one-off, unchanging link, a free fixed code is perfect. Match the code type to whether you will ever need to edit or measure it.

Surface and material matter more than you think

The same code, printed identically, can scan reliably on one surface and fail on another. The material you print on is part of whether the code works, so choose it with scanning in mind:

  • Matte beats glossy. Glossy paper, laminate, and shiny plastic reflect light straight back at the phone, and glare over a code can defeat the scan. A matte finish scatters light and reads far more reliably. If you must laminate for durability, use a matte laminate and test it.
  • Flat beats curved. A code wrapped around a bottle, a cup, or a tube distorts as it curves away from the camera. Keep codes on flat panels where you can; if the surface must curve, make the code larger and keep it on the flattest available face.
  • Opaque beats translucent. A code printed on see-through material picks up whatever is behind it, wrecking its contrast. Print on a solid, opaque background.
  • Durable where it needs to be. A code on packaging that gets wet, rubbed, or crushed in transit may not survive to be scanned. Match the material’s toughness to where the code will live.

None of this is exotic; it is just remembering that a QR code is a physical thing a camera has to read, and physical conditions decide whether it can.

QR codes for common small-business jobs

Part of making a code that gets scanned is choosing a use where scanning is natural. The studio supports many content types, and some of the most useful everyday jobs for a seller or small business are:

  • UPI payment — a code at the counter that opens a UPI app pre-filled with your details, so customers pay without typing.
  • WhatsApp chat — a code that starts a chat with you, optionally with a prefilled message, for support or orders.
  • Business card (vCard) — a code that saves your full contact details to a phone in one scan, better than a paper card that gets lost.
  • Wi-Fi — a code guests scan to join your network without you reading out a password.
  • Review or social link — a code on the receipt or packaging that takes a happy customer straight to leave a review.
  • Website or menu — a code that opens your catalogue, menu, or landing page for people standing in front of it.

In each case the code succeeds because the moment is right: the person is at the counter, holding the packaging, sitting at the table. Placement and timing do half the work.

Two myths worth dropping

A couple of beliefs cause people to over-engineer or under-trust their codes. First, “a fancy, heavily styled code looks more professional.” Up to a point — a modest logo and brand colours help — but past that, styling fights function. A code crammed with gradients, unusual module shapes, and an oversized logo is a code inviting failure, and a scan that does not happen is the least professional outcome of all. Restraint reads as competence. Second, “if it scanned once on my phone, it works.” Your phone, your lighting, and your screen are one data point. The code will meet many phones, in worse light, on a printed surface — which is exactly why the real-world test below is non-negotiable rather than a nicety.

A quick pre-print checklist

Before you send anything to print at scale, run through this:

  • Size — is it large enough for the distance it will be scanned from (about a tenth of that distance)?
  • Contrast — dark code on a light background, strong and clean?
  • Quiet zone — a clear margin all around, with nothing touching it?
  • Logo — modest, centred, corners clear, if you added one?
  • Fixed or trackable — the right type for whether you will ever edit or measure it?
  • Call to action — a short line telling people what they get by scanning?
  • Material — matte, flat, and opaque where possible?
  • Tested — scanned on the real printed piece, in real light, with more than one phone?

If every box is ticked, you have removed almost every reason a code fails in the wild.

Always test the real printed piece

Every rule above is a guideline; the printed piece is the truth. Screens and printers differ, paper and surfaces differ, and lighting in the real location differs from your desk. So before you produce anything at scale, print one and test it — with more than one phone if you can, and in the light where it will actually live.

Test-scan the real thing, at the real distance, on the real surface. Check that it reads quickly and reliably, not just eventually. This single habit catches almost every failure — a size that looked fine on screen but is too small in print, a contrast that a printer washed out, a glossy laminate that throws glare, a quiet zone a layout ate. The test costs one print and two minutes and saves an entire run.

The bottom line

QR codes do not fail because the technology is unreliable; they fail because they are printed too small, too faint, too crowded, in the wrong place, or with no reason to scan. Get the fundamentals right — size to the distance, dark-on-light contrast, a clear quiet zone, reachable and well-lit placement, and a specific call to action — and add modest branding on top with error correction to protect it. Then test the real printed piece before you commit. Design the code in the QR Code Studio, apply these rules to how you deploy it, and it will do the one job you made it for: get scanned.

Frequently asked questions

How big should a printed QR code be?
Big enough for the scanning distance. A rough guide is that the code should be about a tenth of the distance it will be scanned from — a code read at arm's length can be small, one on a poster read from across a room must be much larger. When unsure, make it bigger and test.
Why won't my QR code scan?
The usual causes are too small a size, weak contrast, a missing quiet zone (the clear margin around it), a reversed colour scheme, or printing on a curved or glossy surface. Fix the size and contrast first, keep a clear margin, and always test the real printed piece.
What is the quiet zone around a QR code?
The clear, empty margin around the code that scanners need to detect its edges. Without it, a code crammed against text or a border can fail to scan. Leave a clear border roughly four modules wide all the way around.
Should a QR code be dark on light or light on dark?
Dark code on a light background is the reliable default, because most scanners expect it. Reversed (light on dark) can work but is riskier — if in doubt, keep it dark-on-light and test before printing.
Does adding a logo stop a QR code from scanning?
Not if done right. Error correction is raised automatically when you add a logo in the studio, so a modest centre logo stays scannable. Keep the corner squares clear and always test the printed result.
SJ

Shaikh Jabir Mohammed

Founder of Source Code Stack. Writes about the pricing, shipping, and everyday operations of selling online — and builds the tools that make that work faster and more accurate.

Related reading