# 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.

Source: https://useqr.app/docs/spec/why-longer-urls-make-denser-codes · Last reviewed 2026-08-21 · UseQR is free forever, no signup.

---

## Capacity is a staircase, not a slope

A QR code cannot grow by one module. The standard defines 40 discrete
[versions](/docs/spec/qr-code-versions-1-to-40), 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](/docs/reference/qr-code-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](/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](/docs/how-to/how-to-shorten-a-url-before-making-a-qr-code) 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](/docs/spec/qr-code-density-and-scan-distance) page has the
  arithmetic, and the [size calculator](/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

- https://useqr.app/url
- https://useqr.app/validate
- https://useqr.app/size-calculator
