QR code

A **QR code** (**quick-response code**) is a type of two-dimensional matrix barcode.
Japanese company Denso Wave invented it in 1994 for labelling automobile parts.

A QR code has a square, which contains other elements. There are black squares arranged in a grid. Some parts of the grid are not filled, which makes a randomized pattern. Some parts of the code are markers. These markers help with reading and decoding the information. Usually, the code is read by an imaging device, such as a camera, which has software that decodes the QR code.

QR codes have Reed–Solomon error correction. This means that even if parts of the code cannot be decoded, or they are wrong, the code can still be used.

The required data are then extracted from patterns that are present in both the horizontal and the vertical components of the QR image.

## Information types

In many ways, QR codes are similar to barcodes. They can hold more information, and they also can hold different types of information:

- Numeric information: they can store numbers
- Alphanumeric information: They can store letters
- Binary information: Raw data
- Kanji

Compared to the standard barcodes, QR codes were also used for other things than labelling car parts because the image can be read more quickly, and because more information can be stored. Applications include product tracking, identifying an item, tracking time, document management, and general marketing.

### Information capacity

The amount of data that can be represented by a QR code symbol depends on the data type (_mode_, or input character set), version (1, ..., 40, indicating the overall dimensions of the symbol, i.e. 4 × version number + 17 dots on each side), and error correction level. The maximum storage capacities occur for version 40 and error correction level L (low), denoted by 40-L:
|Input mode|Max. characters|Bits/char.|Possible characters, default encoding|
| --- | --- | --- | --- |
|7,089|3|0, 1, 2, 3, 4, 5, 6, 7, 8, 9||
|4,296|5|0–9, A–Z (upper-case only), space, $, %, *, +, -, ., /, :||
|2,953|8|ISO/IEC 8859-1||
|1,817|13|Shift JIS X 0208||
Here are some samples of QR codes:

## Error correction

QR codes use  Reed–Solomon error correction. There are different levels, depening on the level, with between 7% and 30% of the data bytes missing, the code can still be read correctly:
|Level L (Low)|7% of data bytes can be restored.|
| --- | --- |
|Level M (Medium)|15% of data bytes can be restored.|
|Level Q (Quartile)|25% of data bytes can be restored.|
|Level H (High)|30% of data bytes can be restored.|
In larger QR symbols, the message is broken up into several Reed–Solomon code blocks. The block size is chosen so that no attempt is made at correcting more than 15 errors per block; this limits the complexity of the decoding algorithm. The code blocks are then interleaved together, making it less likely that localized damage to a QR symbol will overwhelm the capacity of any single block.

## Dangers

Even though they are very useful, QR codes also have dangers: The information in the code is not human-readable. A QR code can therefore contain a link to a website which contains malware. If it is read on a smartphone, the QR code can run applications on the smartphone, or activate certain functions on the smartphone. This is a problem of all 2D-barcodes, and is not specific to QR codes.

An attack done using such QR codes, called "tags", is often called "Atagging". In 2010, there was such an attack for Android: the QR code pointed to a website that allowed to download the software ICQ; which was infected with a trojan horse, _Trojan-SMS.AndroidOS.Jifake.f,_ This trojan sent several SMS to a premium-rate Russian service-provider.

To protect against such attacks, many apps to decode QR code display the decoded information; and the user has to actively click to open the website.

## Extensions

There are different extensions to the QR code:

- Designed QR code: Uses the error correction abilities of QR codes to add an image or other design to the code, without affecting its ability to be scanned.
- Micro QR code: A variant that is optimized to be very small. It looks slighlty different, but can still encode up to 35 digits or 21 alphanumeric characters.
- Secure QR code: A QR code with encrypted data. QR code readers can decrypt the data provided the correct key is entered. If the wrong key is entered, the data can't be accessed.
- iQR code: A rectangular QR code. This can be useful for placing codes on curved surfaces.