Make a QR code that actually works

Free, no account, no watermark. We decode the finished code to prove it reads, and tell you how large to print it for where it is going.

What should the code do?Opens a web page

We add https:// if you leave it off.

Appearance
#000000
#ffffff

Codes with a label are scanned noticeably more often than bare ones.

A logo covers modules. We raise error correction to compensate and then decode the finished code to confirm it still reads.

Higher survives more damage but makes the pattern denser, so each module is smaller at the same printed size.

This sets the size the code needs to be for the distance people will scan it from.

What makes this different

It tells you if the code will actually scan
Every code is decoded back with a real decoder before you download it. If a logo or a colour choice has broken it, you find out now rather than after printing five hundred flyers.
It tells you how big to print it
The most common reason a printed code fails is that it was printed too small for the distance people scan from. Pick where it is going and get the number in millimetres.
Static codes never expire
A static code contains your destination directly and is made entirely in your browser. It keeps working whether or not this company does. We will not pretend otherwise to sell you a subscription.

Static or dynamic — the honest version

Static (free, forever)

The destination is encoded directly into the pattern. Nothing routes through us, so the code cannot expire, cannot be disabled, and does not depend on this company existing. The trade-off is that changing where it points means printing a new one, and there is no way to count scans.

Dynamic (paid)

The pattern encodes a short link we control, which forwards to wherever you point it. You can change the destination after printing, and you can see how many people scanned. The trade-off is real: it depends on our infrastructure and on an active account.

Some generators imply that free codes expire. They do not, and ours will not. The full comparison, including what happens to a dynamic code if you stop paying.

Every type of code

Each one configures the generator for that job, with the right fields and the right checks.

For your line of work