Skip to content
UseQR

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.

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