Tools

Static vs Dynamic QR Codes: Free Codes That Never Expire

Yasir Rehman
Yasir Rehman
·September 25, 2026·7 min read

A static QR code stores your link, text or Wi-Fi details directly in the black-and-white pattern, so it never expires and doesn't depend on anyone's server. You can make one for free, with no account, in my free static QR code generator — it runs entirely in your browser and exports PNG or SVG.

That's the short answer. The longer one is worth reading if you're about to print a few hundred menus, flyers or product labels, because the difference between static and dynamic codes decides whether those prints still work in two years.

What a QR code actually contains

A QR code is just data drawn as a grid of square "modules". The format was invented in 1994 at Denso Wave in Japan to label car parts, and it's now standardised internationally as ISO/IEC 18004 (Wikipedia).

When your phone scans one, it decodes that grid back into a string of text. That string might be:

a web address (https://example.com/menu)

plain text

a Wi-Fi login (WIFI:T:WPA;S:MyNetwork;P:secret;H:false;;)

an email draft (mailto:hello@example.com?subject=Hi)

a phone number (tel:+15551234567) or SMS (SMSTO:+15551234567:Hello)

a contact card in vCard format

The phone reads the prefix and decides what to do — open the browser, offer to join the network, start a new message. Nothing else is hidden in there. That's why my generator shows you the exact encoded payload next to the preview: what you see is what the scanner gets.

Static vs dynamic QR codes

Static QR codes

A static code encodes your real content. If it's a URL, the URL itself is in the pattern.

It never expires. There's no service in the middle to cancel, rate-limit or shut down.

It can't be edited. If the destination changes, you print a new code.

It's private. Scanning goes straight from the phone to your content. No third party sees the scan.

Dynamic QR codes

A dynamic code encodes a short redirect link owned by a QR service. That service then forwards the visitor to your real destination.

You can change the destination later without reprinting.

You get scan analytics — because every scan passes through their server first.

It only works while the service keeps the redirect alive. If a free trial ends, a plan lapses or the company closes, the printed code stops pointing where you want.

That last point is the one that catches people out. A dynamic code created on a free trial can look fine on the day you print it, then stop pointing where you intended once the trial or plan ends.

Which one should you use?

Use a static code when the content is stable: your homepage, a Wi-Fi network, a contact card, a PDF you host yourself. If you need to change where it points later, point the static code at a URL you control (for example yoursite.com/menu) and change what that page shows. You get the flexibility of a dynamic code without handing the redirect to someone else.

Use a dynamic code only if you genuinely need per-scan analytics from a provider and you're happy to keep paying for it for as long as the print is in circulation.

How to create a free QR code that never expires

Here's the process using the browser-based QR code generator on this site:

Pick the content type. URL, text, Wi-Fi, email, phone, SMS or contact (vCard).

Fill in the details. For a URL you can skip the https:// — the tool adds it. For Wi-Fi, type the network name exactly as it appears on your devices, choose WPA/WPA2/WPA3 for most modern routers, and tick "Hidden network" only if your router doesn't broadcast its name.

Check the encoded payload. It updates live under the preview. Special characters in Wi-Fi names and passwords (\ ; , : ") are escaped automatically, which is one of the most common reasons hand-made Wi-Fi codes fail.

Choose colours carefully. Dark foreground, light background. The tool warns you if the contrast is too low or the code is inverted (light on dark), because not every scanner handles those.

Set error correction. M is a sensible default; more on this below.

Download. PNG for screens, documents and slides. SVG for anything printed — it's vector, so it stays sharp at any size.

Test-scan it before you print more than one copy.

If you're making a Wi-Fi code for guests, it's worth generating a fresh, strong password first with the password generator — the QR code means nobody has to type it anyway.

Getting it right for print

Most failed QR codes aren't a software problem. They're a printing problem. These are the four things I check every time.

Size

Bigger is more forgiving. A common rule of thumb is roughly 2 × 2 cm as a minimum for something held in the hand, and larger for anything scanned from a distance — around one-tenth of the scanning distance is a widely used starting point for posters and signs. Treat those as starting points, not guarantees, and confirm with a real test.

Content length matters too. A long URL or a full contact card produces a denser grid with smaller modules, so it needs more space to scan reliably. Shorter URLs make friendlier codes.

Quiet zone

The blank border around the code isn't decoration. Denso Wave's own guidance says a QR code needs a four-module-wide margin on every side (qrcode.com). Scanners use that empty space to find where the code starts.

The generator defaults the quiet zone to 4 modules. If a designer crops it tight against a busy background, expect trouble.

Error correction

QR codes include redundant data so a partly damaged code can still be read. There are four levels, and each can restore roughly this much of the data (Wikipedia):

L — about 7%

M — about 15%

Q — about 25%

H — about 30%

Denso Wave notes that M is the level most frequently selected, with Q or H suited to dirty environments (qrcode.com). The trade-off is density: higher levels add more modules, so the same content needs a bigger print. My usual choice is M for paper and screens, and Q or H for stickers, packaging and anything outdoors or likely to be scuffed.

Testing before printing

Always test the real thing, at the real size:

Print one copy on the actual paper or material.

Scan it with at least two different phones — ideally one iPhone and one Android — using the built-in camera app.

Scan from the distance people will actually stand at, in the lighting where it'll be displayed.

Confirm the result is exactly right: the correct URL, the network actually joins, the contact card imports with the right fields.

It takes five minutes and saves reprinting a box of flyers.

Privacy: what happens to what you type

Many online generators process your content on their servers, and dynamic QR services by design see every scan: when it happened, roughly where, and on what kind of device. That's the analytics they sell. It also means a third party is sitting between your customers and your content.

My generator works differently. It uses the open-source qrcode JavaScript library right in your browser. Nothing you type is sent to a server — including Wi-Fi passwords and contact details — and the codes it makes are static, so there's no redirect for anyone to track or switch off.

Two honest caveats:

Anyone who scans a Wi-Fi code can read the password. Only display it where you'd happily tell people the password anyway. A separate guest network is a good idea.

QR codes can be abused. Wikipedia's QR code article describes malicious codes and stickers placed over legitimate ones. If your code is in a public place, check now and then that nobody has covered it with their own.

When you need more than a static code

A static QR code solves most everyday needs: menus, Wi-Fi, business cards, event links, product labels. If you find yourself wanting scan analytics, per-campaign links or codes tied into an inventory or ticketing system, that's usually a sign you need a small piece of custom software rather than another subscription. That's the kind of thing I build — have a look at my services if that's where you're heading.

For everything else, the free generator is here whenever you need it, along with the rest of my free developer tools.

FAQ

Q

Do static QR codes ever expire?

No. A static QR code stores its content in the pattern itself, so there's no service that can turn it off. It keeps working as long as the print is readable and the destination (for example your website) still exists.

Q

Can I edit a static QR code after printing it?

No, the content is fixed once it's generated. The practical workaround is to point the code at a URL on your own website and change what that page shows whenever you need to.

Q

Why doesn't my Wi-Fi QR code connect?

Usually the network name or password has a typo, the security type is wrong, or special characters weren't escaped. Check the encoded payload, make sure the SSID matches exactly, and choose WPA/WPA2/WPA3 for most modern routers.

Q

Should I download PNG or SVG?

Use PNG for screens, documents and slides, and SVG for anything printed. SVG is a vector format, so it stays perfectly sharp at any size without blurry edges.

Q

Is it safe to type a Wi-Fi password into an online QR generator?

It depends on the generator. Mine runs entirely in your browser, so the password is never sent to a server — but anyone who scans the finished code can read it, so only display it where you'd share the password anyway.

Found this useful? Share it with your network.

Yasir Rehman

Yasir Rehman

Full-Stack .NET & React Developer

Building production software with .NET, React, and SQL Server. Writing about architecture, integrations, and the lessons learned shipping real systems.

Comments

Leave a comment