Skip to content

QR Codes — How They Work, When to Use Them, and How to Make Them

Cornerstone Guide11 min readMay 1, 2025
Table of Contents

QR codes are everywhere — on packaging, restaurant tables, business cards, event posters, and transit stops. Most people know how to scan one. Fewer understand what makes a QR code reliable, why some codes fail to scan, when to use a static code versus a dynamic one, or how to create codes that look intentional rather than pasted on as an afterthought.

This guide covers everything: the technical structure that makes QR codes work, the four data types they encode, error correction levels and why they matter for print, the difference between static and dynamic codes, best practices for design and sizing, and how to integrate QR codes into physical materials that actually get scanned.

Whether you are adding a QR code to a business card for the first time, creating table codes for a restaurant, or building a QR-based marketing campaign, this guide gives you the foundation to make decisions confidently.

How QR Codes Work

A QR code (Quick Response code) is a two-dimensional matrix barcode invented by Denso Wave in 1994 for tracking automotive parts. Unlike a 1D barcode that encodes data in a single line of bars, a QR code encodes data across a 2D grid of black and white modules (squares).

The structure of a QR code:

Every QR code has three corner squares (finder patterns) that allow scanners to locate and orient the code regardless of rotation or viewing angle. Between these anchors, the remaining grid encodes the data in binary format. Version numbers (from 1×1 to 40×40 in module count) determine how much data the code can hold.

Scanning process: The phone's camera captures the code's image. Computer vision software detects the finder patterns, determines orientation, and reads the module grid. The binary data is decoded, error correction is applied to recover any damaged modules, and the result is presented to the user — typically as a clickable notification.

The entire scan takes under one second on a modern smartphone. The reason QR codes became universal is this speed, combined with the fact that iOS (2017) and Android (most modern versions) do not require a dedicated app.

The Four Data Types QR Codes Can Encode

QR codes encode data in one of four encoding modes, selected automatically based on the content:

Numeric: Digits 0–9 only. Most efficient — stores up to 7,089 numeric characters. Used for product codes and ticket numbers.

Alphanumeric: Uppercase letters A–Z, digits 0–9, and a handful of special characters (space, $, %, *, +, -, ., /, :). Stores up to 4,296 characters. Slightly less efficient than numeric.

Byte (binary): The full UTF-8 character set — lowercase letters, Unicode, special characters. Stores up to 2,953 bytes. Used for URLs (which often contain lowercase letters and special characters), WiFi credentials, and plain text.

Kanji: Shift JIS encoding for Japanese and Chinese characters. Up to 1,817 characters.

Most real-world QR codes use byte mode because URLs and contact data require the full character set. This is why a longer URL produces a denser, harder-to-scan code — more characters means more data means more modules in the grid.

Practical implication: Shortening a URL before encoding it in a QR code is not just cosmetic — it produces a simpler pattern that scans faster and reliably at smaller print sizes.

Error Correction: Why Your QR Code Still Scans When Damaged

QR codes use Reed-Solomon error correction — the same algorithm used in CDs and DVDs. Error correction adds redundant data to the code so that damaged or obscured modules can be reconstructed.

There are four levels:

LevelCodeRecovery capacityUse case
LowL7% of modulesClean digital environments
MediumM15% of modulesGeneral purpose — default for most uses
QuartileQ25% of modulesLight industrial environments
HighH30% of modulesPrint with logo overlay, outdoor, industrial

When to use each level:

Use M for digital QR codes on websites, PDFs, or email. Use Q or H for physical print on business cards, table tents, and product packaging — physical materials get handled, bent, and sometimes partially obscured.

Use H whenever you embed a logo in the center of the QR code. The logo covers some of the encoded data; H-level correction gives the scanner enough redundancy to recover it.

The trade-off: Higher error correction means more redundant data, which means more modules, which means a denser pattern. A denser pattern requires a larger minimum print size and is marginally slower to scan. For most use cases the difference is negligible; for tiny codes at the minimum size, use L or M.

Generate a QR code with custom error correctionChoose L, M, Q, or H before downloading

Static vs Dynamic QR Codes

This is the most important decision when creating a QR code for long-lived use.

Static QR codes encode the destination URL directly into the pattern. The URL is baked in at generation time. You cannot change it. The code works as long as the destination URL is live, with no server required, no ongoing subscription, and no dependencies.

Dynamic QR codes encode a short redirect URL managed by a QR service. The pattern points to something like qr.svc/abc123 which then redirects to your actual URL. You can change the redirect destination at any time in the service's dashboard — without reprinting the QR code. The service also logs every scan (device, location, time) as analytics data.

When to use static:

  • The destination URL will never change
  • You do not need scan analytics
  • You want no ongoing subscription cost
  • You are generating many codes for a short-lived campaign

When to use dynamic:

  • You are printing on permanent materials (signage, branded merchandise) and the URL might change
  • You need scan analytics (how many scans, from which cities, on which devices)
  • You are running A/B tests on QR destinations
  • You want to update campaign destinations seasonally

The risk with dynamic QR codes: If the QR service goes down, is discontinued, or you cancel your subscription, all your printed QR codes stop working. Static codes have no such dependency.

Designing QR Codes That Get Scanned

A technically valid QR code that is placed badly, sized too small, or styled poorly will get fewer scans than its potential. Scan rate is a design problem as much as a technical one.

Size and print resolution:

The absolute minimum size for a reliable scan in ideal conditions is approximately 1.5cm × 1.5cm. In real-world conditions — variable lighting, phone distance, scanning angle — the practical minimum is 2cm × 2cm (about 0.8 inches square). For business cards, 2.5cm is a safe target.

For poster-sized materials, a good rule is that the QR code should be scannable from a distance of at least 10× its size. A 5cm QR code should scan from 50cm away. Scale up accordingly.

Always download as SVG for print — raster images (PNG) pixelate at large print sizes. SVG scales infinitely.

Contrast and color:

The minimum contrast ratio between the QR modules and background is 3:1. Dark modules on a white background achieve 21:1 — the maximum. Light modules on a dark background also work, but scan more slowly on older devices.

Avoid pattern or photo backgrounds behind the QR code. Always give it a clean, solid background within the quiet zone.

The quiet zone:

The 4-module white border around all four edges is not decorative — it is required. Scanners look for the quiet zone to locate the finder patterns. Crop it or overlay it with design elements and the scan will fail.

Call to action:

Unlabeled QR codes are less likely to be scanned. Add a brief label: "Scan to view menu," "Scan to save contact," "Scan for more info." The label tells the scanner what will happen, which converts curiosity into action.

Try the QR code generatorSet color, size, and error correction before downloading

QR Code Use Cases by Type

Different QR code types are appropriate for different physical materials and contexts.

Business cards: A vCard QR code saves your full contact details directly to the recipient's phone. Alternatively, a URL QR code linking to your LinkedIn or website gives the scanner your professional profile. Use H-level error correction on a business card — cards are handled.

Restaurant and hospitality: Menu QR codes link to a URL hosting your current menu. Use a stable URL that can be updated without reprinting the codes. Laminate the printed codes for durability.

Event marketing: Calendar event QR codes let attendees add the event to their calendar with one scan. Location QR codes open Google Maps for directions to the venue. Both can appear on the same event flyer.

Retail packaging: URL QR codes on packaging link to product tutorials, warranty registration, recipe ideas, or the product's social media. Use static codes on packaging — the destination URL should not change after printing.

Office and coworking: WiFi QR codes at receptions and meeting rooms let guests connect without asking for the password. Frame them for a professional appearance.

Marketing campaigns: Dynamic QR codes are appropriate for seasonal campaigns where the destination changes, or when scan analytics are needed to measure campaign performance.

Troubleshooting QR Codes That Won't Scan

If your QR code is not scanning reliably, work through this checklist:

1. Size: Is the printed code at least 2cm × 2cm? At smaller sizes, most real-world scanning conditions cause failures.

2. Contrast: Is the contrast between modules and background at least 3:1? Test with a contrast checker.

3. Quiet zone: Is the white border around the code intact? Open the image in an editor and verify the 4-module margin is present on all four sides.

4. Resolution: Was the code printed from an SVG or a high-resolution PNG (at least 300 DPI at print size)? Low-resolution raster images produce pixelated prints that fail to scan.

5. Logo size (if branded): Is the embedded logo covering more than 25% of the QR area? Reduce the logo size.

6. Substrate: Is the code printed on a surface with a texture that breaks up the modules? Try a smooth, coated stock. Is there a varnish over the code that creates glare? Remove it.

7. URL validity: Scan the code and verify the destination URL loads correctly. A QR that scans but leads to a 404 page will appear to "not work" to the scanner.

8. Test on multiple devices: Some older phones scan more slowly. Test on a 2–3 year old Android (not just the latest iPhone) to verify reliability across common devices.

Frequently Asked Questions

Are QR codes free to use?
Yes. QR codes are an open standard (ISO 18004) with no licensing fees or royalties. You can generate, print, and use QR codes commercially without paying anyone. Some QR code generator services charge for features like dynamic codes, analytics, or custom designs — those are service fees, not QR code licensing fees. Static QR codes generated locally are entirely free.
How much data can a QR code hold?
A Version 40 QR code (the largest standard size) can hold up to 7,089 numeric characters, 4,296 alphanumeric characters, or 2,953 bytes of binary data (sufficient for a long URL). Practical QR codes are much smaller — a typical URL QR code uses a Version 3–6 code. The larger the version, the denser the pattern and the harder it is to scan at small sizes.
Do QR codes expire?
Static QR codes never expire — they encode the destination directly and work for as long as the destination URL is active. Dynamic QR codes depend on a redirect service; if the service goes offline or you cancel your subscription, the code stops working. For long-lived print materials, static codes are safer. For campaigns that need updates or analytics, dynamic codes are worth the dependency.
Can I scan a QR code without a special app?
On iOS 11 and later, the built-in Camera app scans QR codes natively. On Android, the default Camera app on most modern devices (2019 onwards) scans QR codes without a separate app. Google Lens, which is built into Android, also scans QR codes. Third-party QR scanner apps are rarely necessary on current devices.
What is the difference between a QR code and a barcode?
A traditional barcode (1D barcode) encodes data in a single row of bars and spaces — it can hold tens to hundreds of characters, typically a product ID. A QR code (2D barcode) encodes data in a grid of modules across two dimensions — it holds thousands of characters and can encode URLs, contact cards, WiFi credentials, and more. QR codes also have built-in error correction that 1D barcodes lack.

Summary

QR codes are a mature, royalty-free, universally supported technology for bridging physical and digital interactions. The fundamentals — choosing the right error correction level, sizing for the print context, keeping URLs short, using SVG for print output, and labeling the code with a call to action — are straightforward once you understand why each decision matters.

The most common failure mode is not technical: it is treating QR codes as an afterthought placed in a corner at the minimum size with no call-to-action label. A well-placed, well-sized, well-labeled QR code on a piece of print material performs reliably and drives real engagement.

Generate your QR codes locally, test on multiple devices before printing, and use static codes for anything that will be printed in quantity or for long-lived use. The tools below cover every QR code type you need.

Try these tools

Related guides

All Guides