QrZeo started with a receipt from a print shop. A restaurant had reprinted 200 laminated table cards because the menu URL changed — the second time that year. The codes worked perfectly. They just pointed at a page that no longer existed, and nothing could be done about it, because the address was in the ink.
That is the whole problem, and the fix has been standardised for decades: encode a short link you control instead of the destination itself. The printed pattern never has to change. What was missing was not the technique but a tool that treated it as the default rather than the upsell — and that was equally willing to say when a plain static code is the better choice.
So the product is deliberately narrow. QrZeo will not build your landing page, run your campaigns or tell you who scanned a code. Within its lane — generating codes, running the redirects behind them, and reporting honestly on what happened — it goes further than tools many times its size: 24 content types with the right form for each, bulk generation from a CSV or an API, file hosting where one file serves many codes, and permissions enforced by the server rather than politely suggested by the interface.
What we believe about QR codes
Once you have the image we are out of the loop, so there is nothing to charge for. Unlimited static codes on every plan including the free one — even when that means talking you out of a subscription.
A static code can never be re-pointed or measured. A dynamic code stops resolving if the plan lapses. Both facts are on the pricing page, because finding them out after a print run is the worst way to learn them.
A code that unexpectedly goes viral should not generate a bill or stop working mid-campaign. Volume is not the thing we charge for.
The generator will not let you invert the contrast, and it raises error correction automatically when you add a logo — because those failures only show up after printing, when they cost real money.
HTTP-only cookie sessions, two-factor authentication with backup codes, and server-enforced permissions come standard, on the free plan too.
Deleting a folder unfiles its codes rather than deleting them. Tidying up should never take a printed code offline.
Where QrZeo is now
QrZeo today ships 24 content types, static and dynamic codes, re-pointing with no reprint, scan analytics by device and country, three module shapes with brand colours and a centre logo, bulk generation from CSV or the REST API, file hosting, folders and tags, isolated workspaces with role-based teams, two-factor authentication and scoped API keys — with dark and light mode throughout. Everything on the features page describes shipping functionality, not a roadmap.
We're a small, independent team, which shapes the product more than any mission statement could: we can't afford to build features nobody uses, so we build the ones people ask for and polish them until they stop generating support email. If you have feedback — a template you wish existed, an import format that fought you, a limit that feels wrong — we read every message. Say hello, or just try the editor and see if we kept our promises.
