The problem with most QR generators

Open almost any popular QR code generator and the flow is the same: you type in a URL, it gets pushed toward a "dynamic" code, and the dynamic code only works as long as you keep paying. That's because a dynamic QR code doesn't encode your actual destination. It encodes a short redirect URL hosted on the platform's own servers, and every scan has to pass through that server to reach you. Cancel your subscription and every code you've printed, on menus, stickers, business cards, stops resolving.

We wanted to build something that didn't have that failure mode: a generator where the QR code you create today still works in five years regardless of whether our servers, or our company, are still around.

The core decision: generate everything in the browser

Everly QR generates QR codes entirely client-side using QRCodeStyling, a JavaScript library that builds the QR pattern directly in the browser tab. When you type a URL into the form, nothing is sent anywhere. There's no API call carrying your data to a server, no logging, no third party in the path between your input and the image you download. You can verify this yourself by opening the browser's network tab while generating a code: there's nothing relevant to see.

For PDF and SVG export, we use jsPDF and svg2pdf.js, also entirely client-side. The only place Firebase shows up at all is Firestore, used for a handful of secondary features like the bulk batch tool, not for the core generation flow that most people actually use.

Why we default to static codes, not dynamic

A static QR code encodes the destination directly into the pattern itself. Scan it, and the camera reads that URL with no redirect server involved. The trade-off is that you can't change the destination after printing, which is the one feature dynamic codes have that static codes genuinely don't. But that trade-off is exactly the point: a static code works forever, doesn't depend on anyone's subscription staying active, and never routes anyone's scan data through a server you don't control.

We see the dynamic-by-default approach other tools take as a business model decision dressed up as a feature. It gives the platform leverage over codes you've already printed in the physical world. Defaulting to static, free, permanent codes was a deliberate choice to not build that leverage into the product.

If your QR code is going on something printed and distributed (menus, posters, packaging), a static code is almost always the right call. The destination won't change, and the code shouldn't be able to stop working because of a billing event.

What browser-only generation actually buys you

Server-side QR generation means your input, URLs, WiFi passwords, contact details, internal links, briefly exists on someone else's infrastructure. For a public homepage URL that's a non-issue. For a private document link, an internal portal, or a patient intake form, it's a real consideration most people never think about when they reach for a free QR tool.

Because Everly QR never sends what you type to a server, that category of risk doesn't apply. It's not a privacy policy promise, it's a property of how the code is built: there's no endpoint to send the data to even if we wanted to.

Where the engineering effort actually went

Stripping out a backend for the core flow doesn't mean the build was simple. Most of the work went into getting client-side rendering to match what people expect from a paid tool: high-resolution exports for print, custom logos embedded in the QR pattern without breaking scannability, colour customisation that doesn't drop the error-correction margins a scanner needs, and SVG export for anyone sending codes to a printer rather than just downloading a PNG.

Logo embedding in particular took real tuning. Place a logo too large or in the wrong spot and the code stops scanning reliably on cheaper phone cameras. QRCodeStyling handles the placement logic, but getting the size and error-correction level right for a logo-bearing code that still scans consistently took iteration against actual phones, not just a visual check.

Where Everly QR is now

Everly QR is live and free, with no account required for the core generator. It covers the common use cases people actually search for, WiFi codes, WhatsApp links, business cards, restaurant menus, bulk generation for businesses, and we've written about the reasoning behind these decisions in more depth on its own blog, including a closer look at QR generator privacy and the static vs dynamic trade-off.

Building a tool that shouldn't need a backend?

If your product's core value can live entirely client-side, we can help you figure out where that boundary actually sits and build it that way.

Talk Through Your Build
Everly QR is live at everlyqr.com.