QR code designer

A QR code for a link, a Wi-Fi network, a contact card or anything you type. Choose the colours, drop a logo in the middle, download it as SVG or PNG. It prints here, in your browser, and nothing leaves the page.

Point a phone at it. If it scans here, it scans everywhere.

VERSION 1 21 X 21 EC M MASK 0 0 BYTES

Colours
Module shape
Error correction

How much of the code can be dirty, torn or covered and still scan. Higher means a bigger code.

PNG size

Pixels across, rounded so every module is a whole number of pixels. SVG has no size; it prints sharp at any scale.

How it works

A QR code is a grid of dark and light modules. The three big squares in the corners are the finder patterns a scanner locks onto first; the small one lower right, and the dotted lines joining the corners, tell it how the grid is tilted. Everything else is your data, padded, wrapped in error correction, then masked with one of eight patterns so no region ends up too blank or too busy. This page runs that whole procedure itself, from the standard, and picks the version, mode and mask for you.

Version is the size: version 1 is 21 by 21 modules, version 40 is 177 by 177. The code grows only as far as your data needs. Numbers pack tightest, then capital letters and a few symbols, then anything else as UTF-8 bytes, which is why a short link makes a small code and a paragraph makes a big one.

Error correction is Reed-Solomon, the same idea as on a CD. Level L survives 7 percent damage, M 15, Q 25 and H 30. A logo counts as damage, so when you add one this page moves to H and keeps the logo under a quarter of the width. If you make the logo bigger than that, test the result with a phone before you print a thousand of them.

Scanners like dark modules on a light background with a clear margin around the code, the quiet zone. Light-on-dark codes and low-contrast colours scan on some phones and not on others, so the page warns you about both. Rounded and dotted modules are fine for the data area; the finder patterns stay solid because that is what scanners are trained on.

Nothing you type is sent, logged or stored. The logo never leaves this tab. The only thing this page records is that a code was made, which kind it was, and what size it came out.