QR Code Blurred: Why Is My QR Code Blurry? (Fix Guide)

Ever pointed your phone at a QR code, watched it shimmer in and out of focus, and nothing happened?
That is a QR code blurred past the point where a scanner can read it. Here is the short version. A QR code looks blurry for four reasons: the image file is soft, the print smeared or is too small, the camera is out of focus or moving, or the code sits on a screen at the wrong size. Most of the time the fix is a bigger or cleaner code, not a sharpening filter.
I’m Bhargav, founder of linkutm. My team makes QR codes for marketers, and “why is my QR code blurry” is a question plenty of people search for. Guides on this topic repeat the same checklist. I wanted numbers. So I ran a decode test that blurs one Version 3 code by measured amounts, tries to rescue it, and checks what happens to barcodes too.
I cover scanning from the reader’s side in how to scan a QR code. This post is about blur itself: where it comes from, how much a code can take, and what actually fixes it.

Why Is My QR Code Blurry?
A blurry QR code comes from the file, the print, the camera or the screen. Find which one you have before you fix anything. The symptom usually tells you.| Cause | What you see | Fix |
|---|---|---|
| File: low-resolution or enlarged image | Soft edges even on screen, jagged when zoomed | Regenerate the code at a larger size, do not stretch the old file |
| Print: ink spread, small size, glossy stock | Sharp on screen, fuzzy or merged squares on paper | Print the code bigger on matte stock |
| Camera: out of focus, shaky hand, dirty lens | Code shimmers or smears only while scanning | Clean the lens, back up a little, hold still |
| Screen: photo of a screen, screenshot, dim display | Moire bands or washed-out squares | Show it full-screen at high brightness |
One test tells you which row you are in. Look at the code on a screen, zoomed in. If it looks sharp there, the file is fine and the blur happens later, in print or in the camera.
Under the hood, a QR code is a grid of dark and light squares called modules. Blur makes neighbouring squares bleed into each other. Scanners find a code by spotting its three corner squares, the finder patterns, and then sample each module. Blur damages both steps.

QR Code Blurred: How Blurry Can It Get and Still Scan?
A QR code stops scanning when blur reaches about half a module. That is the number to remember. A module is one square of the grid, so the rule is about blur relative to the squares, not about pixels or “how soft it looks”.Here is the test. I took a Version 3 code (29 x 29 modules, error correction level M) and applied Gaussian blur, which mimics a lens out of focus. The blur width is measured in modules. Each setting ran 40 times with simulated camera capture (small rotation and sensor noise). Two open-source decoders read it: zxing-cpp and OpenCV.
| Blur (modules) | zxing-cpp | OpenCV |
|---|---|---|
| 0 (sharp) | 40 of 40 | 40 of 40 |
| 0.25 | 40 of 40 | 40 of 40 |
| 0.5 | 27 of 40 | 0 of 40 |
| 0.75 | 0 of 40 | 0 of 40 |
| 1.0 and above | 0 of 40 | 0 of 40 |
The cliff is steep. A quarter module of blur is invisible to a scanner. Three quarters of a module is a wall. Between them, one decoder still managed and the other gave up.
I ran the same blur on a clean digital image, with no camera noise, to see the best case. zxing-cpp read it at 0.5 modules (40 of 40) and failed at 0.6. OpenCV failed at 0.5. Even a perfect file does not stretch the limit much.
Error correction did not save the blurred codes. The error correction in a QR code repairs a few damaged modules. Blur softens every edge in the code, so there is likely little intact data left to repair from. My test used level M, so I can only vouch for that level.

One more result matters for everything below. Hand-shake blur behaves similarly. In my earlier test for the scanning guide, motion blur of 1.5 modules still read 80% of the time on zxing-cpp and 70% on OpenCV, and 2 modules read almost never.
Honest limitation: Gaussian blur is a clean stand-in for real defocus. Real lenses and real ink do not blur this evenly. Treat these thresholds as directional, and test with real phones.How to Fix a Blurry QR Code File
Regenerate the code. Do not sharpen it. A new export from the generator beats any filter on the old file, for reasons the “unblur” section below shows.- Export bigger. Draw the code at a whole number of pixels per module, 4 or more, and 8 if it will be enlarged. Whole numbers matter because a 1.5x scale makes some modules 1 pixel wide and others 2, which creates blur. I explain the pixel math in the module glossary.
- Prefer a vector format (SVG or PDF) for print. Vectors have no resolution, so they cannot go soft when scaled.
- Use PNG for screens. It keeps hard edges.
- Keep the quiet zone. Cropping the blank margin makes a code harder to find, and it often gets blamed on blur.
Now the surprise. Most guides blame low resolution and JPEG compression. In my test, neither broke a clean code by itself. A code drawn at only 1.5 pixels per module and then enlarged to 8 still read 39 of 40 times on zxing-cpp and 40 of 40 on OpenCV. At 2 pixels per module and above it read 40 of 40. JPEG quality from 100 down to 5, at 4 pixels per module, still read 40 of 40 on zxing-cpp (OpenCV missed one or two of 40).
So why do those files fail in real life? Because real files also pick up blur. A small image gets resampled, then printed, then photographed, and each step adds a little softness. Add them up and you cross half a module. I would still avoid enlarging and recompressing, because each step spends some of your half-module budget.
Honest limitation: my files were clean and synthetic. No ink, no paper, no phone lens. A real low-resolution file has less margin than my 1.5 pixel result suggests.How to Fix a Blurry Printed QR Code
Make the modules bigger. This is the strongest fix I measured. Blur is relative to module size, so bigger modules shrink the problem without touching the blur itself.I held the blur fixed at 6 pixels and changed only how many pixels each module took:
| Pixels per module | Blur in modules | zxing-cpp | OpenCV |
|---|---|---|---|
| 4 | 1.5 | 0 of 40 | 0 of 40 |
| 6 | 1.0 | 0 of 40 | 0 of 40 |
| 8 | 0.75 | 0 of 40 | 0 of 40 |
| 12 | 0.5 | 29 of 40 | 1 of 40 |
| 16 | 0.375 | 40 of 40 | 29 of 40 |
Same blur, same code. Going from 8 to 16 pixels per module took it from failing to passing. On paper, that means printing the code larger. My QR code smallest size guide has the sizes by placement. The short rule is that modules thinner than about half a millimetre start to fail, because ink spreads.
Two more print fixes I use:
- Matte stock beats glossy. Glare creates soft bright patches.
- Shorten the link. A shorter link means fewer, bigger modules at the same print size. A dynamic QR code encodes a short redirect instead of the whole tagged URL, so the grid is sparser.
Why Does My Phone Show a Blurry Scan?
If the code looks sharp on the screen but blurs in your camera, the problem is the camera, not the code. This is the easiest case to fix.- Clean the lens. A fingerprint blurs everything.
- Back up. Phones have a minimum focus distance. If you hold the phone too close, the code is out of focus, so move back to about 15 to 30 cm (6 to 12 inches).
- Tap to focus on the code, then hold still for a second.
- Add light. Dim light lengthens exposure, which turns hand shake into motion blur.
- Square up. Tilt stretches modules and compounds blur.
If one phone fails and another scans the same code, the code is near the limit. Fix the code. I tested several scanners in the best QR code scanner apps post.
Can You Unblur a QR Code?
Usually no. Sharpening rarely recovers a code, and one popular “fix” makes it worse. I tried five rescue methods on a blurred digital image, 20 trials each.At 0.5 modules of blur, where the plain image was borderline:
| Method | zxing-cpp | OpenCV |
|---|---|---|
| Nothing | 20 of 20 | 0 of 20 |
| Unsharp mask | 20 of 20 | 10 of 20 |
| Black-and-white threshold (Otsu) | 0 of 20 | 0 of 20 |
| 2x upscale | 17 of 20 | 16 of 20 |
| Deconvolution (undoing the blur mathematically) | 20 of 20 | 20 of 20 |
At 0.75 modules, past the cliff, almost nothing worked:
- Unsharp mask, threshold, upscale and gentle deconvolution: 0 of 20 on both decoders.
- Deconvolution with the exact blur width known: 20 of 20 on both.
- At 1.0 module and above, every method failed.
Three lessons. First, converting to pure black and white, the instinctive fix, made things worse at 0.5 modules. Second, sharpening gives a small boost near the edge and nothing beyond it. Third, true deconvolution works only when you know the exact blur width, which you never do for a photo of a blurry print.
So regenerate. If you still have the source, export a fresh code. If you only have a photo of a printed code, scan it from a closer, steadier angle, or find the original link. Honest limitation: deconvolution is a best case for the rescuer here, because I told it the exact blur. Real-world rescue is harder.
How to Blur a QR Code on Purpose
If you want to blur a QR code to hide it, blur harder than feels necessary, or skip blur entirely. Some people who search for “blur QR code” are not fixing a blurry code. They want to hide one in a screenshot, photo or post. The same thresholds answer them, in reverse.What I measured:
| Method | Result |
|---|---|
| Blur under half a module | Still scans |
| Blur at 0.75 modules | Unreadable, but recoverable by deconvolution if the blur width is known |
| Blur at 1.0 module or more | Not recovered by any method I tried |
| Mosaic (pixelate), blocks of 1.25 modules or more | 0 of 40 on both decoders |
| Mosaic, blocks of 1 module or smaller | Still decoded up to 19 of 40 times |
| Solid box over one finder pattern | 0 of 40 on both decoders |
So here is what I’d do when you need to blur QR code images before posting them:
- Cover it with a solid shape. Covering one finder pattern was enough to stop both decoders, and covering the whole code is better. A solid fill cannot be reversed.
- If you blur, use a strong setting. A blur strength of at least 2 modules gives you margin. In a screenshot, one module is often 3 to 6 pixels wide, so that means a blur of 6 to 12 pixels or more.
- If you pixelate, make the blocks bigger than a module. Blocks that line up with the grid can leave the code readable.
- Assume the link is public. If the code held a private link, change the link. A dynamic QR code lets you edit or disable the destination without reprinting.

Blurred Barcode: Do 1D Barcodes Blur the Same Way?
Yes. A one-dimensional barcode fails at about the same relative blur. People who search for a blurred barcode or ways to blur a barcode have the same question as the QR crowd, so I tested two common types.The unit here is the narrowest bar. I blurred a Code 128 and an EAN-13 barcode (the retail format), 40 trials each, read with zxing-cpp only.
| Blur (narrowest-bar widths) | Code 128 | EAN-13 |
|---|---|---|
| 0 (sharp) | 40 of 40 | 40 of 40 |
| 0.25 | 40 of 40 | 40 of 40 |
| 0.35 | 40 of 40 | 40 of 40 |
| 0.5 | 5 of 40 | 0 of 40 |
| 0.75 and above | 0 of 40 | 0 of 40 |
The cliff sits at the same place: about half a unit of blur. The fixes carry over. Print the barcode larger, so the narrowest bar is wider, and avoid glossy or smudged labels. If you need to blur barcode images for privacy, treat them like a QR code and cover them with a solid shape.
Honest limitation: I tested two barcode types on one decoder. Other formats, and the scanners in shops, will differ.QR Code Blur FAQs
Why is my QR code blurry?
A QR code looks blurry because the image file is soft, the print smeared or is too small, the camera is out of focus or moving, or the code is on a screen at the wrong size. Look at it zoomed in on a screen. If it is sharp there, the blur happens in print or in the camera.How blurry can a QR code be and still scan?
About half a module. In my test, blur of 0.25 modules scanned 40 of 40, 0.5 modules was borderline (27 of 40 on one decoder, none on the other), and 0.75 modules failed on both. A module is one square of the code’s grid.How do I fix a blurry QR code?
Make the modules bigger or the source sharper. Regenerate the code, export at 4 or more pixels per module, use SVG for print, and print larger on matte stock. For a blurry scan, clean the lens, move back to 15 to 30 cm, and hold still.Can you unblur a QR code?
Rarely. Unsharp mask helped slightly at 0.5 modules of blur, and a black-and-white threshold made it worse. Only deconvolution with the exact blur width recovered a code, and only up to 0.75 modules. Regenerate the code instead.How do you blur a QR code so it can’t be scanned?
Cover it with a solid shape. If you blur, use at least 2 modules of blur. In my test, blur of 1.0 module or more was not recovered, but 0.75 modules could be undone by someone who knew the blur width.Does a blurred QR code still work?
Only if the blur is under about half a module. Beyond that, scanners cannot find the corner squares or read the modules, and error correction does not help because blur affects every edge.Why is my barcode blurry, and can a blurred barcode be scanned?
Barcodes blur for the same reasons as QR codes: low resolution, smeared print, focus and motion. In my test, Code 128 and EAN-13 read at 0.35 bar widths of blur and failed at 0.5. Print it larger or reprint it on matte stock.Next Step: Check Your Code Before You Reprint
Before you fix anything, look at your QR code blurred or not on a plain screen, zoomed in. If it is sharp, work on the print or the scan. If it is soft, regenerate it, because I have not found a filter that rescues a code past half a module.
Then test the fresh code on two or three phones, including an older one. If the link is long, switch to a short one first so the modules come out bigger. When you are ready, create a trackable QR code with linkutm. Once it is printed and scanning cleanly, my QR code tracking guide shows how to tie scans back to real results.