1. What a QR code is
A QR code (“Quick Response” code) is a square picture that stores a small piece of text, like a web address, a Wi‑Fi password or a phone number. It was invented in 1994 by Denso Wave, a Japanese company, to track car parts in factories, and is free for anyone to use.
Think of it as a barcode that works in two directions. An ordinary barcode only holds information left to right, so it can store about 20 digits. A QR code holds information across and down, so it can store thousands of characters.
The picture is made of small squares called modules. Each one is either dark or light, which is a 1 or a 0 to a computer. A phone camera finds the code, works out where every module is, reads all the 1s and 0s and turns them back into text.
2. The parts of a code
Every QR code has the same few landmarks that help the camera find and line it up. The rest of the space holds your information. Here is a real code with each part coloured in:
Finder patterns
Timing patterns
Alignment pattern
Format info
Your data
Quiet zone
- Finder patterns
- The three big squares in the corners. They tell the camera “there’s a QR code here” and show which way up it is. Because there are only three (the bottom‑right is empty), the phone can tell if the code is rotated or upside down.
- Timing patterns
- A dotted line of alternating dark and light modules between the finders. It works like a ruler, so the phone can count how many modules wide the code is.
- Alignment patterns
- Smaller squares that help when the code is photographed at an angle or printed on a curved surface. The smallest codes have none, and bigger codes have more of them.
- Format information
- A short strip next to the finders that says which error correction level and mask were used (see below). It’s stored twice, so the code can still be read if one copy is damaged.
- Data area
- Everything else. This holds your content, plus extra error‑correction data that can repair damage.
- Quiet zone
- The empty border around the code. The camera needs this clear space to see where the code starts. The standard is 4 modules wide, which is the default for Margin in Advanced settings.
3. What goes in: data and types
A QR code only ever stores text. The different types in this app (the icons at the top of the form) are agreed ways of writing that text, so phones know what to do with it:
- URL opens a website, e.g.
https://example.com
- Text just shows the words on screen.
- Email starts an email with the address, subject and message filled in (
mailto:).
- Phone offers to call the number (
tel:).
- SMS starts a text message (
SMSTO:).
- Wi‑Fi joins a network without typing the password (
WIFI:S:name;P:password;;).
- Contact saves a person to the phone’s contacts (a vCard).
- Calendar adds an event to the calendar.
- Location opens a map at a point (
geo:).
The text is then packed into bits using an encoding mode. You’ll see the one used under Encoding in the QR details:
| Mode | Holds | Space per character |
| Numeric | Digits 0–9 only | About 3⅓ bits |
| Alphanumeric | 0–9, CAPITAL letters, space and $ % * + - . / : | 5½ bits |
| Byte | Anything: lowercase, emoji, any language | 8 bits or more |
The app automatically mixes modes to keep the code as small as possible. For example, a long number inside a web address can be stored in Numeric mode while the rest uses Byte.
4. Version: how big the grid is
The version is the size of the grid, from 1 to 40. It has nothing to do with software versions. Version 1 is 21 × 21 modules, and each version adds 4 modules to each side, up to version 40 at 177 × 177.
V121 × 21
V537 × 37
V1057 × 57
V2097 × 97
You don’t choose the version. The app picks the smallest one that fits your content. More text means a bigger grid, and a bigger grid means smaller modules when printed at the same size, which makes the code harder to scan from far away.
Good to know: The largest code (version 40, lowest error correction) holds up to 7,089 digits, 4,296 capital letters, or 2,953 bytes of any text. In practice, keep codes short. A short link makes a far easier code than a long one.
5. Error correction: surviving damage
This is what makes QR codes so tough. As well as your data, the code stores extra recovery data worked out with a technique called Reed–Solomon coding (the same maths used on CDs and in deep‑space radio). If some modules are scratched, dirty, torn or covered by a logo, the phone can rebuild what’s missing.
There are four levels. You can set one under Error correction in Advanced settings:
| Level | Can recover | Best for |
| L Low | About 7% | Screens and clean prints, where the smallest code matters most |
| M Medium | About 15% | Most everyday uses (the default) |
| Q Quartile | About 25% | Codes with a logo, or outdoor and industrial use |
| H High | About 30% | Big logos, or places where the code could be damaged |
The catch is that recovery data takes up space. A higher level means more modules for the same content, so the grid grows to a bigger version.
Logos: A logo in the middle hides real modules, and error correction fills them back in. That’s why this app raises the level to Q when you add a logo, unless you’ve picked a level yourself. If it says “boosted from M” in the QR details, that’s what happened.
6. Mask: making it easy to read
Sometimes the data would come out with big solid blocks, long stripes, or shapes that look like a finder pattern. Any of these can confuse a camera. To avoid them, the data is combined with one of 8 mask patterns, simple repeating grids such as a checkerboard or diagonal lines. Wherever the mask is dark, the module is flipped.
The mask number is saved in the format information, so the phone knows which one to undo. With the mask set to Auto (recommended), the app tries all 8 and keeps the one with the most even, balanced look. You can pick one by hand under Mask in Advanced settings to change how the code looks without changing what it says.
7. Model: which kind of QR code
There are a few types of QR code. Model 1 was the original from 1994 and only went up to version 14. Model 2 added alignment patterns and larger sizes, and it’s the one every phone reads today, so every code this app makes is Model 2. There are also special types like Micro QR (tiny codes with only one finder), but ordinary phone cameras usually can’t read them.
8. Styling and scannability
Because of error correction and the camera’s cleverness, you can change how a code looks quite a lot and still have it work. You can use rounded or dotted modules, change the corner shapes, add colours, gradients, a frame or a logo. But each change takes away some of the safety margin, so follow a few rules:
- Contrast is everything. Use a dark code on a light background. Light‑on‑dark (“inverted”) codes won’t scan on some older apps, and pale colours such as yellow on white may not scan at all.
- Keep the finders clear. The three corner squares are what the camera looks for first, so be careful with unusual shapes and colours there.
- Leave the quiet zone. Don’t let text or pictures touch the code.
- Don’t cover too much. Keep a logo well inside what the error correction level can recover.
The scan score ring next to the downloads checks this for you. The app takes 24 simulated phone photos of your design (near and far, sharp and blurry, straight and tilted), tries to read each one, and predicts how well real phones will do compared with a plain black‑and‑white code. Tap it to see what’s helping or hurting.
9. Static vs dynamic codes
A static code stores your content directly. It works forever and needs no internet connection to exist, but once printed it can never be changed.
A dynamic code stores a short link to this service instead. When scanned, the link redirects to wherever you’ve set it to go. That means you can change where it points after printing, see how many times it’s been scanned (and roughly where and on what devices) in the Dashboard, and schedule, pause or password‑protect it. Because the link is short, the code also stays small and easy to scan.
10. Quick tips
- Test before printing. Scan it with a couple of different phones, from the distance people will really use.
- Size it for the distance. A rough rule is to make the code about one‑tenth of the scanning distance. A code read from 1 metre away should be about 10 cm wide, and never smaller than about 2 cm.
- Use SVG or PDF for print. They stay sharp at any size, while PNG is best for screens and messages.
- Keep content short. Less data gives a smaller version, bigger modules and an easier scan.
- Tell people what it does. A frame with “Scan for the menu” gets more scans than a bare code.