GeodeQR

QR codes that never expire.

Free, no account, nothing leaves your browser — and every style stays inside limits proven against a deliberately bad scanner.

A transparent code keeps scanning on any light background.
Download as
PDF ships a vector matrix with the full design. EPS is the bare vector code. PNG and SVG stay sharpest — JPG is for systems that require it.

This code doesn't need us. It keeps working even if this site disappears.

Bulk codes from a spreadsheet

Upload a CSV. Get a ZIP of codes — generated in your browser, free.

Your QR code points exactly where you tell it. Nothing sits between the scan and your link, because there is no server involved at all. That is also why it is free: a static code costs us almost nothing to make, so we do not charge for it, do not watermark it, and do not put anything inside it. Your code stays yours.

We invite you to double-check our work.

Open your browser’s developer tools, switch to the Network tab, and make a code. Nothing leaves your device.

The whole source is on GitHub. Read it, fork it, run it offline.

Found a bug, or a claim that doesn’t hold up? Tell us — an example helps enormously, though we understand if yours is too sensitive to share: qr@geodeforge.com

That’s the difference between a privacy policy and a fact.

Tell someone it exists

This project has no marketing budget and no growth team — it spreads or it does not.

No sign-up, because there is nothing to sign up to

The cost first: no account means no saved history — the file you download is the only copy, and it's yours.

Nothing you type reaches us. There's nowhere for it to go — no server, no database, no backend. Watch the Network tab while you work: nothing happens. Read the source.

What a sign-up is actually for

Making a QR code doesn't need an account. A static code is arithmetic on the text you type, and your browser can do all of it alone — this page does.

The sign-up exists because an account is what makes a code revocable and a user billable. A dynamic code points at the provider's server, which forwards each scan on to your link. The account is the switch on that forwarding: it's how a trial can end, a plan can lapse, and a printed code can die. And the email you signed up with is where the notice goes when it does.

So the sign-up isn't a formality standing in front of the product. It is the product.

Why we couldn't ask you to sign up if we wanted to

This site has no server, no database, and no backend. An account system needs somewhere to keep the accounts, and here there is nowhere. So "no sign-up" isn't a launch promo that quietly grows an email wall later — there is no place to build one.

You don't have to trust that: open your browser's Network tab and make a code above. Nothing happens — no request leaves your machine. The source is public.

Including the thing that's usually gated hardest

Bulk generation — upload a CSV, get a ZIP of codes — is a feature usually found behind a paid plan. Here it runs entirely in your browser; the spreadsheet never uploads anywhere, so there was never an account to gate it behind. It's in the tool above, free like everything else.

When signing up somewhere is the right call

If you need to change a code's destination after it's printed, or count scans, that genuinely requires a server running for as long as your code lives — and servers cost money, so those products honestly need accounts and subscriptions. We don't offer them. If that's what you need, pick a provider knowingly, pay them, and read the part of the plan that says what happens when you stop paying. That's a fair purchase, and this page isn't here to talk you out of it.

What shouldn't need an account: making a static code, exporting it as SVG or PDF, generating a thousand of them from a spreadsheet. Here, none of it does.

Living without a history tab

More from GeodeForge

GeodeForge is a one-person studio that crafts open-source tools that do what they say, and let you check — in your browser.

Check at geodeforge.com →