QR code (abbreviated from Quick Response Code) is the trademark for a type of matrix barcode (or two-dimensional barcode) first designed for the automotive industry in Japan. A barcode is a machine-readable optical label that contains information about the item to which it is attached. A QR code uses four standardized encoding modes (numeric, alphanumeric, byte/binary, and kanji) to efficiently store data; extensions may also be used.
The QR code system became popular outside the automotive industry due to its fast readability and greater storage capacity compared to standard UPC barcodes. Applications include product tracking, item identification, time tracking, document management, and general marketing.
A QR code consists of black squares arranged in a square grid on a white background, which can be read by an imaging device such as a camera, and processed using Reed–Solomon error correction until the image can be appropriately interpreted. The required data are then extracted from patterns that are present in both horizontal and vertical components of the image.
- 1 History
- 2 Standards
- 3 Uses
- 4 Design
- 5 Variants
- 6 License
- 7 Risks
- 8 Extension
- 9 See also
- 10 References
- 11 Bibliography
- 12 External links
The QR code system was invented in 1994 by Denso Wave. Its purpose was to track vehicles during manufacture; it was designed to allow high-speed component scanning. QR codes now are used in a much broader context, including both commercial tracking applications and convenience-oriented applications aimed at mobile-phone users (termed mobile tagging). QR codes may be used to display text to the user, to add a vCard contact to the user's device, to open a Uniform Resource Identifier (URI), or to compose an e-mail or text message. Users can generate and print their own QR codes for others to scan and use by visiting one of several paid and free QR code generating sites or apps. The technology has since become one of the most-used types of two-dimensional barcode.
There are several standards that cover the encoding of data as QR codes:
- October 1997 – AIM (Association for Automatic Identification and Mobility) International
- January 1999 – JIS X 0510
- June 2000 – ISO/IEC 18004:2000 Information technology – Automatic identification and data capture techniques – Bar code symbology – QR code (now withdrawn)
Defines QR code models 1 and 2 symbols.
- 1 September 2006 – ISO/IEC 18004:2006 Information technology – Automatic identification and data capture techniques – QR code 2005 bar code symbology specification
Defines QR code 2005 symbols, an extension of QR code model 2. Does not specify how to read QR code model 1 symbols, or require this for compliance.
- 1 February 2015 – ISO/IEC 18004:2015 Information – Automatic identification and data capture techniques – QR Code barcode symbology specification
Renames the QR Code 2005 symbol to QR Code and adds clarification to some procedures and minor corrections.
At the application layer, there is some variation between most of the implementations. Japan's NTT DoCoMo has established de facto standards for the encoding of URLs, contact information, and several other data types. The open-source "ZXing" project maintains a list of QR code data types.
QR codes have become common in consumer advertising. Typically, a smartphone is used as a QR code scanner, displaying the code and converting it to some useful form (such as a standard URL for a website, thereby obviating the need for a user to type it into a web browser). QR code has become a focus of advertising strategy, since it provides a way to access a brand's website more quickly than by manually entering a URL. Beyond mere convenience to the consumer, the importance of this capability is that it increases the conversion rate (the chance that contact with the advertisement will convert to a sale), by coaxing interested prospects further down the conversion funnel with little delay or effort, bringing the viewer to the advertiser's website immediately, where a longer and more targeted sales pitch may lose the viewer's interest.
Although initially used to track parts in vehicle manufacturing, QR codes are used over a much wider range of applications, including commercial tracking, entertainment and transport ticketing, product and loyalty marketing (examples: mobile couponing where a company's discounted and percent discount can be captured using a QR code decoder which is a mobile app, or storing a company's information such as address and related information alongside its alpha-numeric text data as can be seen in Yellow Pages directory), and in-store product labeling. It can also be used in storing personal information for use by organizations. An example of this is Philippines National Bureau of Investigation (NBI) where NBI clearances now come with a QR code. Many of these applications target mobile-phone users (via mobile tagging). Users may receive text, add a vCard contact to their device, open a URI, or compose an e-mail or text message after scanning QR codes. They can generate and print their own QR codes for others to scan and use by visiting one of several pay or free QR code-generating sites or apps. Google had an API, now deprecated, to generate QR codes, and apps for scanning QR codes can be found on nearly all smartphone devices.
QR codes storing addresses and URLs may appear in magazines, on signs, on buses, on business cards, or on almost any object about which users might want information. Users with a camera phone equipped with the correct reader application can scan the image of the QR code to display text, contact information, connect to a wireless network, or open a web page in the telephone's browser. This act of linking from physical world objects is termed hardlinking or object hyperlinking. QR codes also may be linked to a location to track where a code has been scanned. Either the application that scans the QR code retrieves the geo information by using GPS and cell tower triangulation (aGPS) or the URL encoded in the QR code itself is associated with a location.
In June 2011 The Royal Dutch Mint (Koninklijke Nederlandse Munt) issued the world's first official coin with a QR code to celebrate the centenary of its current building and premises. The coin can be scanned by a smartphone and link to a special website with contents about the historical event and design of the coin. In 2014 the Central Bank of Nigeria issued a 100-naira banknote to commemorate its centennial, the first banknote to incorporate a QR code in its design. When scanned with an internet-enabled mobile device, the code goes to a website which tells the centenary story of Nigeria. In 2015, the Central Bank of the Russian Federation issued a 100-ruble note to commemorate the annexation of Crimea by the Russian Federation. It contains a QR code into its design, and when scanned with an internet-enabled mobile device, the code goes to a website that details the historical and technical background of the commemorative note. In 2008, a Japanese stonemason announced plans to engrave QR codes on gravestones, allowing visitors to view information about the deceased, and family members to keep track of visits.
Psychologist Richard Wiseman was one of the first authors to include QR codes in a book, in Paranormality: Why We See What Isn't There (2011), allowing his readers to follow up on paranormal claims by accessing his research through the codes.
Mobile operating systems
QR codes can be used on various mobile device operating systems. These devices support URL redirection, which allows QR codes to send metadata to existing applications on the device. Many paid or free apps are available with the ability to scan the codes and hard-link to an external URL.
URLs aided marketing conversion rates even in the pre-smartphone era, but during those years faced several limitations: ad viewers usually had to type the URL and often did not have a web browser in front of them when they first viewed the ad. The chances were high that they would forget to visit the site later, not bother to type a URL, or forget what URL to type. Semantic URLs decreased these risks but did not eliminate them. Some of these disadvantages to URL conversion rates are fading away now that smartphones are putting web access and voice recognition in constant reach, with QR code providing the URL for instant access.
During the month of June 2011, according to one study, 14 million mobile users scanned a QR code or a barcode. Some 58% of those users scanned a QR or barcode from their homes, while 39% scanned from retail stores; 53% of the 14 million users were men between the ages of 18 and 34. The use of QR codes for "virtual store" formats started in South Korea, and Argentina, but is currently expanding globally. Walmart, Procter & Gamble and Woolworths have already adopted the Virtual Store concept.
QR codes can be used to store bank account information or credit card information, or they can be specifically designed to work with particular payment provider applications. There are several trial applications of QR code payments across the world.
In November 2012, QR code payments were deployed on a larger scale in the Czech Republic when an open format for payment information exchange - a Short Payment Descriptor - was introduced and endorsed by the Czech Banking Association as the official local solution for QR payments.
QR codes are commonly used in the field of cryptographic currencies, particularly those based off and including Bitcoin. Payment addresses, cryptographic keys and transaction information are often shared between digital wallets in this way.
QR codes can be used to log in into websites: a QR code is shown on the login page on a computer screen, and when a registered user scans it with a verified smartphone, they will automatically be logged in. Authentication is performed by the smartphone which contacts the server. Google tested such a login method in January 2012.
In 2008, Ishinokoe in Yamanashi Prefecture, Japan began to sell tombstones with QR codes produced by IT DeSign, where the code leads to a virtual grave site of the deceased. Other companies, such as Wisconsin based Interactive Headstones, have begun implementing QR codes into tombstones. In 2014 the Jewish Cemetery of La Paz in Uruguay, began implementing QR codes for tombstones.
Encrypted QR codes, which are not very common, have a few implementations. An Android app, for example, manages encryption and decryption of QR codes using the Data Encryption Standard algorithm. The Japanese immigration system uses encrypted QR codes on landing permission stamps in passports as shown in the figure to the right.
Unlike the older, one-dimensional barcodes that were designed to be mechanically scanned by a narrow beam of light, a QR code is detected by a 2-dimensional digital image sensor and then digitally analyzed by a programmed processor. The processor locates the three distinctive squares at the corners of the QR code image, using a smaller square (or multiple squares) near the fourth corner to normalize the image for size, orientation, and angle of viewing. The small dots throughout the QR code are then converted to binary numbers and validated with an error-correcting algorithm.
The amount of data that can be stored in the QR code symbol depends on the datatype (mode, or input character set), version (1, …, 40, indicating the overall dimensions of the symbol), and error correction level. The maximum storage capacities occur for 40-L symbols (version 40, error correction level L):
|Input mode||max. characters||bits/char||possible characters, default encoding|
|Numeric only||7,089||3⅓||0, 1, 2, 3, 4, 5, 6, 7, 8, 9|
|Alphanumeric||4,296||5½||0–9, A–Z (upper-case only), space, $, %, *, +, -, ., /, :|
|Kanji/kana||1,817||13||Shift JIS X 0208|
Here are some sample QR code symbols:
Codewords are 8 bits long and use the Reed–Solomon error correction algorithm with four error correction levels. The higher the error correction level, the less storage capacity. The following table lists the approximate error correction capability at each of the four levels:
|Level L (Low)||7% of codewords can be restored.|
|Level M (Medium)||15% of codewords can be restored.|
|Level Q (Quartile)||25% of codewords can be restored.|
|Level H (High)||30% of codewords 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 at most 15 errors can be corrected in each 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.
Due to error correction, it is possible to create artistic QR codes that still scan correctly, but contain intentional errors to make them more readable or attractive to the human eye, as well as to incorporate colors, logos, and other features into the QR code block.
The format information records two things: the error correction level and the mask pattern used for the symbol. Masking is used to break up patterns in the data area that might confuse a scanner, such as large blank areas or misleading features that look like the locator marks. The mask patterns are defined on a grid that is repeated as necessary to cover the whole symbol. Modules corresponding to the dark areas of the mask are inverted. The format information is protected from errors with a BCH code, and two complete copies are included in each QR symbol.
The message dataset is placed from right to left in a zigzag pattern, as shown below. In larger symbols, this is complicated by the presence of the alignment patterns and the use of multiple interleaved error-correction blocks.
The general structure of a QR encoding is as a sequence of 4 bit indicators with payload length dependent on the indicator mode (e.g. byte encoding payload length is dependent on the first byte).
|Mode Indicator||Description||Typical Structure '[ type : sizes in bits ]'|
|0001||Numeric||[0001 : 4] [ Character Count Indicator : variable ] [ Data Bit Stream : 10*charcount ]|
|0010||Alphanumeric||[0010 : 4] [ Character Count Indicator : variable ] [ Data Bit Stream : 11*charcount ]|
|0100||Byte encoding||[0100 : 4] [ Character Count Indicator : variable ] [ Data Bit Stream : 8*charcount ]|
|1000||Kanji encoding||[1000 : 4] [ Character Count Indicator : variable ] [ Data Bit Stream : 13*charcount ]|
|0011||Structured append||[0011 : 4] [ Symbol Position : 4 ] [ Total Symbols: 4 ] [ Parity : 8 ]|
|0111||ECI||[0111 : 4] [ ECI Assignment number : variable ]|
|0101||FNC1 in first position||[0101 : 4] [ Numeric/Alphanumeric/Byte/Kanji payload : variable ]|
|1001||FNC1 in second position||[1001 : 4] [ Application Indicator : 8 ] [ Numeric/Alphanumeric/Byte/Kanji payload : variable ]|
|0000||End of message||[0000 : 4]|
- Character Count Indicator depends on how many modules are in a QR code (Symbol Version).
- ECI Assignment number Size:
- 8*1 bits if ECI Assignement Bitstream starts with '0'
- 8*2 bits if ECI Assignement Bitstream starts with '10'
- 8*3 bits if ECI Assignement Bitstream starts with '110'
Four-bit indicators are used to select the encoding mode and convey other information.
|0001||Numeric encoding (10 bits per 3 digits)|
|0010||Alphanumeric encoding (11 bits per 2 characters)|
|0100||Byte encoding (8 bits per character)|
|1000||Kanji encoding (13 bits per character)|
|0011||Structured append (used to split a message across multiple QR symbols)|
|0111||Extended Channel Interpretation (select alternate character set or encoding)|
|0101||FNC1 in first position (see Code 128 for more information)|
|1001||FNC1 in second position|
|0000||End of message (Terminator)|
Encoding modes can be mixed as needed within a QR symbol. (e.g. a url with a long string of alphanumeric characters )
[ Mode Indicator][ Mode bitstream ] --> [ Mode Indicator][ Mode bitstream ] --> etc... --> [ 0000 End of message (Terminator) ]
After every indicator that selects an encoding mode is a length field that tells how many characters are encoded in that mode. The number of bits in the length field depends on the encoding and the symbol version.
Alphanumeric encoding mode stores a message more compactly than the byte mode can, but cannot store lower-case letters and has only a limited selection of punctuation marks, which are sufficient for rudimentary web addresses. Two characters are coded in an 11-bit value by this formula:
- V = 45 × C1 + C2
The following images offer more information about the QR code.
Micro QR code is a smaller version of the QR code standard for applications where symbol size is limited. There are four different versions (sizes) of Micro QR codes: the smallest is 11×11 modules; the largest can hold 35 numeric characters.
IQR code is an alternative to existing QR codes developed by Denso Wave. IQR codes can be created in square or rectangular formations; this is intended for situations where a rectangular barcode would otherwise be more appropriate, such as cylindrical objects. IQR codes can fit the same amount of information in 30% less space. There are 61 versions of square IQR codes, and 15 versions of rectangular codes. For squares, the minimum size is 9x9 modules; rectangles have a minimum of 19x5 modules. IQR codes add error correction level S, which allows for 50% error correction. IQR Codes have not yet been given an ISO specification, and only proprietary Denso Wave products can create or read IQR codes.
Model 1 QR code is an older version of the specification. It is visually similar to the widely seen model 2 codes, but lacks alignment patterns.
Denso Wave owns a number of patents on QR Code technology, but has chosen to exercise them in a limited fashion. In order to promote widespread usage of the technology Denso Wave chose to waive its rights to a key patent in its possession for standardized codes only. In the USA, the granted QR Code patent is US 5726435 , and in Japan JP 2938338 . The European Patent Office granted patent "EPO 0672994". to Denso Wave, which was then validated into French, UK, and German patents, all of which expired in March 2015. 
The text QR Code itself is a registered trademark and wordmark of Denso Wave Incorporated. In UK, the trademark is registered as E921775, the word "QR Code", with a filing date of 03/09/1998. The UK version of the trademark is based on the Kabushiki Kaisha Denso (DENSO CORPORATION) trademark, filed as Trademark 000921775, the word "QR Code", on 03/09/1998 and registered on 6/12/1999 with the European Union OHIM (Office for Harmonization in the Internal Market). The U.S. Trademark for the word "QR Code" is Trademark 2435991 and was filed on 29 September 1998 with an amended registration date of 13 March 2001, assigned to Denso Corporation.
In the case of no software exploits, malicious QR codes combined with a permissive reader can still put a computer's contents and user's privacy at risk. This practice is known as "attagging", a portmanteau of "attack tagging". They are easily created and can be affixed over legitimate QR codes. On a smartphone, the reader's permissions may allow use of the camera, full Internet access, read/write contact data, GPS, read browser history, read/write local storage, and global system changes.
Researchers have proposed a new High Capacity Colored 2-Dimensional (HCC2D) Code, which builds upon a QR code basis for preserving the QR robustness to distortions and use colors for increasing data density (at this stage it is still in prototyping phase). The HCC2D code specification is described in details in Querini et al. (2014), while techniques for color classification of HCC2D code cells are described in detail in Querini and Italiano (2014), which is an extended version of Querini and Italiano (2013).
Introducing colors into QR codes requires addressing additional issues. In particular, during QR code reading only the brightness information is taken into account, while HCC2D codes have to cope with chromatic distortions during the decoding phase. In order to ensure adaptation to chromatic distortions which arise in each scanned code, HCC2D codes make use of an additional field: the Color Palette Pattern. This is because color cells of a Color Palette Pattern are supposed to be distorted in the same way as color cells of the Encoding Region. Replicated color palettes are used for training machine learning classifiers.
- "QR Code features". Denso-Wave. Archived from the original on 2013-01-29. Retrieved 3 October 2011.
- "QR Code Essentials". Denso ADC. 2011. Retrieved 12 March 2013.
- Borko Furht (2011). Handbook of Augmented Reality. Springer. p. 341. ISBN 9781461400646.
- "QR Code—About 2D Code". Denso-Wave. Retrieved 27 May 2016.
- "QR Code Standardization". QR Code.com. Denso-Wave. Retrieved 23 May 2016.
- "ISS QR Code|AIM Store: Historical Archive". Aimglobal.org. Retrieved 26 May 2016.
- "Synchronization with Native Applications". NTT DoCoMo. Retrieved 26 May 2016.
- Sean Owen (17 January 2014). "Barcode contents". Retrieved 26 May 2016.
- Rimma Kats (23 January 2012). "Starbucks promotes coffee blend via QR codes". Retrieved 26 May 2016.
- Jenny Lee (4 January 2012). "Tesco's cool QR code advertising campaign". Retrieved 26 May 2016.
- "Getting Started with Infographics (deprecated)". google-developers.appspot.com. 26 May 2015. Retrieved 27 May 2016.
- "QR Code Readers for iPhone, Android, Blackberry and Windows Phone 7".
- "Geo Tagged QR Code Map". Retrieved 27 May 2016.
- "QR codes on China's train tickets may leak personal information". Want China Times. Retrieved 16 March 2013.
- "How to jazz up your CV with QR codes - The Times of India". The Times Of India.
- "Herdenkingsmunt met QR code volop in het nieuws!" [Commemorative QR code in the news!]. Koninklijke Nederlandse Munt (in Dutch). 21 June 2011. Retrieved 27 May 2016.
- "New ₦100 Commemorative Centenary Celebration". Retrieved 10 September 2015.
- Novak, Asami (2008-03-23). "Japanese Gravestones Memorialize the Dead With QR Codes". Wired. Retrieved 2013-05-08.
- Skepticality (5 July 2011). "Paranormality". Skepticality.com. Retrieved 27 June 2015.
- "16 August 2011". Retrieved 27 May 2016.
- "Tesco QR Code Virtual Store". 14 April 2012. Retrieved 26 May 2016.
- Sebastián Campanario (16 September 2011). "Marketing futurista: ya se puede comprar con la cámara del celular" [Futuristic marketing: it's already possible to purchase with a cellphone's camera] (in Spanish).
- "Marketers scatter phone-friendly codes across ads". 11 November 2010. Retrieved 26 May 2016.
- "Top 10 QR Code Store examples". 14 April 2012. Retrieved 26 May 2016.
- "SCVNGR Unveils QR Code Payment System".
- "MasterCard starts piloting QkR mobile payment app".
- "Standard - Formát pro sdílení platebních údajů v rámci tuzemského platebního styku v CZK prostřednictvím QR kódů" [Standard No. 26: Format for exchanging payment information for Czech domestic payments using QR codes] (in Czech). Czech Banking Association. November 2012. Retrieved 27 May 2016.
- "FAQ - Bitcoin". Retrieved 10 September 2015.
- "Blockchain.info - Bitcoin Wallet - Features". Retrieved 10 September 2015.
- "Google testing login authentication via QR codes".
- "モノウォッチは生まれ変わります". Retrieved 10 September 2015.
- Michael Keferl (20 March 2008). "QR code graves give a "Memorial Window"". Japan Trends. Archived from the original on 2 May 2012.
- "供養の窓 - 石の声 株式会社" (in Japanese). Retrieved 10 September 2015.
- "Quiring Monuments adds smartphone codes to gravestones". Puget Sound Business Journal. 26 April 2011. Retrieved 10 September 2015.
- "Uruguayan Jewish Cemetery QR-ified" (in Spanish). EL PAIS. 24 March 2014.
- "QR Droid". Google. 19 August 2011. Retrieved 5 September 2011.
- "Encrypted QR Codes". QR Droid. 24 October 2011. Retrieved 5 September 2011.
- "Procedure at port of entry/departure". Retrieved 31 October 2016.
- "QR Code Usage In Japan". Studio Cliffano. 18 May 2009. Retrieved 18 May 2009.
- "Information capacity and versions of QR Code". Denso-Wave.
- "2D Barcode: QR-Code". Archived from the original on 2012-09-15. — TEC-IT
- Orli Sharaby (18 October 2010). "Form Meets Function: Extreme Makeover QR Code Edition". Archived from the original on 2012-07-08. Retrieved 29 July 2011.
- Hamilton Chan (18 April 2011). "HOW TO: Make Your QR Codes More Beautiful". Archived from the original on 2012-07-10. Retrieved 29 July 2011.
- Russ Cox (12 April 2012). "QArt Codes: How to make pictures with QR codes, part II". Archived from the original on 2015-03-21. Retrieved 8 May 2015.
- Russ Cox (12 April 2012). "QArt Coder". Retrieved 8 May 2015.
- ISO/IEC 18004:2006(E) § 6.4 Data encoding; Table 3 — Number of bits in character count indicator for QR Code 2005
- Information technology — Automatic identification and data capture techniques — QR Code 2005 bar code symbology specification, ISO/IEC 18004:2006 cor. 2009, pages 3, 6.
- "QR Code Overview & Progress of QR Code Applications" (PDF). Retrieved 26 June 2014.
- "iQR Code - QRcode.com - DENSO WAVE". Retrieved 10 September 2015.
- "About the patent". Denso-Wave. Retrieved 2016-06-26.
- "DPA"."INPI"."UK IPO".
- "QR Code.com". Denso-Wave. 6 November 2003. Archived from the original on 2012-09-15. Retrieved 23 April 2009.
- "UK QR Code Trademark". Archived from the original on 2012-09-15.
- "EU QR Code Trademark". Archived from the original on 2012-09-15.
- "US QR Code Trademark". Archived from the original on 2012-09-15.
- "Jargon Watch", Wired, 20 (1), p. 22, January 2012.
- "Malicious Images: What's a QR Code". SANS Technology Institute. 3 August 2011. Archived from the original on 2012-07-13. Retrieved 31 August 2011.
- "Barcode Scanner". Google. 1 June 2011. Archived from the original on 2012-09-15. Retrieved 31 August 2011.
- "QR Droid". Google. 19 August 2011. Archived from the original on 2012-09-15. Retrieved 31 August 2011.
- "ScanLife Barcode Reader". Google. 24 May 2011. Archived from the original on 2012-09-15. Retrieved 31 August 2011.
- "Consumer Alert: QR Code Safety". Better Business Bureau. 23 June 2011. Archived from the original on 2012-07-15. Retrieved 31 August 2011.
- "AVG Cautions: Beware of Malicious QR Codes". PC World. 28 June 2011. Archived from the original on 2012-09-07. Retrieved 31 August 2011.
- "EvilQR – When QRCode goes bad". AppSec-Labs Blog. 14 August 2011. Archived from the original on 2012-09-15. Retrieved 31 August 2011.
- "QR Codes: A Recipe for a Mobile Malware Tsunami". Cyveillance, Inc. 20 October 2010. Archived from the original on 2012-07-28. Retrieved 31 August 2011.
- QR Codes hold up to 2.9 KB whereas the smallest known computer virus is about one-tenth that size "The Smallest Virus I Could Manage". Virus Labs and Distribution. 1995. Archived from the original on 2012-09-15. Retrieved 31 August 2011.
- "Beware of Malicious QR Codes". ABC. 8 June 2011. Archived from the original on 2012-08-01. Retrieved 31 August 2011.
- 2D Color Barcodes for Mobile Phones
- Reliability and data density in high capacity color barcodes Archived 24 July 2015 at the Wayback Machine.
- "Color classifiers for 2D color barcodes" (PDF). Fedcsis.org. 2013.
- BS ISO/IEC 18004:2006. Information technology. Automatic identification and data capture techniques. Bar code symbology. QR Code. Geneva: ISO/IEC. 2000. p. 114.
- BS ISO/IEC 18004:2006. Information technology. Automatic identification and data capture techniques. QR Code 2005 bar code symbology specification. London: BSI. 2007. p. 126. ISBN 978-0-580-67368-9.
|Wikimedia Commons has media related to Quick Response Codes.|
- Official website
- Reed Solomon Codes for Coders – an elaborate tutorial on Wikiversity, covering both QR code structure and the Reed Solomon codes used to encode the data.