Scanform
A QR code studio for links, text, Wi-Fi and email that runs entirely in the browser. No backend, no sign-up, no tracking. Pick colors and a pattern, then download a PNG or SVG.
- Period
- Context
- My role
The problem
Most free QR generators want an account, wrap your link in a redirect they can track, or send what you type to their server. That last one matters more than it sounds: a Wi-Fi QR code contains the network password. A QR code is just an encoding, so there is no reason any of it has to leave the page.
How it was built
Nothing leaves the browser
Encoding runs on the page with a bundled encoder. Each content type is turned into the payload scanners expect: URLs are validated to http or https, Wi-Fi uses the WIFI: format with its special characters escaped, and email becomes a mailto link with an encoded subject and body. There is no backend, no analytics, no remote fonts and no storage. Input lives in memory and is gone when the tab closes.
One SVG, two exports
The module matrix is drawn straight to SVG. The soft pattern rounds the data modules but leaves the three finder squares sharp, so scanners still lock on. PNG export rasterises that same SVG onto a canvas with smoothing turned off, at 512 up to 4096 pixels, so both formats come from one source and match exactly.
Tests that actually scan the code
Checking that an SVG string looks right proves nothing about whether a phone can read it. The tests render each generated SVG with Resvg and decode it with jsQR, a separate decoder, then compare the result to the input. They cover Unicode, Wi-Fi escaping, email encoding, every palette, both patterns, each correction level and oversized input. CI runs lint and tests before every deploy.
Where it landed
- Zero backend: the site is static files on GitHub Pages
- Every generated code is decoded by an independent reader in tests before it ships
- PNG up to 4096 px and scalable SVG from the same render
Specification
- Content
- Export
- Privacy
- Testing
- Framework
- Deploy