How to make a QR code you can change later

A QR code encodes an address, not content. Point it at a page you control and the printed code is permanent, whatever changes behind it.

A QR code encodes an address and nothing else. What the person sees after scanning is whatever that address serves, which means a code pointing at a page you control is a permanent code.

That distinction decides whether printed codes are an asset or a consumable.

A small printed card with a QR code and a short label beneath it.
A small printed card with a QR code and a short label beneath it.

This guide covers why the target matters more than the code, sizing for distance, the things that break codes in practice, and why a label is not optional.

The code is permanent, the page is not

A QR code cannot be edited after printing. The pattern is the address.

That sounds like a limitation and it is the opposite, provided you choose the target well.

Code points at Changing what people see
A page you control Edit the page
A PDF file New file, new address, reprint
A specific document version Reprint
A third-party service link Depends on them existing
A phone number or plain text Reprint

Point it at a page and a laminated table code, an engraved sign or a printed thousand-card run keeps working through every menu change, price rise and seasonal update.

Restaurants that print codes pointing at a PDF end up reprinting. The ones pointing at a page do not. That is the whole practical difference.

Size for the distance

The working rule is that a code needs to be about one tenth of the distance it will be scanned from.

Read from Minimum code size
30 cm, a card in the hand 3 cm
50 cm, a table or menu 5 cm
1.5 m, a window or a wall sign 15 cm
3 m, a poster across a room 30 cm

Undersizing is the most common failure and it is invisible when you test it, because you test by holding your phone close to the screen you designed it on.

What actually breaks codes

Four things, in roughly this order of frequency.

The quiet zone. A code needs a clear margin of about four modules on all sides. Artwork, a border, or text pushed up against the edge stops readers locating the pattern.

Contrast and polarity. Dark pattern on light background. Inverted codes work on some readers and not others, and a code in a light colour on a dark background fails often enough to avoid entirely.

Printing over an image. A code on top of a photograph has variable contrast across itself, which is exactly what a scanner cannot handle.

Curved or glossy surfaces. A code on a bottle or under gloss laminate distorts or reflects. Matt finish, flat surface.

.qr {
  display: block;
  width: min(60vw, 260px);
  height: auto;
  background: #fff;
  padding: 12px;          /* the quiet zone */
  border-radius: 8px;
}

For an on-screen code, force the white background even if the page supports dark mode. A dark-mode inverted code is a code that fails at the door.

Use SVG where you can, because it stays sharp at any print size and weighs almost nothing. Background in SVG in HTML.

Label it, always

An unlabelled QR code is a square that people walk past.

Three or four words is enough, and they should say what happens rather than instructing. "Today's menu" works. "Scan me" does not, because it tells the reader what to do without telling them why.

The same code at three sizes with the scanning distance each one suits.
The same code at three sizes with the scanning distance each one suits.

Redirection services, and what they cost

Services that generate codes pointing at their own address, then redirect, let you change the destination after printing and give you scan statistics.

Both are real benefits. The cost is that your printed codes now depend on that company continuing to operate and continuing to honour the redirect. Codes printed on physical objects outlive a lot of companies.

If you point the code at your own address instead, you get the same ability to change what people see, because you control the page. You lose the scan statistics, which you can partly recover from your own analytics.

Generating the code

For a static code pointing at your own address, generation is straightforward and needs no service. Practical notes are in HTML file to QR code and convert HTML to QR code.

Keep the encoded address short. Long addresses produce denser patterns that need to be printed larger to scan reliably.

.html file sitting on your disk drop Hosted page served over https get link Shareable URL opens on any device
A file on disk becoming an address that opens on any device.

Put it at an address

Point the code at a page you control, size it for the distance it will be read from, keep the margin clear, and label it in a few words.

Then change the page whenever you need to. The printed code stays where it is.

Questions people ask

Can I change what a QR code points to after printing it?

Not the code itself, because the address is encoded in the pattern. But if that address holds a page you control, you can change everything the code shows. That is the difference between printing a code once and reprinting every season.

How big does a printed code need to be?

Roughly one tenth of the scanning distance. A code read from half a metre needs about 5 cm; one on a poster read from three metres needs about 30 cm. Too small is the most common reason codes fail, and people blame the code rather than the size.

Do I need a QR code generator service?

Not for a static code. Those services are useful when they add redirection or tracking, and they also mean your code depends on their business continuing to exist. A code pointing at your own address has no such dependency.

Why does my code fail to scan sometimes?

Usually contrast, size, or the quiet zone. Codes need a clear margin around them, dark on light rather than light on dark, and enough physical size for the distance. Printing a code over a photograph is the most reliable way to break one.

Should I add a label?

Yes. A code with no words beside it is ignored, because nobody scans an unlabelled square. Three or four words saying what happens when they scan it is the difference between a used code and a decorative one.

Keep reading