Methodology

This page explains how our tools work under the hood, so you can trust — and verify — what they produce.

QR data encoding

Text is encoded as UTF-8 and passed to a well-tested QR generation library, so emoji and non-Latin scripts are preserved. Structured types (Wi-Fi, vCard, email, SMS, tel, geo, iCalendar, WhatsApp) are assembled using their standard formats, with special characters escaped as each specification requires.

Error correction

You choose the error-correction level (L, M, Q or H). Adding a logo automatically raises the level to H to compensate for the covered modules. See our error-correction guide.

Quiet zone

We include a configurable quiet-zone margin (four modules by default) because scanners rely on that empty border to locate the code.

QR verification

The Verify feature re-decodes the generated image in your browser and compares the result against the exact data you entered. It reports whether the code was generated, decoded, and whether the content matches — flagging issues such as low contrast or an oversized logo.

Barcode check digits

UPC-A, EAN-13, EAN-8 and ITF-14 use a modulo-10 checksum. We calculate the check digit from your input, or validate the one you provide, and show the full calculation. This logic lives in a standalone module with automated tests covering both valid and invalid numbers.

Barcode rendering

Barcodes are drawn with a maintained open-source library that supports the standard symbologies, output as both SVG (vector) and PNG (raster).

Browser compatibility and limits

Camera scanning and native barcode detection depend on browser support, which varies by device. Where a native barcode detector isn't available, only QR codes can be scanned. Image upload works as a universal fallback.