NoTraQR.com

How QR Codes Work

More Than a Pattern

A QR code looks like a random arrangement of black and white squares, but every element has a precise purpose. Understanding the structure helps you make better choices when generating codes — especially around size, error correction and colour contrast.

The Basic Unit: Modules

Each small square in a QR code is called a module. A module is either dark or light, representing a binary 1 or 0. The grid of modules encodes your data using a combination of numeric, alphanumeric, byte and kanji encoding modes, depending on which is most efficient for your content.

Finder Patterns

The three large squares in the corners of every QR code are called finder patterns. They allow scanners to detect the code and determine its orientation instantly, regardless of the angle or direction from which it is scanned. This is what makes QR codes readable from any direction — unlike traditional barcodes which must be aligned with the scanner.

Alignment and Timing Patterns

Larger QR codes contain additional alignment patterns — smaller squares inside the code — that help the scanner compensate for distortion when reading curved or photographed surfaces. Timing patterns are alternating dark and light modules running between the finder patterns that help the scanner determine the size of each module.

Error Correction

One of the most important features of QR codes is built-in error correction. Using Reed-Solomon error correction, a damaged or partially obscured QR code can still be read. There are four levels:

L (Low) — 7% of the code can be damaged and still read correctly. Smallest code size.

M (Medium) — 15% damage tolerance. A good default for most uses.

Q (Quartile) — 25% damage tolerance. Useful for codes that will be printed on surfaces subject to wear.

H (High) — 30% damage tolerance. Used when adding a logo over the centre of the code. The larger the error correction, the larger the code.

Data Capacity

A QR code can store up to 7,089 numeric characters, 4,296 alphanumeric characters, or 2,953 bytes of binary data. In practice, keeping your URLs short produces smaller, more reliable codes that scan faster.

How Scanners Read QR Codes

When you point a camera at a QR code, the scanner first detects the three finder patterns to locate and orient the code. It then reads the format information stored next to the finder patterns to determine the error correction level and masking pattern. Finally, it decodes the data modules and applies error correction to recover the original content.

Client-Side Generation

NoTraQR generates QR codes entirely in your browser using JavaScript. The encoding, module placement and error correction all happen locally on your device. Nothing is sent to a server. The result is a QR code that conforms to the ISO/IEC 18004 standard — the same standard used by every QR scanner in the world.