QR Code Forever

How QR Code Forever works

This is how QR Code Forever works under the hood: a browser QR code generator that builds the pattern on your device with open-source libraries, styles it, decodes it again with a real scanner to verify it, and exports it, all without sending a byte to a server. Codes are static and never expire, free with no sign-up, and verified before download.

The engine

Everything happens in the page. When you type, a validator for the chosen content type checks the input and an encoder turns it into the exact payload string, for example WIFI:T:WPA;S:Cafe;P:latte;; or a mailto: address. The Show encoded text toggle under the preview reveals that string, so you can see precisely what the code will contain.

The payload goes to two open-source libraries. qrcode computes the module matrix, the grid of dark and light squares, and is also what the bulk tool and the PDF export use. qr-code-styling draws that matrix with your chosen dot shape, corner styles, colours, gradient and logo, producing the preview and the PNG and SVG files. The capacity line (“29 × 29 modules · version 3 · error correction Q”) comes from the matrix itself.

Heavy work runs in Web Workers so the page stays responsive: one worker for matrix generation and bulk rendering, one for decoding. Both load on first interaction, after the page is already usable.

The verification step

This is what makes the badge trustworthy. After every change:

  1. The styled code is rendered to a 512-pixel bitmap, the same way it will be exported.
  2. That bitmap is sent to a background worker running ZXing, an open-source scanner engine compiled to WebAssembly (zxing-wasm, built on zxing-cpp). If the WebAssembly module cannot load, jsQR takes over as a smaller fallback.
  3. The decoded text is compared with the encoded payload byte for byte.
  4. If they match, the badge reads Verified: scans as Wi-Fi (or the relevant type). If they do not, it reads Could not verify and suggests fixes: raise error correction, shrink the logo, increase contrast or remove the gradient.

Download buttons stay enabled either way, with a warning in the failed state. The bulk tool applies the same decode to the first, last and every 25th code in a batch.

Exports

PNG is rendered at the size you choose (256 to 4,096 px) with optional transparency; JPG is the same image on a white background. SVG comes from the styling library as vectors with the logo embedded. PDF is built with pdf-lib: the modules are drawn as vector rectangles at a physical size in millimetres or inches, with an optional caption, so a print shop receives something that scales cleanly. Copy image puts a PNG on the clipboard and Print opens a print view at a chosen physical size. The bulk generator parses spreadsheets with papaparse and packs the output into a ZIP with fflate, adding a CSV manifest and a label-sheet PDF if you ask for them.

Privacy by construction

Nothing you type is uploaded, because there is no server in the flow: the site is static files and the work is done by your browser. The reader decodes images on your device and the scanner processes camera frames locally. No history is kept unless you switch on Remember my codes on this device, which stores codes in your browser’s own storage with a delete-all button. The privacy policy describes the analytics and ads on the pages around the tools; none of it ever receives the content of a code.

Licences

The site is built on open-source software, listed here with each project’s licence:

The full licence notices are kept in the repository’s licenses folder. QR Code is a registered trademark of DENSO WAVE INCORPORATED. Other product names mentioned on this site belong to their respective owners, and QR Code Forever is not affiliated with any of them.

Frequently asked questions

Is QR Code Forever a browser QR code generator, or does it use a server?

It runs entirely in the browser. The site is served as static files, and the generator, styling, verification, exports, bulk rendering and the reader are all JavaScript and WebAssembly running on your device. There is no application server, no upload endpoint and no account system.

What does QR code verification actually test?

That the styled image you are about to download decodes to exactly the text you entered. The preview is rendered at 512 px and decoded by ZXing in a worker, and the result must match byte for byte. It catches logos that cover too much, gradients that break contrast and colours that scanners cannot separate.

Last updated . QR Code is a registered trademark of DENSO WAVE INCORPORATED.