Skip to content
qrcodegenerator.in
THE ANSWER, AND WHAT MAKES IT TRUE

A QR code generator without ads

No advertising in the scanner journey, ever — an architectural rule with a test that greps every interstitial for the words.

Updated · Reviewed by the qrcodegenerator.in team

Make a static code hereNo account, no watermark

QR content type
No account, no watermark, no scan limit on a static code.
v225×25 modulesbyteEC-M26/28mask 2
4/4 4 of 4 checks passHow we measure (opens in a new tab)
BEFORE YOU DECIDE

Worth knowing before you reprint anything

No script and no cookie on the redirect path either

The scanner journey does not run our JavaScript or set anything on the device. A redirect never waits on analytics or billing, and the raw IP never leaves the edge.

The free tier is not ad-supported

Free static codes carry no watermark and no interstitial. There is no server in a static code's path to insert one.

Ordering is not an advertising channel either

A registry that cannot say "sponsored" can still put whoever pays first. The ask panel sorts by id, so the order is ours and it is fixed.

THE FACTS

The short version, in 4 facts

The ads that matter are the ones after the scan
An interstitial carrying somebody else's promotion, or a "powered by" line, on a code you printed and handed out. That surface belongs to neither of you.
No advertising in the scanner journey, ever
One of four architectural rules this product does not trade away, on every tier including free.
Enforced by a test rather than a policy
Every interstitial the redirect Worker can serve is checked on each release for "advert", "sponsor", "upgrade to" and "powered by qr", and asserted to ship no script and set no cookie.
No watermark on a free code either
Nothing is stamped on the image, and a static code has no server in its path that could add one later.
HOW IT WORKS

Enforced by a test, not by a policy

Every interstitial the redirect Worker can serve is checked on every release: none contains "advert", "sponsor", "upgrade to" or "powered by qr", on any tier. The same test asserts they ship no script and set no cookie. The assistant registry that feeds the ask panel is held to four fields — id, label, method, url — and an entry carrying a promotional field is refused whole rather than trimmed and shown.

Held up byapps/redirect/test/interstitials.test.ts · packages/gates/test/ask-targets.test.ts

STEP BY STEP

How to check any generator for this yourself

  1. Make a code with the free tier, not the trial

    Watermarks and interstitials are usually a free-tier behaviour, and a trial hides them. Generate on the plan you actually intend to stay on.

  2. Scan it with a phone and watch what loads first

    The generator page is not the surface at issue. Look at what your reader sees between the scan and the destination — a branded interstitial, a countdown, an advert, a "powered by" footer.

  3. Look at the downloaded file at full size

    Open the PNG or SVG and zoom in on the margins. A watermark that is invisible on a preview is legible on a poster.

  4. Ask what happens when the free tier changes

    A static code cannot have an interstitial added afterwards, because nothing is in its path. A dynamic code can, on any provider, at any time — so the answer you want is a mechanism, not an assurance.

FAQ

Questions

Do you show an interstitial before the destination?

Only where the code's owner configured a gate — a password, an age check, an email capture — or where the destination is unsafe. Never to show anyone anything.

Is there a "powered by" line on free codes?

No, on any tier. The test greps for that phrase specifically.

How would I know if this changed?

The test is in the repository and runs on every release. A change would have to delete it, which is a visible act rather than a quiet one.

Is there a watermark on the downloaded image?

No, on any tier. The file is generated in your browser from the encoder's output and contains the symbol and its quiet zone, nothing else.

Do you track the people who scan my codes?

Scans of a dynamic code are counted, and the raw IP never leaves the edge — the visitor identifier is an HMAC of IP and user agent under a daily-rotating salt, so it cannot be reversed or joined across days. No cookie is set on the redirect path. A static code is not counted at all, because nothing is in its path.

Why do other free generators show an interstitial?

Because it is the one surface they own that you cannot see — you scan your own code once at launch and never again, while your readers meet it every time. It is inventory created out of your printed material.

Do free codes redirect more slowly to push me to upgrade?

Not here. There is one redirect path for every tier: edge lookup, then a queue for everything else. A redirect never waits on analytics, billing or AI, which is another of the four rules and has its own regression test.

Want a code you can change later?

A dynamic code keeps the print and moves the destination. 5 are free, and they keep resolving.
Create a code that keeps resolving Check your print size