MiServe DevTools

Your lid

Pin tools here. They are saved in this browser.

QR Code Generator

Turn a link, a piece of text, Wi-Fi details, an email or a phone number into a QR code, and download it as SVG or PNG.

Error correction

Error correction lets a scanner rebuild a damaged code: L restores about 7% of it, M 15%, Q 25% and H 30%. A higher level needs more modules for the same content.

Runs in your browser with WebAssembly. Nothing you paste is uploaded.

About this tool

What a QR code holds

A QR code stores a short run of bytes, usually text. What happens after a scan depends on the scanner and on how that text starts: most phone cameras offer to open an https:// link in the browser, to join the network described by a WIFI: string, to start a message for a mailto: link and to call a tel: number.

The codes made here are static: the content is written into the pattern itself. There is no redirect and no account behind them, so they keep working for as long as the link or the network they point to exists.

Versions, modules and error correction

The small squares are called modules. A QR code comes in 40 sizes, called versions: version 1 is 21 × 21 modules, and each version adds 4 modules per side, up to 177 × 177 for version 40. The tool picks the smallest version that fits your content.

Part of every code is redundancy, which lets a scanner rebuild it when it is scratched or partly covered. Level L can restore about 7% of the code, M 15%, Q 25% and H 30%. More redundancy leaves less room: the largest code holds 2,953 bytes at level L and 1,273 bytes at level H.

Making a code that scans

Scanners expect dark modules on a light background with an empty margin, the quiet zone, of 4 modules on every side. Low contrast, inverted colours and a missing margin are the usual reasons a code fails.

Use SVG for print: it stays sharp at any size. The PNG gives every module the same whole number of pixels, so the edges stay crisp; pixels that do not divide evenly become extra margin.

How it runs

The pattern is computed by the open-source Go library go-qrcode, compiled to WebAssembly and executed in a background thread of your browser. The SVG and the PNG are then drawn by the page from that pattern. The content, a Wi-Fi password included, is not sent anywhere.

Questions

Do these QR codes expire?

No. The content is stored in the code itself and does not pass through any server of ours. A code that holds a link works for as long as that link does.

Which error correction level should I choose?

M is a good default for a screen or a clean print. Choose Q or H for labels and packaging that may get scratched or dirty. Choose L when the content is long and the code has to stay small.

Can anyone read the Wi-Fi password in the code?

Yes. The password is stored in the code as plain text, so anyone who can scan it can read it. Share the code only where you would also share the password.

Why does my phone not scan the code?

The usual causes are colours with too little contrast, light modules on a dark background, a missing quiet zone, or a code printed so small that the camera cannot separate the modules. Long content makes the modules smaller, so shorten it or print the code larger.

More in Graphics