Skip to content
UseQR
ESC

↑↓ MOVE↵ OPEN48 PLACES

QR code type

URL QR codes — how they work

A URL QR code stores a web address as plain text inside the code. Scanning it opens that address in the phone's browser. Nothing is redirected through a third party, the link never expires, and the only thing that can break it is the URL itself going dead.

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

What is actually stored

Nothing clever. The bytes inside the code are the URL, character for character:

https://example.com/spring-sale

Scanners recognise a leading scheme (https:, http:, mailto:, tel:) and hand the string to the operating system, which opens the default browser. There is no registry, no lookup, and no server in the middle. This is why a static URL QR code cannot expire: it is a printed copy of your link, not a pointer to one.

If you type a bare domain, UseQR prepends https:// before encoding. That matters — a code containing example.com with no scheme is treated as plain text by many scanners and shows the user a string instead of opening a page.

Length drives density, and density drives minimum size

Every extra character adds modules. Roughly, at error-correction level M:

URL length QR version Modules Minimum print width at 30 cm
25 chars 2 25 × 25 ~2.0 cm
50 chars 3 29 × 29 ~2.3 cm
100 chars 5 37 × 37 ~3.0 cm
200 chars 8 49 × 49 ~3.9 cm
400 chars 12 65 × 65 ~5.2 cm

A 400-character tracking URL produces a code with more than six times the module count of a short one, and every module has to survive your printer, your substrate and the scanning camera. Long UTM strings are the single most common cause of a code that "worked on screen but not in print".

Two fixes, in order of preference: shorten the path on your own domain (example.com/sale rather than example.com/campaigns/2026/spring/landing?...), or put the UTM parameters on a short link you control. Avoid third-party shorteners for print — if that service disappears, so does your code.

Uppercase is not a trick, it is a real saving

QR codes have an alphanumeric encoding mode that covers digits, uppercase A–Z, space and a handful of symbols at 5.5 bits per character, versus 8 bits in byte mode. A URL written entirely in uppercase can therefore encode about 45% more characters in the same version.

HTTPS://EXAMPLE.COM/SALE works because schemes and hostnames are case-insensitive. Paths are not: /Sale and /SALE are different resources on most servers. Only uppercase the scheme and host unless you know your server is case-insensitive on paths.

What breaks a URL QR code

  • The destination dies. The code is fine; the page isn't. Point print codes at a path you control and can redirect later, not at a campaign URL you will delete.
  • A third-party shortener shuts down. Every printed code that used it dies at once.
  • The URL is too long for the printed size. See the table above.
  • Someone re-typed the URL by hand into a design tool. Always generate from a copied link, then scan the proof before it goes to press.

FAQ

Does a URL QR code expire?

No. A static URL QR code contains the address itself, so it works for as long as that address works. Nothing depends on UseQR continuing to exist.

Can I change where it points after printing?

Not with a static code — the URL is physically in the pattern. If you need to change the destination later, point the code at a URL on your own domain and change the redirect server-side. That gives you editability without depending on anyone else's platform.

Only one you control. A shorter URL genuinely produces a less dense, more scannable code, but a third-party shortener adds a permanent dependency and a redirect that some corporate networks block.

Do I need https?

Yes. Modern browsers warn on plain http, and some scanners refuse to open it silently. UseQR prepends https:// when you leave the scheme off.

Try it — free, no signup