DESIGN & WEB

QR Code Generator

QR codes for a URL or text as SVG or PNG, encoded in your browser to ISO/IEC 18004 with version, error-correction level, mode and mask stated. No upload.

A QR code file with its version, module count, error-correction level and capacity stated, plus warnings about quiet zone, contrast and size before you print it.

Example: "HELLO WORLD" at level M is a version 1 symbol, 21 × 21 modules, alphanumeric mode, 74 of 128 data bits used; a 40-character URL at level H is version 5, 37 × 37.

v0.1.0 · last reviewed 19 September 2026
Loading the workspace…
BUILT TO BE UNDERSTOOD

A QR code is arithmetic,
not a service.

How the symbol is built, what the version and level mean, why there is no tracking, and what to check before printing.

How the symbol is built

The encoder follows ISO/IEC 18004 (QR Code model 2) and runs entirely on this page. The text is analysed for the densest mode that holds it — numeric (3⅓ bits per digit), alphanumeric (5½ bits per character; digits, capitals and nine symbols) or byte (8 bits per UTF-8 byte) — and the smallest version from 1 (21 × 21 modules) to 40 (177 × 177) whose data capacity fits at the chosen error-correction level is used. Reed–Solomon error-correction codewords are computed over GF(2⁸) for each block, interleaved with the data, placed in the standard zigzag, and one of eight masks is applied: the page scores all eight with the standard's four penalty rules and keeps the lowest. Format and version information carry their own BCH codes. Every module you see is the result of that arithmetic, which is why the page can state the version, mask and capacity rather than guess at them.

Error-correction level and size

Level L allows about 7 % of the codewords to be damaged and still decode, M 15 %, Q 25 %, H 30 %. Higher levels cost capacity, so the same text needs a larger version: a 40-character URL is version 3 at L and version 5 at H. M is the usual choice for screens and clean print; H is worth it when the code carries a logo or lives outdoors. Data capacity is shown as bits used of bits available, so you can see how close the next version is. A URL written in upper case fits alphanumeric mode and can drop a version — the page says when that applies.

Before you print

The standard requires a quiet zone of four light modules on every side; the SVG includes it and the page warns if you reduce it. Dark modules must be darker than the background — an inverted symbol decodes on few readers — and the colour warning uses the WCAG contrast ratio as a plain measure. Byte data is written as UTF-8 without an ECI header, which is what phone cameras assume. The SVG is drawn with one path and crisp edges so it scales to any print size; the PNG is rasterised in your browser at the pixel size you choose. Test the printed result with the reader your audience uses.

How it was checked

Symbols for sample texts across versions 1 to 8, all four levels and every mask were compared module for module with an independent encoder; the block-structure table (error-correction codewords per block and blocks per version) was compared entry by entry with the same encoder's table, and the format and version examples printed in the standard's annexes are asserted by the tests. That comparison caught two transposed table entries and a reversed generator polynomial during development — errors that would have produced symbols that look right and do not scan.

What the tool does not do

No dynamic codes: the URL you encode is the URL in the symbol, with no redirect through this site and therefore no scan counts, expiry or editing later — a code you download works forever and belongs to you. No logos, rounded modules or gradients: those reduce reliability and are better added in artwork on top of a level-H symbol. Kanji mode, Micro QR and structured append are not offered. Nothing you enter leaves the browser; the same four anonymous usage counts as the rest of the site apply.

SOURCES

Last reviewed 19 September 2026. How results are checked: How we verify.