Published · October 10, 2026
QR Codes on Bottles and Cans: How to Beat Curved-Surface Distortion
A QR code that scans perfectly on screen can fail on a bottle or a can, because the curve bends the pattern a scanner depends on. Here is how to design the code for a curved label: limit the arc it wraps, size it up, raise error correction, and test real filled containers before the print run.
Quick answer: small arc, bigger size, higher error correction
A QR code on a curved surface fails because the curve bends straight lines and shifts the squares out of place. Curvature makes it harder for scanners to find the corner finder patterns and misaligns the modules. The fix is to keep the code on the flattest part of the label, print it larger than you would on a flat box, raise the error correction level, and test on real filled bottles or cans.
There's good news: Denso Wave, the inventor of the format, says Model 2 codes can be read efficiently on a curved surface by referring to an alignment pattern embedded in them. Any modern generator makes Model 2, so you already have a head start. You still have to design for the curve.
Step-by-step: design the code for a curve
1. Limit the arc
The more of the circumference a code covers, the more its edges turn away from the camera. Put the code on the front of the label, facing the shopper, and keep it narrow relative to the container's width. We can't point to a sourced maximum arc, so take this as a rule of thumb. If you can see the code's edges tilting away when you hold the bottle at arm's length, it is too wide.
2. Size up over the flat minimum
For flat packaging, ScanTrust puts the minimum at 1 cm x 1 cm, with 1 to 2 cm workable. Those are flat-surface figures with no allowance for curves. A bigger code means each distorted module still covers enough pixels for the camera to decode. Go well above the flat minimum. For the baseline, see how small you can print a QR code for the baseline.
3. Raise error correction to Q or H
Error correction lets a scanner rebuild data it can't read. Wikipedia lists the levels as L, M, Q and H, restoring about 7%, 15%, 25% and 30% of data bytes, and higher levels hold less data. Choose Q or H for a curved label and keep the URL short so the code stays coarse and easy to read.
4. Keep contrast high and the margin clear
Dark modules on a light background are the safest. ScanTrust calls black and white the gold standard and notes that not all readers handle inverted codes. Leave clear space around the code, and don't let a seam, a ridge or a label edge cut through it.
5. Test printed samples before the run
Print a few labels on the real material, apply them to filled containers, and scan them with different apps, phones and lighting. ScanTrust recommends testing printed samples before mass printing and retesting after you add graphics. A flat proof on a desk hides every problem above.
Common problems and fixes
Edges won't decode. The code is too wide for the curve. Shrink it or move it to a flatter area. On a can, avoid the shoulder and the seam.
It scans close but not far, or the reverse. Distance matters. A Barcelona research team reports that up close the curve warps the image and farther away the code is too small, with roughly 30 to 50 centimeters workable. Test at the distance a shopper actually stands. Their 2024 spline-based software correction is promising, but they report no accuracy figures, so don't count on every phone doing it.
Glare or condensation. A glossy label throws reflections, and a chilled bottle gets wet. Test one that has come out of the fridge. A matte finish helps, though we haven't seen sourced data on how much.
Low contrast. Colored or inverted codes fail more often on a curve. Read our guide to contrast rules and the inversion trap.
Narrow label. A wide, short code may fit better. See the rMQR code, though scanner support is less universal than standard QR.
Soft print. A fuzzy code fails sooner when bent. Fix a blurry QR code before you print.
Doing this on QRDock
Create the code in QRDock's generator, pick the highest error correction level your data allows, and export a large, sharp file for your printer. Then scan your printed sample with the QRDock scanner on your phone. It runs on-device with no ads and no tracking, and it checks the link before you open it. If the sample scans on a filled bottle from a normal arm's length, it is ready for the print run. You can get QRDock at qrdock.app.
Conclusion
Curved labels need a small arc, a larger code, error correction at Q or H, and a real-world test. Do those four things and a bottle scans about as well as a flat box.
Frequently Asked Questions
Can a QR code wrap all the way around a bottle?
Not safely. Part of the code always faces away from the camera, and the edges bend sharply. Keep the whole code on the visible front of the label so one glance captures all of it.
What error correction level is best for a curved label?
Use Q or H. Wikipedia lists them as restoring about 25% and 30% of data bytes. Higher levels hold less data, so keep the URL short.
Why does my QR code scan on the proof but not the bottle?
A flat proof hides the curve, glare and condensation. Test printed samples on real, filled bottles or cans, the way a customer holds them.
Do I need a special app to scan a code on a can?
No. Modern phone cameras and QRDock handle mild curvature. Special dewarping software exists, but design the label so a normal scan works.