First bit of a disclosure – I’m not a fan of QR codes. They have to be used for the right purpose. Understanding why QR codes fail in certain circumstances will help you decide if they are even the right option to use.
Size and distance matter
If QR codes are printed too small or need to be scanned from too far away, they often don’t work. The context in which a QR code is used significantly impacts its required size. For instance, on product packaging, a smaller QR code may suffice because it will be scanned up close. However, for a billboard viewed from a distance, the QR code must be much larger to ensure visibility and scannability.
| Use case | Scan distance | Recommended print size |
|---|---|---|
| Flyer or brochure | Close-up | 2 x 2 cm |
| Poster | 1 metre | 10 x 10 cm |
| Poster | 3 metres | 30 x 30 cm |
| Billboard | 10 metres | 1 x 1 metre |
| Billboard | 30 metres | 3 x 3 metre |
Ease of scanning
QR codes should be easy to scan, placed in stationary spots, and remain visible long enough for everyone to access. It’s impractical to have to chase a moving bus for a scan.

Information complexity
The more information a QR code needs to contain, the bigger it has to be. This is because a QR code is composed of a pattern of tiny squares, each encoding a bit of data.
QR codes come in various sizes, known as versions, which range from 1 to 40. The version number corresponds to the complexity of the QR code. A Version 1 QR code has a 21 x 21 grid, holding only a small amount of data. As the version number increases, so does the grid size, with a Version 40 QR code featuring a 177 x 177 grid, allowing for much more data to be stored.

Each step up in version number offers a greater data capacity, requiring an increase in the physical size of the QR code to ensure all the encoded data can be accurately scanned and interpreted. A QR code is made up of tiny squares called ‘modules’. Each module needs to be a minimum of 0.04cm. To find the minimum size you times the grid size by 0.04cm. For a recommend print size, times the grid size by 0.069cm.
| QR code version | Grid size | Max alphanumeric characters stored | Minimum display size |
|---|---|---|---|
| Version 1 | 21×21 | 25 | 0.9 x 0.9 cm |
| Version 2 | 25×25 | 47 | 1 x 1 cm |
| Version 3 | 29×29 | 77 | 1.2 x 1.2 cm |
| Version 10 | 57×57 | 174 | 2.3 x 2.3 cm |
| Version 20 | 97×97 | 378 | 3.9 x 3.9 cm |
| Version 30 | 137×137 | 706 | 5.5 x 5.5 cm |
| Version 40 | 177×177 | 1,852 | 7.1 x 7.1 cm |
When creating a QR code for a URL, it’s advisable to limit the QR code to Version 3, which can encode up to 77 alphanumeric characters (numbers, letters and special characters like ?&). This approach helps keep the QR code simple and more easily scannable. If your URL is longer, using a URL shortener can be beneficial to stay within this version limit. In addition to the number of characters, various QR code settings can also influence the size of the code.
Identifying your QR code’s version is straightforward once you know how. Simply count the squares along one side. For example, 21 squares indicate Version 1, and 137 squares mean it’s Version 30. There’s a pattern: each version has 4 more squares per side than the previous one.
Visual contrast
For a QR code to be functional, it needs to have sufficient contrast against its background. Insufficient contrast, like placing light-coloured codes on light backgrounds, can make them undetectable to scanning devices.
To check the contrast use a contrast ratio checker.
Context of use
QR codes placed in impractical settings can be more than a minor inconvenience; they can be a significant hindrance. I was prompted to write this after encountering QR codes in a Word document. This meant I had to awkwardly use my mobile to scan the codes displayed on my laptop screen, a step that could have been avoided with a simple clickable link that would have given instant access to the information. The message should be straightforward: if the content is just a website link, providing the URL is the more user-friendly approach.

For individuals with visual impairments, QR codes can be a major obstacle. Hyperlinks, with descriptive text are compatible with screen readers, significantly improving accessibility.
Internet access
QR codes displayed in areas with poor or no internet access, like subways, can be ineffective. Since scanning a QR code typically redirects to an online resource, a lack of connectivity can render them useless, leaving users without the information they sought.
Understanding the audience
When introducing QR codes, it’s crucial to consider the full range of your audience’s abilities and familiarity with technology. This doesn’t just include older individuals who may not be as comfortable with modern tech, but also:
- people with visual or motor impairments who might find scanning a code challenging
- individuals without access to or knowledge of the latest smartphones
- those who may have privacy concerns or lack trust in scanning codes
Offering alternative methods like clear, typed URLs or contact numbers may be more effective in reaching and resonating with them.
Technical limitations
QR codes that are linked directly to a URL are permanent; once created, the destination cannot be changed. To circumvent this, some opt for QR generator services that use a redirect from their site to the intended URL. While this allows for the destination URL to be changed as needed, it carries risks: if the QR service goes out of business or the redirect link is tampered with, it can lead to the QR code pointing to an incorrect or non-existent site, frustrating users and potentially harming the code’s reliability.
Conclusion
If you use a QR code always provide a URL as well unless it’s for something very specific and highly integrated. Ensure that QR codes complement rather than complicate the user experience.

18 April, 2025 at 12:32 pm
Interesting read! While the article highlights QR code failures, using a free QR code generator with proper testing can avoid most issues. It’s all about smart usage—design, size, and destination matter. Thanks for shedding light on this!
https://qrcodechamp.com/