Guides

Print size and error correction

A QR code that looks sharp on your laptop can still fail on paper. The usual causes are a missing margin, a symbol that is too small for the distance, and an error-correction level that does not match how the print will be treated.

Updated 28 October 2026

Modules, versions, and the file QRazyQR downloads

A QR symbol is a grid of modules, the small squares. Version 1 is 21 by 21 modules. Each higher version adds four modules per side, up to version 40. QRazyQR asks the encoder for the smallest version that fits your text at the error-correction level you picked. A short URL is a small grid. A long vCard is a larger one. You do not choose the version yourself. If the text cannot fit even at the largest size, the page says: “Content too long for QR code. Try shorter text or lower error correction.”

The size slider is a pixel target for the PNG, and the width and height written into the SVG. The PNG is then adjusted so every module is a whole number of pixels. A 21-module code requested at 512 pixels becomes 504 pixels, because 512 does not divide evenly by 21 and a fractional module would blur. That snap is why the file can be a few pixels under the number on the slider. It is what you want. Soft edges are harder to scan than a file that is slightly smaller and perfectly sharp.

The SVG is built differently. Each module is a 10-unit rectangle, and the file’s width and height attributes are the slider value, so a printer can scale it cleanly. Use SVG for print. Use PNG for a website, a slide, or a chat. The on-screen preview is limited to about 320 pixels wide so the page stays usable. A screenshot of that preview is a worse file than either download. The Copy button places the PNG on the clipboard when the browser allows images on the clipboard, and it tells you to download if it does not.

The quiet zone is not in the file

The specification wants a blank margin, the quiet zone, about four modules wide on every side. Scanners use it to find the edge of the symbol. QRazyQR’s PNG and SVG are the modules only, edge to edge, filled with the background color you chose. There is no extra padding.

If you drop that file on a white page and leave white paper around it, the page is the quiet zone. If you drop it on a photograph, a pattern, or a colored panel that touches the outer modules, many phones will not lock on. Leave a margin of the same color as the background, at least as wide as four modules. On a small code that is only a few millimetres. On a poster it is obvious empty space. Do not put a caption, a logo, or a border in that margin. Do not bleed the code off the edge of a business card. Cutters are not that precise.

QRazyQR also does not stamp a logo in the middle. A logo covering modules spends the error-correction budget on decoration. If you add one later in a design tool, you are damaging the code on purpose, and you should be on level Q or H and you should scan a proof. Leaving the center alone is the more reliable default.

How big to print

These are starting points, not a guarantee. Scan a proof with the cheapest phone you can find, in the light the code will actually live in. A rule of thumb used by printers: the scanning distance is about ten times the width of the symbol. A 2.5 cm code is for a hand holding a phone close. A code meant to be read from two metres wants to be closer to 20 cm across.

PlacementSymbol width, excluding marginNotes
Business card or badge20–25 mmPlus quiet zone. Do not run it to the cut line. A long vCard may need the larger end, or less text.
Table tent, menu, product label30–40 mmArm’s length, indoor light. Level M is usually enough if the print is clean.
Poster or window, 1–2 m10–20 cmGlass glare matters as much as size. Matte film beats glossy glass.
ScreenThe download, not a photo of the monitorDigital display is more forgiving than ink, until someone photographs the screen at an angle.

Modules themselves should stay large enough to survive the print process. On a small card, a dense version-10 code can shrink each module below what a phone can see. If a proof fails, shorten the payload or lower the error-correction level so the grid gets simpler, then print at the same physical size. Making the file a higher pixel count does not help if the card is still 20 mm wide. Pixel count matters when the physical size is large and the PNG was tiny.

Error correction is a budget

QR codes repeat information so a torn corner or a smudge can still be read. The dropdown on the generator is that budget:

LevelAbout this much damage is recoverableUse it when
L7%A clean screen, a short URL, and you need the smallest possible grid.
M15%The default. Ordinary print that will not be scratched or covered.
Q25%Stickers, packaging, outdoor paper, anything that will scuff.
H30%A code that may be partly covered, or a design that will hide some modules. The grid is the densest.

Higher levels do not make a code “higher quality.” They spend more modules on redundancy, so the same text needs a bigger grid, which is harder to print small. For a wallet-sized vCard, H can be the wrong direction. For a shipping label that will be taped over a corner, H is the right one. Generate the code, then cover a corner with a finger and scan again. If it still reads, you have some budget left. If it does not, you needed a higher level or a cleaner placement.

Folds through the middle, heavy gloss that mirrors a ceiling light, and lamination with a bubble over the finder patterns (the three big squares in the corners) cause failures that error correction cannot always absorb. Matte stock, even indoor light, and a flat surface are worth more than jumping from M to H.

Proof the physical object

Scan the PDF if you must, then scan the printed sheet. Printers thicken dark modules and eat light ones. A code that reads on screen can close up on cheap paper. Scan with the phone your audience has, not only with yours. Forget any saved WiFi network before you test a WiFi code, or the phone may “succeed” because it was already joined.

Check the payload, not just that a beep happened. A URL code should preview your domain. A vCard should show the name you typed. A code that opens the sample address https://qrazyqr.com means the sample was never replaced. Color problems are a separate failure mode, covered in color and contrast. If a print fails and the payload is right, email contact@qrazyqr.com with the physical size, the level you chose, and a photo. Do not include a password you still use.