QRForge

What Is a QR Code? A Plain-Language Introduction

6 min readUpdated September 2026
A handheld scanner reading a code

You have met QR codes on posters, menus, packages and payment terminals. A phone camera points at the square, and a link, a Wi-Fi network or a contact appears instantly. Behind that everyday magic is a compact, well-designed data format that has barely changed since 1994 — and understanding it makes the codes far less mysterious to create and debug.

A two-dimensional barcode

QR stands for Quick Response. It was invented in 1994 by the Japanese company Denso Wave to track car parts faster than a traditional barcode allowed. A normal barcode stores data in one dimension — the widths of vertical lines — so it holds only a couple of dozen characters. A QR code stores data in two dimensions, as a grid of black and white squares called modules, which lets it pack thousands of characters into the same small area.

Because it is a two-dimensional pattern, a scanner can read it from any angle and even upside down. That robustness, plus the fact that the specification is an open ISO standard anyone can use for free, is why QR codes spread from factories to almost every corner of daily life.

The specification is published as ISO/IEC 18004, and Denso Wave chose not to enforce its patent for ordinary use. Nobody pays a licence fee to print a QR code, and no single company controls the format. That is why every phone camera, every point-of-sale terminal and every free generator can read and write exactly the same squares, with no compatibility matrix to check first.

How the pattern is organised

Look closely at any QR code and you will see three large squares in the corners. These are the finder patterns: they tell a scanner where the code is, how big it is and which way it is rotated. Smaller alignment patterns keep the grid straight on curved or warped surfaces, and a thin timing line helps the reader count the rows and columns. The rest of the grid holds your actual data plus the error-correction bytes that let a damaged code still be read.

Around the whole code sits a blank margin called the quiet zone. It is not decoration — a scanner needs that empty border to tell where the pattern ends. The standard asks for four modules of clear space on every side, so on a code whose modules are half a millimetre wide that is a 2 mm margin. Crowding a code right up to other graphics is one of the most common reasons a scan fails.

Two more slivers of the grid are reserved for housekeeping. A fifteen-bit format block, repeated twice around the finder patterns, records the error-correction level and which of the eight data masks was applied; codes of version 7 and above add an eighteen-bit version block so the reader knows the grid size without counting. The mask itself is a fixed checkerboard, stripe or diagonal pattern XOR-ed over the data to break up large blank areas — an encoder tries all eight and keeps the one that scores best, which is why two codes holding the same text can look completely different.

Forty sizes, not one

A QR code is not a single size. The standard defines forty versions, numbered 1 to 40. Version 1 is a 21 × 21 grid; each step up adds four modules to every side, so version 2 is 25 × 25, version 10 is 57 × 57 and version 40 is 177 × 177. A generator picks the smallest version that fits your content at the error-correction level you asked for, which is why adding a few characters sometimes makes the pattern jump noticeably denser instead of growing smoothly.

Capacity depends on the version, the error-correction level and the encoding mode. At the extreme — version 40 at level L — a code holds 7,089 digits, or 4,296 alphanumeric characters, or 2,953 bytes of arbitrary text. In everyday work you will rarely pass version 10, which stores 271 bytes at level L; a code much larger than that is already a dense thicket of modules that has to be printed carefully to stay readable.

From data to squares

When you type a URL into QRForge, the encoder first picks the most efficient mode for your characters — numeric, alphanumeric or raw bytes — then adds Reed–Solomon error-correction data and lays everything out on the grid according to a fixed mask that keeps the pattern balanced. All of this happens in your browser in milliseconds. You just see the finished square appear in the preview, ready to download.

The choice of mode matters more than it looks. Numeric mode spends 10 bits on every three digits, alphanumeric mode 11 bits on every two characters, and byte mode a full 8 bits on each character. Alphanumeric mode covers only 45 characters — the digits, uppercase A to Z, space and the symbols $ % * + - . / : — so a URL typed in lowercase falls back to byte mode. Writing the host in capitals, as HTTPS://EXAMPLE.COM, can drop a code a version or two. Domain names are case-insensitive, so this is safe for the host; paths are not, so leave those alone unless you know your server tolerates it.

What a QR code is not

Two ideas cause most of the confusion. First, a QR code does not contain a website — it contains text, and that text usually happens to be a URL your phone offers to open. The same square could just as easily hold a Wi-Fi password, a contact card or a line of poetry; the operating system decides what to do with the string it gets back. Second, a plain QR code does not track anyone. It has no memory, no counter and no connection of its own. Tracking, where it exists, lives at the destination — a short link that logs the visit before forwarding you — not in the pattern.

That distinction is worth keeping in mind when you scan a code in public. Because the squares are unreadable to a human eye, a sticker placed over a legitimate code can send you anywhere. Modern phones show the destination before opening it; reading that line before you tap, and printing the plain URL in small type beside your own codes, costs nothing and closes most of the gap.

The takeaway

A QR code is a two-dimensional barcode: finder patterns orient the scanner, a quiet zone frames the data, and error correction keeps it readable. Type any URL or text into the generator to watch one built in real time.

Related tool
QRForge · Generator

Open the tool and try it now