# Put a short URL next to every QR code

> Print a short, readable URL directly under every QR code. It rescues users with broken cameras, screen-reader users, and anyone photographing the page for later, and it costs one line of type. Keep it under about 25 characters, lowercase, with no query strings — a URL nobody can retype is not a fallback.

Source: https://useqr.app/docs/design/qr-code-next-to-a-short-url-fallback · Last reviewed 2026-08-21 · UseQR is free forever, MIT licensed, no signup.

---

## Belt and braces, for one line of type

A QR code is the fast path; the printed URL under it is the path that always works. The
pair costs a single line of typesetting and rescues a surprising range of readers:

- **Anyone whose scan fails** — cracked lens, dim light, a code damaged in print.
- **Screen-reader and low-vision users**, for whom the URL is the only usable channel on
  paper — the print equivalent of [alt text](/docs/design/qr-code-alt-text-and-screen-readers).
- **People who photograph the poster** to deal with later; the URL survives in the photo
  at sizes where the code no longer decodes.
- **The cautious.** A visible destination lets people judge where the code leads before
  scanning — the exact advice security guides give (see
  [are QR codes safe](/docs/security/are-qr-codes-safe)).
- **Feature-phone and desktop readers** who meet the design somewhere a scan is impractical.

## What a good fallback URL looks like

The fallback must survive being retyped from memory of a photo, on a phone keyboard.
That sets hard requirements:

| Property | Target |
|---|---|
| Length | **≤ ~25 characters** including domain |
| Query strings | none |
| Case | all lowercase |
| Ambiguous characters | avoid 0/O and 1/l/I collisions |
| Depth | one path segment, e.g. `example.com/menu` |

The arithmetic is unforgiving: a 68-character campaign URL with
[UTM parameters](/glossary/utm-parameter) takes half a minute of error-prone phone typing;
`example.com/spring` takes a few seconds. If your canonical URL is long, set up a short
redirect path on your own domain first — the reasoning and the pitfalls of third-party
[short URLs](/glossary/short-url) are covered in
[shortening a URL before making a QR code](/docs/how-to/how-to-shorten-a-url-before-making-a-qr-code).

One honest trade-off: teams often put UTM parameters in the QR payload while printing the
clean URL, as described in
[adding UTM parameters to a QR code](/docs/how-to/how-to-add-utm-parameters-to-a-qr-code).
That works, but typed visits then arrive untagged — your scan analytics will undercount by
whatever fraction of readers typed instead of scanned.

## Laying the pair out

Set the URL **directly beneath the code, centred with it**, outside the
[quiet zone](/glossary/quiet-zone) but inside the same visual block, so eye and camera
treat code, label and URL as one unit. Sizing follows the same distance logic as the code:
an x-height of 1.5–2 modules keeps the URL readable at roughly the distance the code
scans — the derivation is in [typography pairing](/docs/design/qr-code-typography-pairing).
Choose a face where 0/O and 1/l are distinguishable; a URL that cannot be read accurately
cannot be typed accurately.

## When the URL should win outright

If the audience is at a desk, on the same device as the content, or the destination is
easy to say aloud, the URL alone may be the better design and the code is clutter — the
cases are catalogued in
[when not to use a QR code](/docs/basics/when-not-to-use-a-qr-code). The fallback pattern
is for genuinely cross-device, physical-world placements: posters, packaging, menus,
signage. There, run both, and [verify the code decodes](/validate) before anything goes
to print.

## FAQ

### Should I put the URL under a QR code?

Yes, whenever the design is printed or displayed in public. It costs one line of type and
provides the only access path for failed scans, screen-reader users, people photographing
the page, and anyone who wants to see the destination before scanning.

### How long should the fallback URL be?

Under about 25 characters including the domain, with no query strings and no mixed case.
The test is whether someone can retype it on a phone keyboard from memory of a photo
without error.

### Does a printed URL hurt QR tracking?

If the QR payload carries UTM parameters and the printed URL is clean, typed visits arrive
untagged, so scan analytics undercount slightly. Most teams accept this; the alternative —
printing the tagged URL — makes the fallback effectively untypeable.

### Where exactly should the URL go?

Directly below the code, centred, outside the four-module quiet zone but within the same
layout block. Above the code also works; beside it tends to separate the pair visually and
wastes width in narrow layouts.

## Try it

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