The short answer
A QR code does not have a URL of its own — it is a printed pattern that stores a piece of text, and that text is usually a URL. Whether that URL is the real destination or a short redirect link is the whole story, and it is the difference between a static and a dynamic QR code. A static QR encodes the full destination URL directly, so a scan opens that exact page forever with no middleman. A dynamic QR encodes only a short redirect URL, and the real destination lives on a server the code points at — the scan hits the short URL, the server replies with a 301 redirect to the real page, and the phone follows it automatically.
That single difference — whether the URL printed in the code IS the destination or just points at it — is what people are really asking when they wonder whether a QR code “needs a URL” or “uses a redirect.” It is also why the static-vs-dynamic choice matters: a static code is permanent and free but cannot be repointed, a dynamic code is editable and trackable but depends on a server staying alive. Our static vs dynamic QR guide covers the trade-off in full.
A static QR encodes the full destination URL directly
When you generate a static QR code for a URL, the entire destination — for example https://example.com/menu — is encoded character by character into the grid of modules. There is no redirect, no lookup, and no server involved in the scan. The phone camera reads the text straight from the image, recognises it as a URL, and opens that exact page. Every scan of that printed code, now and decades from now, opens the same URL as long as the page itself still exists.
This is what makes a static code free, private, and immortal: nothing stands between the print and the destination, so nothing can be turned off, repointed, or surveilled. The trade-off is that the URL is baked into the ink — to change where the code goes you generate and reprint a new one, because there is no server to update. The data is the pattern, as our where is a QR code stored guide explains in depth.
A dynamic QR encodes a short redirect URL
A dynamic QR code does not store your real destination. It stores a short redirect URL — for example r.example.com/abc — that lives on a server you control. The real destination (your menu, your campaign page, your app store link) lives in a mapping table on that server, not in the printed code. The scan is a three-step dance: the phone reads the short URL, the browser requests it, and the server replies with an HTTP 301 redirect pointing at the real destination, which the phone follows automatically and instantly.
Because the mapping from /abc to the real destination lives on the server, you can change it at any time without touching the printed code — the same square of ink can point at one page today and a different page tomorrow. That editability is the entire reason the dynamic tier exists, and it is also the basis of scan analytics: because every scan passes through the one redirect server, the server can count each request. Our qr code redirect guide walks through the mechanic step by step, and our dynamic QR code guide goes deeper into the powers and costs.
Static vs dynamic: where the URL lives
The clearest way to see the difference is to ask, for each kind of code, where the real destination URL actually lives. The table below lays it out side by side.
| Question | Static QR code | Dynamic QR code |
|---|---|---|
| What URL is printed in the code? | The full destination URL itself (e.g. https://example.com/menu). | A short redirect URL only (e.g. r.example.com/abc). |
| Where does the real destination live? | In the printed pattern — the code IS the destination. | On a server, in a mapping table the redirect maintains. |
| Is there a redirect on scan? | No. The phone opens the printed URL directly. | Yes. Scan → short URL → 301 redirect → destination. |
| Can the destination change after printing? | No — reprint to change it. | Yes — edit the server mapping, no reprint. |
| Can scans be counted / analyzed? | No — no server in the scan path. | Yes — every scan passes through the redirect server. |
| What happens if a dependency fails? | Nothing — the code has no dependency; it scans forever. | Every printed copy stops working at once if the server or subscription lapses. |
Why the difference matters: editable and tracked vs permanent
The choice between a direct link and a redirect is not cosmetic — it changes what you can do after the code is printed. With a static direct link the destination is permanent: you cannot fix a typo, swap a lunch menu for a dinner menu, or count how many people scanned the poster, because the URL is locked into the ink and no server ever sees the scan. With a dynamic redirect the destination is editable and every scan is logged, so you can repoint a printed campaign, rotate A/B destinations, route iOS vs Android users to different app stores, and read a dashboard of scan count, device, location, and time.
The rule of thumb is to start static and step up to dynamic only when one of its powers is the actual lever. A guest WiFi sign, a business card vCard, a one-off event invite, or a permanent product label all want the free, private, immortal static code. A restaurant menu that changes twice a day, a marketing flyer that needs A/B testing, or packaging that must point at the latest information after a rebrand all want the editable, trackable dynamic redirect. The static-vs-dynamic-qr guide covers the full decision.
The link-rot caveat for dynamic codes
A redirect is a dependency, and a dependency can fail. If the redirect server goes down, the short domain is sold, the provider shuts off your account, or the subscription lapses, every printed dynamic code stops working at once — a far worse failure mode than a static code slowly going stale one destination at a time, because a static code only breaks if the destination page itself moves or disappears.
That single point of failure is the price of editability and tracking, and it is why the defensive checklist matters: point dynamic codes at a domain you own (not the provider’s branded short domain), choose a provider with longevity, and keep a static fallback for anything that must keep scanning decades out. Our do QR codes expire guide covers the full link-rot picture, and the qr code redirect guide covers the redirect mechanic in detail.
How QRForge handles it
QRForge’s free generator builds static QR codes by default — the full destination URL is encoded directly into the pattern, the code scans forever with no server, and there is no redirect to rot. That is the deliberate right default for the vast majority of prints: free, private, immortal, and with nothing to fail. The planned paid dynamic tier replaces that static destination with a short redirect URL on a server you control, unlocking an editable destination, scan analytics, expiry, and routing from the single redirect mechanic — with the link-rot defenses above designed in from day one. Start static to prove the placement, and step up to dynamic only when editability or measurement is the actual lever; the qr-code-storage and qr-code-redirect guides explain where the data lives either way.
Frequently asked questions
Does a QR code need a URL?
Not necessarily — a QR code stores text, and that text can be a URL, a WiFi credential string, a vCard, an SMS, an email, an event, or plain text. Only URL codes involve a destination page at all. But if your QR does point at a web page, then yes it encodes a URL — either the full destination URL directly (a static code) or a short redirect URL whose real destination lives on a server (a dynamic code).
What URL does a QR code use?
A static QR code uses the full destination URL itself — that exact URL is printed in the pattern and opened directly on every scan. A dynamic QR code uses a short redirect URL (for example r.example.com/abc) that lives on a server; the real destination is stored in the server’s mapping, so the code can be repointed without reprinting.
Can a QR code link to anything?
A QR code can encode any text, so it can link to any URL, open a WiFi join screen, add a contact, draft a text or email, or add a calendar event. For web links specifically, it can point at any page — either directly (static) or through a redirect (dynamic). What it cannot do is change where it points after printing unless it is a dynamic redirect code.
What is the difference between a QR code redirect and a direct link?
A direct link (static) prints the full destination URL in the code, so the phone opens that exact page with no middleman — permanent, free, but uneditable. A redirect (dynamic) prints only a short URL that the phone requests, and a server replies with a 301 to the real destination — editable and trackable, but dependent on the redirect server staying alive.