About QRForge
We ship a free QR code generator, a paid REST API, and dynamic QR codes with scan analytics — built by a small team that prints a lot of QR codes and got frustrated with everything else on the market.
What we believe
A QR code is a public interface. It's the thing between your product and a customer holding a camera in the real world, and it has to work the first time under imperfect conditions — bad lighting, cheap ink, laminated packaging, an aging phone. Most QR generators optimize for how the code looks in the editor. We optimize for how it scans on a five-year-old Android on a rainy Tuesday.
That view shapes a few concrete product decisions: error-correction level H by default whenever you overlay a logo, a printable-proof workflow baked into the guides, and a generator that renders at the actual print size rather than a shrunken preview.
How we're built
The site is Next.js on a single VPS, with Postgres and Redis running as sibling containers. The generator is entirely client-side; the only thing our server sees is API traffic and dynamic-QR scan events. No third-party analytics, no tracking pixels.
When we talk about what a QR code can do, we mean what the ISO/IEC 18004 standard defines — we don't invent vendor-specific features and sell them as universal behavior. Everything the generator produces is a standard QR code that any compliant reader will decode.
Editorial policy
- We link primary sources. When a guide references a standard or a third-party tool, the link goes to the authoritative source, not a middleman.
- We use specific numbers. "Up to 30% error correction" and "2 cm minimum at arm's length" are both in our guides. Vague claims waste the reader's time.
- We update instead of accumulating. When a recommendation changes — say, because a phone OS ships improved native QR detection — we edit the guide in place and note the date, rather than publishing a new "2026 edition" that competes with its own 2025 edition in search.
Privacy
The free generator runs entirely in your browser. No data is sent to our servers for static codes. For dynamic codes, we store the target URL and scan events (device, browser, country, timestamp). We never store raw IP addresses — they're hashed with a per-install salt so unique-visitor counts work without PII.
We don't use third-party analytics, tracking pixels, or session replay. Email goes through Resend for transactional messages (welcome, password reset, quota alerts) only.
Contact
For support, partnership, or editorial corrections, write to us. If you've found a factual error in a guide — an obsolete compatibility claim, a mis-specified format — tell us and we'll fix it and credit you.
Browse the guides, the use cases, or the API docs. Skim the FAQ. Start with the generator.