Skip to content
UseQR
ESC

↑↓ MOVE↵ OPEN48 PLACES

Spec & internals

Why longer URLs make denser QR codes

QR versions step in fixed sizes, each adding four modules per side, and capacity boundaries at level M fall at 14, 26, 42, 62, 84 and 106 bytes. A 30-character URL fits version 3 (29 × 29 modules); a 90-character URL needs version 6 (41 × 41) — exactly twice the modules.

View as MarkdownPaste this page into any AI assistant — it is plain, portable Markdown.

Capacity is a staircase, not a slope

A QR code cannot grow by one module. The standard defines 40 discrete versions, and each version is exactly four modules wider and taller than the last: version 1 is 21 × 21, version 2 is 25 × 25, up to version 40 at 177 × 177. When your payload exceeds a version's capacity, the encoder jumps to the next step. There is nothing in between.

At error correction M, the byte-mode boundaries for the first few versions are:

Fits up to Version Grid Total modules
14 bytes 1 21 × 21 441
26 bytes 2 25 × 25 625
42 bytes 3 29 × 29 841
62 bytes 4 33 × 33 1,089
84 bytes 5 37 × 37 1,369
106 bytes 6 41 × 41 1,681

(Verified against a real encoder; the full grid is in the capacity table.)

A worked example

Take the same URL at 30 and at 90 characters, both at level M:

  • 30 characters → version 3, 29 × 29 = 841 modules
  • 90 characters → version 6, 41 × 41 = 1,681 modules

Tripling the character count here exactly doubles the module count. Printed at the same physical size, every module in the 90-character code is 29/41 ≈ 71% the width of its counterpart — which means the camera must resolve detail 1.4× finer to read it. That is the whole story of "my QR code looks so busy": density is a direct, stepped function of payload length.

Why one character can matter

Because capacity is a staircase, a single character can push you over a boundary. A 42-byte URL sits at version 3; a 43-byte URL is version 4. Near a boundary, trimming one query parameter or shortening one path segment buys a visibly simpler code. Far from a boundary, trimming does nothing until you reach the next step down.

/validate reports the selected version and how many bytes of headroom remain before the next jump — useful when deciding whether shortening is worth the effort.

What this means in practice

  • Trim before you style. Removing https://www. (keep https:// — it is required for the link to work, but www. often is not) and tracker parameters routinely drops a version or two.
  • Short domains pay off. Every character of the domain is paid on every code you print. A dedicated short URL can cut a 90-character link to under 30 — at the cost of depending on the shortener staying alive.
  • Uppercase can help, narrowly. A payload made only of digits, capitals and $%*+-./: uses alphanumeric mode at 5.5 bits per character instead of 8. Most real URLs contain lowercase and do not qualify.
  • Denser codes need more space. If you cannot shorten, compensate physically — the density and scan distance page has the arithmetic, and the size calculator does it for you.

Note that raising error correction has the same stepping effect in the other direction: the same 90-character URL that is version 6 at M becomes version 9 at H. Density is a budget shared between payload and redundancy.

FAQ

Why does my QR code look so dense?

Your payload is long enough to force a high version. Every capacity boundary crossed adds four modules per side, so a 90-character URL produces a 41 × 41 grid where a 30-character one needs only 29 × 29. Shorten the URL or print larger.

Does removing https:// make a smaller QR code?

Do not remove it — many scanners will not treat the result as a link. Remove www., tracking parameters and unnecessary path segments instead; near a version boundary even a few characters can step the code down a size.

How long can a URL be in a QR code?

Technically up to 2,953 bytes. Practically, under about 50 characters keeps the code at version 4 or below at level M, which scans well at small print sizes. Beyond roughly 100 characters, density starts costing you scans.

Do capital letters make QR codes smaller?

Only if the entire payload fits the 45-character alphanumeric set — digits, capitals, space and $%*+-./:. Such payloads encode at 5.5 bits per character instead of 8. A normal mixed-case URL does not qualify and encodes in byte mode.

Try it — free, no signup