QR Code two-dimensional matrix example

2D matrix

QR Code Matrix Guide: Versions, ECC M & Quiet Zones

QR Code is a 2D matrix symbology. Capacity grows with version size; resilience grows with error-correction level. Phones decode it well for URLs and text -- retail POS still usually needs a GS1 linear (or approved 2D) product identifier.

Generate QR Code

Versions, ECC, quiet zone

V

Versions

Version 1 is 21x21 modules; higher versions add modules so longer payloads fit.

M

ECC levels

L / M / Q / H trade capacity for damage tolerance. Qrivio uses level M.

4

Quiet zone

Keep at least four modules of clear space on every side. Cropping PNG flush to black modules is a classic fail.

1

Single only

On Qrivio, QR count is forced to 1 -- no sequential batch of matrix symbols.

Capacity intuition by mode

QR capacity is not a single fixed character count. It depends on version, ECC level, and encoding mode. Numeric packs digits most densely; alphanumeric covers a limited uppercase/punctuation set more efficiently than full byte mode; byte (8-bit) mode is what most URLs and mixed text fall into.

Short stable path

https://example.com/p/abc

Often fits a small version at ECC M. Prefer shortening the payload when the printed square cannot grow.

Tracking-parameter bloat

?utm=...&click=...

Long query strings jump versions, making each module tinier if print size stays fixed.

Damaged-code recovery vs ECC

What ECC does Lets a reader reconstruct data when modules are missing, dirty, or partly covered -- up to a fraction that depends on the level.

L vs H L recovers the least damage but stores more data; H recovers more but consumes capacity for parity.

Why M Practical middle ground for inserts, posters, and packaging marks with light wear.

Not a license ECC does not forgive missing quiet zones, low contrast, or extreme undersizing. Clean M with four-module margins usually beats crowded H printed too small.

URL vs plain text

Payload Phone behaviour Watch-outs
URL (https://...) Offers to open the browser / app Link rot, tracking parameters, HTTP vs HTTPS, long URLs inflate version
Plain text / ID Shows the string; your app must interpret it Offline-friendly if the app has local data; not a GTIN at checkout

Common URL mistakes

Missing scheme Encoding www.example.com/... without https:// often yields plain text, not a tappable link.

HTTP vs HTTPS Prefer https:// unless you have a deliberate intranet scheme. Browsers warn on insecure redirects.

Unstable vanity domains If marketing retires the domain, every printed pack becomes dead art. Own the redirect target.

Pasted line breaks Spaces, soft wraps, or HTML entities produce hard-to-debug no-opens.

When QR coexists with EAN -- and when not to replace

Consumer packs often carry an EAN-13 or UPC-A for POS and a separate QR for instructions, loyalty, or brand content. That is coexistence, not replacement: the till still needs the retail GTIN carrier your trading partners expect.

Coexist

EAN/UPC for checkout + QR for digital content. Keep quiet zones from colliding.

Do not swap

Do not replace an assigned GTIN linear with a marketing URL QR, or print a QR that merely contains GTIN digits unless receiving systems are built for that 2D workflow.

Qrivio generator limits

Payload cap Roughly 1000 characters. Stay well under for packaging marks; long documents belong behind a short URL.

ECC M fixed If a regulated artwork spec requires another level, use a toolchain that exposes that control -- and still keep the four-module quiet zone.

No sequential QR Count is forced to 1. For linear batches up to 10, see the multiple barcodes how-to.

Formats PNG, JPG, or SVG. Prefer SVG for print vendors; do not crop flush to the modules.

2026 Copyright © Qrivio Barcode | All rights reserved.