Basics
What Is a QR Code? How They Work, in Plain English
A QR code is a two-dimensional barcode that stores text a camera can read in a fraction of a second. Here is exactly what is inside one.
Updated · 6 min read
A QR code (short for Quick Response code) is a square grid of black and white modules that encodes text. Anything you can write as characters — a web address, a Wi-Fi password, a phone number, a plain note — can be stored inside the pattern and read back by a phone camera.
Unlike the striped barcode on a cereal box, a QR code stores data in two directions, horizontally and vertically. That is why it holds thousands of characters instead of a dozen digits, and why it can be scanned from any angle.
What the parts of a QR code actually do
Every QR code follows the same published standard, so the same pattern scans identically on an iPhone, an Android phone or a warehouse scanner.
- Finder patterns — the three big squares in the corners. They tell the camera where the code is and which way up it sits.
- Alignment pattern — the smaller square near the fourth corner, which corrects for the code being photographed at an angle or on a curved surface.
- Timing patterns — the dotted lines between finders that set the grid size.
- Format and version information — narrow strips that declare the error-correction level and how large the grid is.
- Data and error-correction modules — everything else: your content, plus redundant data so a damaged or partly covered code still reads.
How a phone turns the pattern back into text
- 1The camera finds the three corner squares and locks onto the grid.
- 2It normalises the image, correcting for rotation, tilt and lighting.
- 3Each module is read as a 1 or a 0, producing a raw bit stream.
- 4Reed–Solomon error correction repairs any missing or misread bits.
- 5The bit stream is decoded into characters, and the phone acts on what it finds — opening a link, offering to join a Wi-Fi network, or simply showing the text.
What a QR code can contain
The pattern itself only stores text. What makes a scan feel smart is a convention: certain text prefixes tell the phone what kind of thing it is looking at.
- A URL starting with https:// opens a website.
- WIFI:T:WPA;S:NetworkName;P:password;; offers to join a network.
- BEGIN:VCARD ... END:VCARD offers to save a contact.
- mailto:, tel: and smsto: start an email, call or message.
- geo:latitude,longitude opens a map pin.
- Anything else is displayed as plain text.
Error correction: why codes still scan when damaged
QR codes come in four error-correction levels — L (about 7% recovery), M (15%), Q (25%) and H (30%). Higher levels add redundant data, which makes the pattern denser but lets the code survive a scratch, a fold or a logo placed in the middle.
For print, level Q or H is the safer choice. For a clean screen or a small sticker with short content, level M keeps the pattern sparse and easy to read.
When a QR code is the right tool
- Bridging print and digital: posters, packaging, menus, business cards.
- Removing typing: long URLs, Wi-Fi passwords, contact details.
- Offline data: asset tags and instructions that must work without a network.
- Measurable campaigns: point the code at a short link so every scan is counted.
Frequently asked questions
- Does a QR code need the internet to work?
- No. The data lives inside the pattern, so scanning always works offline. The internet is only needed if the content is a web address the phone then opens.
- How much data fits in a QR code?
- Up to roughly 4,296 alphanumeric characters in theory, but the pattern becomes very dense long before that. Keep content under a few hundred characters for reliable phone-camera scanning.
- Are QR codes free to use?
- Yes. The format is an open standard with no licence fee, and tools like the Snipp QR code builder generate them free with no watermark.
- Can a QR code be dangerous?
- The code itself is only text, but it can point to a malicious site. Modern phones show the destination before opening it — check the domain before you tap.
Try it yourself
Build a QR code free, or create a short link so you can count every scan.