Guide · Business
Why Your QR Code Won’t Scan (Print, Contrast, and Payload Size)
Updated 2026-08-29 · 11 min read
The poster looked fine on the laptop. On the floor, phones hunt, fail, and people type the URL by hand. QR code won’t scan is almost never “QR is broken.” It is quiet zone, contrast, a logo on a finder square, glossy lamination, a payload that packed the grid too tight, or a print the size of a postage stamp.
How QR codes work and how to generate one is the happy path: what the pattern is, which payloads belong, how to export PNG or SVG. This article is the incident - why a code that encodes correctly still fails in a hallway, and how to generate a scannable one in the browser without an account.
A QR code is encoding, not encryption. Black and white modules store a string. Anyone who can photograph it has the string. Anyone who can reprint a sticker can point that string somewhere else. QR Code Generator on DevOkk.com builds the image locally. No signup. That matters for a guest Wi-Fi blob. It does not make the print private.
Finder patterns are not decoration
The three large squares in the corners are finder patterns. Cameras use them to locate the code, estimate perspective, and know which way is up. Cover one with a logo, a fold, a staple, or a dark photo bleed, and many phones will not lock. Alignment patterns in larger versions help with distortion. They are not a spare finder. If you must brand the code, keep the mark in the center, small, and raise error correction. Do not “improve” a finder with rounded brand colors that erase the 1:1:3:1:1 ratio the spec depends on.
Timing patterns are the alternating lines between finders. A busy background that continues into those lines is the same class of failure as a missing quiet zone.
Quiet zone is the margin you cropped
Around the whole symbol is a required light margin - the quiet zone, typically four modules wide. Crowding the code against a photo, a colored box, a table edge, or another QR on the same flyer eats that margin. The camera sees a larger, broken pattern.
In slide software, people screenshot the preview and drop it into a tight frame. The crop looks “flush and modern.” It is also how you ship an unreadable code. Export from QR Code Generator with margin intact. In print layout, keep empty light space on all four sides. Do not put a drop shadow that reads as extra dark modules.
On screens, a code flush to a dark video frame has the same problem: the UI chrome becomes part of the symbol.
Contrast beats brand palettes
Dark modules on a light background is the conservative pair. Pale grey on white, gold foil on cream, red on orange, and “invert it so it matches the dark poster” are how you lose to a cheap phone at noon.
Inverted colors (light modules on a dark field) can work if the finder structure stays high-contrast and you have tested the exact print and the exact cameras. Many consumer scanners still assume dark-on-light. Invert only after a lock-screen test, not because the Figma file looked premium.
Low-contrast craft paper, uncoated kraft, and busy wood grain under a transparent sticker add texture the decoder treats as modules. Print on a smooth light patch even if the rest of the piece is textured.
Color is optional. Contrast is not.
Error correction is not infinite logo budget
QR versions spend part of the grid on Reed–Solomon error correction. Higher levels (L → M → Q → H) survive more damage: a coffee ring, a crease, a small center logo. They also make the remaining data modules finer for the same payload, or they force a larger version of the grid. A long URL plus level H plus a huge logo is how you get a grey square.
If you add a logo, you are deliberately damaging the center. Raise correction, keep the logo small, keep it off the finders, and enlarge the whole code. If the brand mark still wins the argument, put the logo next to the code, not on it.
Do not raise correction to hide a payload that should have been shortened. Shorten the string first.
Payload size: vCards and UTM novels
More data means a higher version: more modules, finer detail, harder to scan from across a room. Capacity in the spec is thousands of characters. Practice is shorter.
Long tracking URLs. Twenty query parameters, four UTMs, a fragment, and a redirect chain print as sandpaper. The code is valid. The phone cannot resolve the modules at poster distance. Prefer a short URL you control (your domain, your redirect). Put analytics on the server behind that short path. Do not encode the novel in the pixels.
URL shorteners you do not control. Convenient, until the shortener dies, changes terms, or the slug is recycled. A short path on a domain you operate is the durable option. A third-party shortener is a dependency in every physical copy you cannot recall.
vCard too long. Name, one phone, one email, one URL is a contact. A vCard that includes a biography, three addresses, a photo as base64, and notes from the CRM becomes unreadable in print. The scan creates nothing, or the camera times out. Cut fields. A digital profile card can carry the human-readable side; the QR should stay the machine-readable twin.
Plain text dumps. A whole JSON blob or a PEM file in a QR is a party trick. It is a bad poster. If you needed a file, you needed a URL to a file you already meant to publish - and then think about what not to share.
Do not encode a session token, a live API key, or a document you would not tape to the wall. Encoding is not access control.
Wi-Fi QR still holds the password
Phones can join a network from a payload that includes SSID, security type, and password. That is useful for a client site or a pop-up. It is also a printed password. Generate it in QR Code Generator so the string is not uploaded to a clip-art generator. Then treat the print as public.
Guest network on a public window: maybe. Staff network on a café table: no. Rotate the guest password when the job ends. A QR on last quarter’s foam board is still last quarter’s secret in the pixels. You cannot “encrypt” it by picking a nicer module shape.
If the SSID is hidden, some phones still fail the join even when the code parses. Test the actual join, not only the camera decode.
Screen versus print
A code that scans on a retina laptop at 100% zoom can fail as a 2 cm sticker. Distance, focus, and motion blur are the real environment.
Screen. Fine for a slide, a checkout tablet, a lock-screen test. Watch reflections. A glossy phone photographing a glossy monitor is two mirrors. Raise brightness. Avoid playing the code on a video that scales it through compression mush. If you must put a QR in a PNG for the web, do not JPEG-crush it until the finders smear. If the file is fat, Online Image Compressor with a preview of the modules - the image guide is How to compress images for the web. A QR is not a photograph; keep edges sharp. SVG from the generator is the better download when you will scale.
Print. Think about the farthest a person will stand, then print larger than the mockup. A lock-screen camera, a cracked screen protector, and a queue in bad light are the test, not your desk lamp. Minimum size depends on version (module count) and distance. A dense vCard needs more millimetres than a short HTTPS URL. When in doubt, go bigger.
Lamination. Glossy film reflects overhead LEDs as white blobs across finders. Matte laminate or no laminate scans more often. Curved bottles distort the grid; test the physical object, not a flat proof.
Embroidery and frost. Fabric and etched glass are hostile. The module grid wants a flat, high-contrast print. If marketing insists on a tote bag, put a large, coarse code on a sewn patch, not 2 cm of thread.
Test from the lock screen
Before you send a PDF to the printer:
- Generate in QR Code Generator. Conservative colors. Margin on. Logo only if you re-test.
- Download PNG or SVG. Do not screenshot the browser chrome.
- Put the image on the actual medium (paper proof, phone brightness, poster PDF at 100%).
- Scan with iOS and Android if you can, from the lock screen (Camera, not a zoomed photo of your own preview).
- Scan at an angle, in the lighting of the room, from the distance a guest will stand.
- Confirm the payload: URL opens the right HTTPS page, Wi-Fi joins the guest SSID, vCard creates the right contact.
If it fails on your own phone, it will fail on a guest’s. Do not print a hundred copies to “see how it goes.”
A generator will not register a trademark, will not host a landing page, and will not tell you the URL 404s. Check the destination yourself.
Warehouse guns want bars, not squares
QR is for cameras. Linear barcodes are for dedicated scanners that were configured for Code128 or an EAN-style digit string in 2014. Printing a QR on a bin because “QR is more modern” is how the door scanner beeps nothing.
If the job is a SKU, a bin id, or a shipping label a laser already understands, use Barcode Generator. Quiet zone and contrast still matter; the symbology is different. The inventory write-up is How to generate barcodes for inventory.
Phones can read many 1D codes too, but that is not the warehouse default. Pick the reader first, then the symbol.
Stickers, phishing, and what this page will not teach
A code on a parking meter, a restaurant table, or a poster kiosk can be a sticker over a sticker. The original pointed at the restaurant. The overlay points at a lookalike domain. Preview the URL if the camera shows it. If the domain is wrong, do not continue.
That is a physical attack and a social one. It is not a reason to document how to craft malware payloads, obfuscated redirects for harm, or “undetectable” overlays. Generate codes for URLs, Wi-Fi, and contacts you are allowed to publish. Verify destinations you control. Throw away codes you find in the wild if the preview looks off.
A public QR is not a private channel. Do not put a document behind “nobody will scan it if we use a tiny code.” Tiny codes just fail for honest users and still work for someone with a good lens.
Local generation, no account
Open QR Code Generator. You should not see a signup wall. Paste the payload, keep styling conservative until it scans, set error correction if you cover part of the grid, export PNG for the web and most decks, SVG for print layouts that will scale.
Styling is optional. Rounded dots and colored eyes are fine if contrast holds and you re-test. A template that looks expensive and drops finder contrast is a bad trade.
If the PNG is huge because you exported a poster-resolution raster, compress carefully with Online Image Compressor and look at the finders after. Do not upload a Wi-Fi payload screenshot to a random compress-ad either. The privacy pass for files you will share is A practical privacy checklist before you share a file.
DevOkk.com does not need an account for this. The pixels still leave the building when you print them.
Density, version, and “it worked in the editor”
The editor preview is often large. The printed mark is not. Version 1 (21×21 modules) with a short URL is coarse and forgiving. A version that packed a 2,000-character vCard is a different object. If scans fail only at distance, you do not need a new generator. You need a shorter string or a larger print.
Camera apps also differ. One phone’s reader is aggressive about damaged codes. Another refuses anything with a logo. Test two engines. A single successful scan in the generator’s own test box is not a print sign-off.
Partial scans of the wrong code on a busy flyer (two QRs close together) send people to the wrong URL. Separate them. Give each its own quiet zone. Label the human text next to the code so a failed scan is not a mystery.
Print size, contrast, and the logo that ate the finder
When a QR code will not scan, start with physics, not a new app. Leave a quiet zone. Keep dark modules on a light field unless you have proven an invert. Do not let a logo cover a finder. Shorten the payload - especially UTM novels and oversized vCards - before you crank error correction. Print larger than the mockup. Avoid glossy glare. Test from a lock-screen camera at real distance.
Generate the image in QR Code Generator. Use Barcode Generator when the reader is a warehouse gun. Compress a web raster only after you have checked that the finders are still sharp in Online Image Compressor.
A QR is a published string. Encode in the browser so a guest password is not an upload. Do not treat the print as encryption. The how-it-works guide is How QR codes work and how to generate one. This page exists so the next poster is readable from the hallway.
Frequently asked questions
Why won’t my QR code scan?
Usually quiet zone, low contrast, a logo covering a finder pattern, print that is too small or too glossy, or a payload so long the modules turned into grey dust. Generate a conservative code in QR Code Generator and test from a lock-screen camera before you print a hundred copies.
Is a QR code encryption?
No. It is encoding. Anyone who can photograph the code has the string. A Wi-Fi QR still contains the guest password in the pixels. Treat print as a poster, not a vault.
Can I put a logo in the middle?
Yes if error correction is high enough and the logo stays small and away from the three finder squares. A mark that eats a finder is why branded posters fail. Raise correction, enlarge the code, re-test from a phone - not from the generator preview zoomed in.
Should I use a barcode instead of a QR?
Use a 1D barcode when the reader is a warehouse gun that expects Code128 or an EAN-style SKU. Use QR when the reader is a phone camera (URL, Wi-Fi, vCard). They are not interchangeable. See How to generate barcodes for inventory.
Does generating a QR on DevOkk upload my Wi-Fi password?
No account. QR Code Generator is built to encode in the browser. You are still publishing whatever you print. Guest networks only on public windows. Rotate the password when the job ends.
Are QR codes safe to scan?
The code is only as safe as the destination. A sticker can sit on top of a sticker. Preview the URL if the camera shows it. Do not encode a secret you cannot rotate. This page will not teach you to build malware codes.
Related guides
More reading that links back to the same tools and workflows.
How QR Codes Work (and How to Generate One)
QR basics and local generation for URLs, Wi-Fi, and vCards.
5 min read
How to Generate Barcodes for Inventory and Labels
Barcode types and on-device labels.
5 min read
How to Compress Images for the Web Without Ruining Quality
Shrink JPG/PNG for faster pages. Compression stays in the browser.
4 min read
Why Your Barcode Won’t Scan (Quiet Zone, Format, and Check Digits)
Code128 vs EAN-13 vs UPC, printers that bleed, guns that expect another symbology. Generate a 1D barcode in the browser - drawing bars is not a GS1 license.
7 min read