About QRCodeDojo
A small site with one commitment: the codes you make here contain your data, not our link, and nothing we do later can take them away.
Why this exists
Search for a QR Code generator and most of the first page hands you a dynamic code without making the consequence obvious. The pattern contains their short link, not your URL. Every scan travels through their server. That is what makes the scan counter and the editable destination possible — and it is also what makes the code a rental.
The pattern repeats: a restaurant prints menus, a school prints a parents' evening flyer, a tradesperson wraps a van. Months later the codes lead to an upgrade prompt or a dead domain. Nobody did anything wrong. They used a free tool that was free in the way a free puppy is free.
So this site does the opposite. Every code here is static: your data is inside the pattern. We are not in the path, there is nothing to meter, and there is nothing we could switch off.
How it is built
The architecture follows from the promise. If nothing is allowed to depend on our servers, then there should be as little server as possible:
- Static site. Astro compiles everything to HTML at build time. Cloudflare Pages serves the files.
- No backend. No database, no API, no accounts. There is no endpoint that could receive your data if it wanted to.
- Local-first. QR encoding, rendering, PNG and SVG export all happen in your browser. Load a page, go offline, keep working.
- Server-rendered explanations. Every word of the method, examples and FAQs is in the HTML, not injected by JavaScript. Better for search engines, better for people on slow connections, better for anyone with scripting restricted.
- Tested algorithms. The payload builders and the print model have unit tests with fixed inputs and expected outputs, so a change that alters what gets encoded fails the build.
What we publish and why
Most QR sites show you a verdict — “this code is too small” — without telling you how they decided. We publish the model instead: the module-size formula, the thresholds per print method, the 10:1 scan-distance rule of thumb, the halved error-correction budget behind the logo limit.
Partly that is so you can disagree with us. Our thresholds are practical values for common production processes, not clauses of a standard, and your printer may well know better for your specific stock. A number you can check is worth more than a number you have to trust.
What we deliberately do not build
- Dynamic codes. They would require exactly the dependency this site exists to avoid.
- Accounts. There is nothing to save that your own filesystem cannot hold better.
- Scan analytics. It cannot be done without putting a server between your poster and your customer. UTM tagging gets most of the value with none of the dependency.
- A cloud library of your codes. Storing the codes would mean storing the contents, which would mean receiving them in the first place.
How a free site stays up
Fairly enquired after, and the honest answer is that static hosting is close to free. There is no database to run, no server idling, no support desk attached to an account system. A CDN serving small files is the cheapest thing on the internet.
If the site ever earns money it will be from things that sit beside the tools rather than in front of them — an optional paid extra for a genuinely advanced workflow, say. The generators on this site stay free and stay static. That is the promise in the tagline, and it is the only reason to choose this over the dozens of alternatives.
Get in touch
Found a bug, a format that does not decode on your device, or a print threshold you think is wrong? Those reports are genuinely useful — send them over.