Why Free QR Codes Show Ads, and How to Check Before You Print
Someone scans the code on your table tent. Before your menu appears, their phone loads a full-screen advertisement with a small countdown in the corner. Three seconds, maybe five. Then your menu.
You did not agree to that, you cannot see what was advertised, and the customer has no idea it was not your doing.
This is an interstitial, and it is one of the ways a free QR code pays for itself. Here is what it actually is, why it exists, and the ten-second test that tells you whether any given provider does it, including this one.
What an interstitial is
A dynamic QR code does not contain your destination. It contains a short link that a service resolves at scan time, which is exactly what makes the code editable after printing. Every scan therefore passes through somebody's server.
That server has two ways to answer.
It can redirect. The phone asks for the short link, the server replies with an HTTP redirect and a Location header naming your destination, and the phone goes there. There is no page. The response has no body to put anything in. The whole exchange is invisible and takes a few hundred milliseconds.
It can serve a page instead. The phone asks for the short link and gets back an HTML document: an advertisement, a countdown, a "Continue" button, sometimes the provider's own branding and upsell. Only after that does the visitor reach your destination.
The second one is the interstitial. It is not a bug or a slow redirect. It is a deliberately inserted page, and it is the single most valuable piece of real estate a QR code provider owns, because every scan of every customer's code passes through it.
Why providers do it
Resolving a scan costs money. Not much per scan, but it is real infrastructure that has to stay up for as long as the code exists, which for printed material can be years after anyone stopped paying.
Somebody funds that. There are only a few options:
- Subscriptions. Customers who need more than a handful of codes pay, and that covers the free tier. This is what we do.
- Ads on the scan. The free tier funds itself by monetising other people's customers.
- Expiry. Codes simply stop working when the trial ends, which converts printed material into leverage. (More on what actually makes a code stop working.)
- Scan caps. A monthly allowance, after which the code goes dark until you upgrade.
None of these are dishonest in principle. The problem with the second one is who pays it: not you, the person scanning. You will probably never see your own interstitial, because you test your code once on the day you make it and never scan it again.
Why it matters more than it sounds
An ad is three seconds. The reasons it is worth avoiding are less obvious than the delay.
You do not control what is advertised. The inventory is programmatic. A restaurant menu, a church bulletin, a school flyer, a product on a shelf, all of them can end up fronted by whatever the ad network served that day.
It reads as yours. Nothing on the page tells the customer that a third party inserted it. Your code, your table tent, your ad, as far as they can tell.
It is a drop-off point. Every extra step between a scan and the content loses people, and a countdown is a particularly good place to give up and put the phone down.
It compounds with print. You commit to a QR code once and live with it for the life of the print run. Discovering the interstitial after the flyers are out means either reprinting or upgrading, which is precisely the position the design puts you in.
How to test any provider in ten seconds
Do not take anyone's word for it, including ours.
With a phone
Scan the code and watch closely. Anything that appears before your own destination is an interstitial, even if it is on screen briefly. Watch the URL bar too: a short link that lingers rather than flicking past is a sign a page was served rather than a redirect.
Test on a cold connection, not the office WiFi, and ideally not the account owner's phone. Some providers suppress the ad for logged-in users.
With a terminal
This is the definitive version, because it shows you what the server actually returned:
curl -I https://qr.sunriseqr.com/demo
Read the first line of the response.
HTTP/2 301orHTTP/2 302with aLocation:header pointing at the destination. This is a clean redirect. There is no page, so there is nothing to advertise on.HTTP/2 200withcontent-type: text/html. The server returned a document. Something is being shown to your visitors on the way through. It may be an ad, a branded splash, or a consent screen, but it is a page, and it is worth finding out which.
Swap in any provider's short link and run the same command. It works on all of them.
What we do
Every SunriseQR dynamic code answers with a redirect and nothing else, on every plan including the free one. Not "ad-free while you are a customer", and not "ad-free above a certain tier": there is no page in the path at all, so there is nowhere for an ad to go.
That is not a promise you have to trust. It is the command above, and you can run it on our demo code right now.
The rest of the free plan is built the same way: five dynamic codes that stay editable, unlimited static codes, full scan analytics, no cap on scans, no watermark on the artwork, and codes that keep resolving whether or not you ever pay us. Moving to a cheaper plan later never breaks a code you already printed.
The short version
- An interstitial is a page inserted between the scan and your destination, usually carrying an ad and a countdown.
- It exists because resolving scans costs money, and somebody has to fund it. Ads mean your customers fund it.
- It is most common on free and entry-level plans, which is the worst place for it, because that is where the codes going onto printed material are made.
- Static codes never do it, because they never contact anyone. They also cannot be edited or tracked, so that is not a fix. (Static vs dynamic, explained.)
curl -Ithe short link. A302is clean, a200with HTML is a page, and now you know which one you bought.
Choosing between providers on more than this one axis? The full list of questions worth asking before you commit to print.