/// GUIDES

Static vs Dynamic QR Codes — Which One Do You Need?

Static QR codes never expire and cost nothing to keep alive. Dynamic ones are editable and trackable but depend on a vendor. How to choose, and the hybrid option.

Document automation engineers, ASHDOCS
Published:
Last updated:

A static QR code contains your data directly — scan it and the phone reads exactly what was encoded. A dynamic QR code contains a short URL belonging to a QR service, which redirects to your real destination. That single difference determines everything else: whether the code can be edited after printing, whether you get scan analytics, and whether the code still works in five years.

How a QR code actually stores data

The black and white squares are modules encoding your payload plus Reed–Solomon error-correction data. You choose the correction level when you generate:

LevelApprox. recoverable damageTrade-off
L~7%Smallest code, least resilient
M~15%Sensible default
Q~25%Needed if you overlay a logo
H~30%Most resilient, densest pattern

Higher correction means more modules for the same data, so the code becomes visually denser and needs to be printed larger. This is also why a logo in the centre isn't magic: the logo destroys modules, and error correction is what lets the code survive it. Overlay a logo without raising the level to Q or H and you produce a code that scans on your desk and fails on a wall.

Static QR codes

The destination is baked in. Nobody can change it — including you — and nobody can switch it off.

Good for: WiFi credentials, vCards, plain text, permanent product pages, anything printed on something that will outlive your vendor relationships. Free to generate, free forever, no account, no dependency.

Bad for: anything whose destination might change, and any case where you need scan counts.

Dynamic QR codes

The printed code points at qr-service.example/abc123, which redirects. Edit the destination in a dashboard and every printed copy now goes somewhere new. You also get scan counts, timestamps, rough location and device data.

The catch is dependency. That short URL belongs to a third party, and if the service shuts down, changes its domain, or moves redirects behind a paywall, your printed codes stop working — restaurant menus, packaging, signage, business cards, all dead at once. "Free dynamic QR" offers deserve particular scrutiny: redirects cost money to host indefinitely, and free tiers that expire after a trial are common. Note that plenty of people search specifically for QR codes that don't expire, which tells you how often this bites.

The hybrid worth knowing about

Generate a static QR code that points to a URL on your own domainyourdomain.com/r/menu — and handle the redirect yourself.

You get the editability of a dynamic code (change where /r/menu points whenever you like), analytics from your own server logs, and no dependency on anyone else's uptime or pricing. The cost is that you must keep your domain and redirect route alive, which you were doing anyway. For anything printed at volume or intended to last, this is usually the right answer.

Generating them in bulk

Event badges, asset tags, table numbers, per-product labels — these need hundreds of codes, not one. The pattern is a loop over your data:

curl -X POST https://www.ashdocs.com/api/v1/tools/qr-code \
  -H "X-API-Key: ash_live_..." \
  -H "Content-Type: application/json" \
  -d '{"content":{"type":"url","value":"https://example.com/asset/1042"},
       "options":{"format":"svg","error_correction":"Q","size_px":600}}'

The QR Code API accepts up to 100 items per request and returns a ZIP, so a thousand asset tags is ten calls rather than a thousand. Choose SVG when the codes go to print — vector edges stay crisp at any size — and PNG for screens. For a single code, the free QR code generator is quicker than writing the call.

Before you print anything

Test the actual artwork with more than one phone, at the size and distance people will really use. Keep the quiet zone — at least four modules of blank margin — clear of borders and text. Keep contrast high and dark-on-light; inverted or low-contrast codes fail on older scanners. And put a short human-readable URL beside the code, because a meaningful proportion of people will type it instead.

FAQ

Do QR codes expire? Static ones don't — the data is in the code. Dynamic ones depend on a redirect service; if that service ends or paywalls the link, printed codes stop working.

Can I change where a QR code points after printing? Only if it's dynamic, or if it's a static code pointing at a redirect URL you control. A static code aimed straight at a destination is permanent.

Why does my QR code fail to scan with a logo on it? The logo covers modules. Raise the error-correction level to Q or H before adding one, keep the logo under roughly 20–30% of the area, and retest at print size.

PNG or SVG? SVG for print — it scales without softening the module edges. PNG for screens and email.

How do I generate hundreds of QR codes at once? Use an API with bulk support: send an array of payloads and get an archive back, rather than repeating a manual export.

Generate one free in your browser with the QR code generator, or get an API key and generate a thousand.