QR code won't scan after printing: 8 fixes in the order to try them
8 fixes for a printed code that a phone will not read, from the print dialog to the logo, each with what to look for on paper and what to change.
The QR code scanned on the first try from the screen, but the printed copy does not. If the camera does not react to it at all, or reads it only at an angle, after several tries or on one phone and not another, the cause is in the file or in the print. If the camera reads the code and shows the address but the page does not open, the print is fine, and the link inside the code has stopped working.
Open the file you printed from on a screen and scan the same code there. If the screen version reads and the paper does not, the cause lies between the file and the paper. Try the fixes in order, starting with the print dialog. If the screen version fails too, start with fixes 5 and 8, the colors and the logo.
Start with the print scale and the file
- Measure one printed code on the centimeter side of a ruler and compare it with the size set in the form. If a 2 cm (about 0.8 in) code measures 1.9 cm, the print dialog shrank the sheet, and the light margin around each code shrank with it. Print again at 100% or "Actual size", with "Fit to page" turned off. If the code measures the size set in the form, the scale is not the cause.
- Modules are the small squares the code is made of. Look at their edges under a magnifier or in a close-up photo from a phone. Gray or jagged edges usually mean the code came from a screenshot, from an image sent through a messaging app or from a PNG stretched in an editor. Sharp square edges mean the file is fine.
Print from the generator's PDF or SVG, without saving them again in another program. A PNG from the generator is about 1,200 pixels on a side. At 300 dpi that is 4 in (about 10 cm), so do not stretch it beyond that. For a larger print, download the code as SVG, and the edges stay sharp at any size.
If you no longer have the content that went into the code, scan any copy that still reads, on a screen or on paper. The phone shows the content, and you make a new code with the same content.
Then the size and the light margin
- Compare the code size with the scanning distance. The code should be about one tenth of that distance, and at least 2 cm for a code people scan up close. On an office printer, keep each module at 0.4 mm or more. The article on a starting size for each scanning distance has the full table.
The module size depends on what is in the code. The link https://example.com/menu has 25 modules on a side, 0.80 mm each at 2 cm. A contact card with a name, phone, email and organization has 45 modules and 0.44 mm, close to the limit. With a logo the same card has 65 modules and a 0.31 mm module, so it needs 2.6 cm (about 1 in) or more. The article on contact card codes for a whole team has the numbers for other cards.
- Check the quiet zone, the light margin around the code. The QR code standard asks for 4 modules of it on each side. At 2 cm that comes to 3.2 mm for the menu link and 1.8 mm for the contact card.
On a sheet from the generator, this margin is the gap between the frame and the code, 0.3 cm by default, set in "Gap between the frame and the code (cm):" under "Fine tuning". That is a little under the 3.2 mm of the menu link, and a larger code needs more. Raise the gap, or pick "no frame" in "Frame placement:", and the white gap between codes becomes part of the margin.
Text or a picture placed right up to the code in someone else's layout takes the margin away, and so does a dark frame drawn tight around it. On a sticker, a cut right at the edge of the code does the same. The article on trimming stickers at home shows where to cut.
Color and contrast
- Check the two colors. On paper, look for a code in a light color, such as yellow or pale blue, or a light code on a dark background. If the code came from another layout, check its pair in the calculator under the table. The generator's form refuses a pair with a contrast below 4 to 1, with the message "contrast with the background is too low, the code may not scan. Make the code darker or the background lighter". It also refuses a pair where the code is not darker than the background. Set both colors in "Code and background color:" under "Fine tuning".
| Code on background | Contrast | Form check |
|---|---|---|
| black on white | 21 to 1 | passes |
| black on kraft paper #c9a66b | 9.2 to 1 | passes |
| red #e11d48 on white | 4.7 to 1 | passes, borderline |
| gray #777777 on white | 4.5 to 1 | passes, borderline |
| blue #4a90d9 on white | 3.3 to 1 | refused |
| yellow #ffd400 on white | 1.4 to 1 | refused |
The calculator uses the same WCAG formula as the generator. 4 to 1 is the lowest contrast the form accepts, and print comes out paler than the screen, so pick a pair with room to spare for a print run.
4.5 to 1
Borderline. The generator accepts the pair, but paper leaves almost no room to spare, so use a darker code or a lighter background
Open the generator with these colorsThe standard allows a light code on a dark background, but not every camera reads one, and the form does not make such a pair. With "Transparent background" turned on, the code sits on whatever color is under it, and that color has to be light. An inkjet printer with a cartridge running low prints black as gray, so the contrast drops on the paper even when the file is right.
Printer, paper and light
- Look for pale modules and streaks. Toner saving or a draft mode prints the modules pale, and a dirty print head or a worn cartridge leaves streaks across the code. On plain paper inkjet ink bleeds, and small modules run together. Switch to normal quality, clean the print head and run a test sheet before the print run.
- Tilt the print under the light. If the code reads at one angle and not at another, the light and the surface are the cause. Glossy paper, lamination and film reflect ceiling lights, and the camera cannot see the part of the code under the glare. Textured paper blurs small modules along its fibers, and glass in front of the code adds its own reflection.
Use matte paper or matte film, or move the code out of direct light. On a bottle or a pipe the code bends, and its edges turn away from the camera, so move it to a flat spot or onto a hang tag. Other print problems are covered in the troubleshooting articles in the knowledge base.
Logos and decoration
- Check the logo and any styling of the code. A logo added through "Logo in the middle of the QR code:" covers a square a quarter as wide as the code, and the generator raises the code to the highest error correction to make up for it. A logo pasted over a finished code in an editor covers data with no such correction. A code stretched into a rectangle, rounded or dot-shaped modules and a gradient also make the code harder to read. Go back to a square code in one flat color and add the logo in the generator.
Error correction lets a code survive scratches, dirt and some fading. It does not save blurred module edges or a missing quiet zone, so fixes 2 and 4 apply to a code with a logo too.
FAQ
Why does the code scan on a screen but not on paper?
A screen lights the code from behind, so the contrast between the dark and the light modules is high. On paper the contrast depends on the ink, the paper and the room light, and the print dialog may have shrunk the code as well.
Why do only some codes on the sheet fail?
All codes on a sheet have one size, but the number of modules depends on the length of each line. The codes of the longest lines have the smallest modules, so any flaw of the print hits them first. A menu link with UTM tags has 75 characters and gives 33 modules. At 2 cm its module is 0.61 mm, compared with 0.80 mm for the plain menu link. Shorten the longest lines, or make the code larger for the whole sheet.
Does a higher error correction level fix a small code?
No, and the generator has no setting for it. The level is set automatically and goes up to the highest with a logo. A higher level adds modules, so each module of a small code gets even smaller.
The code worked for a month and then stopped. Why?
Look for wear: fading in the sun, scratches and dirt. A worn code needs a new print. If the camera still reads the code but the page fails, the link has stopped working, and a reprint will not help.
Can I fix a printed code without reprinting it?
Not the print itself. Print the fixed code as a sticker and cover the old one with it. The same list with the same settings gives the same codes, so the sticker matches the rest of the run, unless the fix changed the size or the colors.
Next step
Print the same code again from the generator's PDF at 100% on the same paper and put it next to the old print. If the new one reads and the old one does not, the cause was the file or the print scale, not the paper or the light. If both fail, go on from fix 3.
Make the code again as a vector PDF or SVG. You set the size and the gap around the code in the form, and it checks the contrast before you download.
Build your sheet of QR codes
Paste a list of links or upload a file: we lay codes out on A4 sheets with captions and return PDF, SVG or PNG.
Open the generator