535965 3551687198980 1476644942 4451588 1997040998 n

A Dense QR Code

Welcome to the Wiki for coding QR Code and other 2D barcode mobile appsEdit

This wiki seeks to be a resource and forum for mobile app developers employing 2D barcode images like QR Code. As a side mission it intends to seek consensus among the developers to grow the use of 2D barcode images especially QR Codes in mobile beyond mere web URLs. In time we hope the community will grow beyond developers to influence industrial users particularly in the medical, legal, marketing industries to grow the use of such a useful technology.


The QR Code was invented in 1994 by DensoWave near the same time as Aztec Code , another ISO standard (ISO/IEC 24778:2008), as a response to the capacity limitations of then current barcodes, and likely to address the scanning orientation requirement. Note that earlier 2D Barcode device models have already arisen in 1991 with PDF 417? by Symbol Technologies and Data Matrix by International Data Matrix, Inc and in 1992 by MaxiCode (A polar Coordinate type barcode as opposed to a plain jane 2D Barcode) used by UPS. All these technologies are covered with patents. Although most of them have released their specs to the public and allowed developers to use them for their own purposes royalty free. There are a few more of these 2D Barcodes (I believe after 1994) : SemaCode , SparQCode? , proprietary E-Reader barcodes as used by Nintendo, EZ Code , Microsoft Tags (technically known as a High Capacity colored barcode) and many more. All these 2D barcodes work equally well there are advantages and disadvantages in particular, capacity, scanning orientation and image space requirement probably varies from barcode to barcode, Error correction is another diffrentiator although most of the standards seem to be gravitating towards using the Reed-Solomon Error Correction which allows a barcode to be read even if it is damaged.This is over and above the use of security features such as the use of check digits (Modulo 11, etc.) in UPC Barcodes and bank account numbers.

2D Barcode CapacityEdit

The latest version of the QR Code has capacity in excess of 4,000 alphanumeric characters, by far it is currently the densest among the royalty free formats and exceeding many other 2D barcode capacities by 1000 characters (please see Side Note below regarding this capacity). It is commonly used to encode websites or youtube videos URL for marketing purposes. A website or youtube URL is a mere 3% or less of the capacity. With a Smartphone reader, a QRCode, like any 2D barcode image, can contain wifi passwords, make a phone call, start an email, send an SMS, give driving directions, set an event and alarm in the phone's calendar, create a contact entry and many more. It makes routine things easier for the rest of us.  An example is the following: you want to recruit people to join your school organization, the normal way you would do this is to post the invitation on a public builettin board in your school with all the necessary information - What, Why, When, Where, and Contact person. The modern way you would do it is to post a poster with all the necessary information as you would normally but complete with a QR Code, or any 2D barcode image, that:  

  1. Provide a URL to your organization's website so they may know more about what you want them to join.
  2. Provide a way so that they can set the meeting in the smart phones calendar as an event with time, and location information and possibly allow them to set an alarm so they will not be late. 
  3. Provides a contact number for the interested students if they need more information.

The same thing is true if you want to invite people in your office to a party. If you want to sell a 2nd hand item and many more.  The previous scenarios are just one of a thousand possible and novel usage for QR Codes, or any 2D barcode image. Can you do this right now? Most smart mobile phone users have the ability to install a QR Code scanner app, and most if not all have scanned one or more QR Codes from the bill boards across the city they live in.  Sadly, only a few apps will actually enable you to easily create such a QR Code, worse, only a handful will be able to decipher the code as intended. This wiki hope to be a major resource for the would be developer of Mobile QRCode apps. Day to day use of 2D barcode images for ordinary people like us can only grow when there is a diversity of 2D barcode flavors? and when developers share their ideas and implement them in majority of the apps.? Attempting to coerce a de facto flavor will only hamper adoption.? User choice of one or more flavors of 2D barcode image will facilitate widespread use including Aztec Code and QRcode.

A google affiliated project  ZXing has started a list of barcode content standards. However, the use of 2D barcode images in mobile is beyond what is documented by ZXing. A similar site of standards is also published by SPARQCode in a way to extend the capability to what is documented by ZXing. Moreover it publishes a web based generator capable of QR code and others using a set of URIs that can be used by app developers to generate the image as opposed to a tradition C or C++ classes found in the other SDKs. For me a wiki document with open ended contributions will be more suitable and useful to push the boundaries of using of 2D barcode images like QR code in mobile than one controlled by a particular project group.

Most of these 2D barcodes are published as ISO standards in the public domain, QR Code is not particularly superior to any of them, the reason for its success is chance, it was made royalty free and then became popular when Zxing adopted them at the same time that smartphones were booming.

Some 2D barcode Trivia:Edit

PDF417 is actually a stacked barcode (several layers of barcodes one on top of another) rather than a true 2D Barcode). It is widely used in paper boarding passes, driving licenses and many more. It is owned by Symbol technologies, one of the biggest suppliers of barcode and RFID scanners.Symbol is now owned by Motorola.

Note: Although the idea of a barcode started way off in 1948, the barcode technology actually only took off in the 1970s with wide acceptance Universal Product Code (UPC) and the commercial availability of the laser scanner. which throws off beams of red (laser) light and then measures the reflection to measure the distance between stripes, prior readers using light bulbs were unreliable. The next leap in barcodes came with the introduction of image scanners which took a photo of the barcode and then worked on the image. This technology leap lead to the development of most 2D barcodes which were not limited to constraints imposed by laser scanning, more importantly it lead to a leap in capacity from less than 100 characters to thousands.

PDF417 is actually the only 2D barcode that can be read by laser scanners, everything else (2D) require optical readers (and of course the camera). 

Data Matrix - is used as the standard barcode by the US Armed Forces in relation to keeping track of parts and supplies in their depots (All US Armed Forces suppliers are required to use them).

MaxiCode is a Polar Coordinate barcode used by UPS

Aztec Code is widely used in rail transport in Europe,? it was also adopted by IATA, (International Air Travel Association) as a? mobile alternative to paper boarding pass? (along with QR Codes and Data Matrix), and for Car Registration in Poland.? Aztec Code though patented does not require a licensing fee to fully implement (encoding or decoding) having been published as public domain. Aztec Code is more feature rich-, more resistant to distortion-, does not require quiet zone and is more nauanced than qr while qr has a slightly larger payload ceiling than Aztec Code when QRcode uses its Lowest Level of error correction (L).


The SemaCode Project - way before any smartphone!

SemaCode is actually the name of a Canadian company that champions the data matrix barcode system. They are the first to actually give mobile phones (see picture - it seems to be an old Siemens phone circa 2003) the capability to read barcodes.

SPARQCode are actually QRCodes physically with icons and captions that tell the scanner what is inside. They have a website that allows you to generate your SPARQCode online -moreover you can code a URI and send it to their website and generate a barcode from your app.

QR Codes gained popularity in Japan after the mobile providers (NTT Docomo) started using them to swap personal info using the MECard format. It was originally used by Toyota in manufacturing (probably in response to Data Matrix). QR Codes gained further usage by being one of the first to publish and allow usage royalty free. IT was adopted in the west when some people started translating the japanese comments and error messages to english and when it was championed by the Open Source (google) project ZXing. It requires a Quiet Zone, which is a distinct (originally white) border around the barcode, something not required by the other barcodes (particularly Aztec (probably Maxicode as well) which reads from the center and spirals outward).

More QRCode trivia, the open source code particularly the codes pertaining to alignment has been used by Japanese innovators to create perfectly scanning notes (they printed pad papers with the 3 aligning boxes then use an app to scan the codes and file them into a digital notebook).

QR Code Versions:Edit

QR Codes evolved in capacity and coding during its 20 years of existence. In 2005 QR Code was described in an ISO Document during the time v 40 was documented with a capacity of  close to 8,000 digits. v 4 in comparison has a maximum of 50 characters. With the growth of capacity, QR Codes become denser as shown in the table below. Please note that QR Code version depends on the content inside so if you specify to the encoder that you want a L QR code and proceed to encode 150 characters or less, you will probably wind up with a v 27 QR Code. The version will go up depending on content with the maximum version/capacity being a QR Code  v 40.

Number of Bits per length field
Encoding  Ver. 1-9 10--26 27-40
Numeric   10 12 14
Alphanumeric   9 11 13
Byte     8 16 16
Kanji      9 10 12
QRU settings  S M L

Note: bits and code words are actually terms derived from the Reed Solomon Error Correction. 8 bits comprise a code word, A code word is what the error correction remembers and restores. Number of bits per length of field relates the logical content with a fixed area within the image

Qr Code dimensions (in modules):Edit

The QR Code version vary by size (dimension).
Version dimension # of modules
1 21 x21 441
2 25 x 25 625
10 57 x 57 3,249
40 177 x 177 31,329

Modules is a barcode term that defines an area of  particular width that we see as a black stripe (in ordinary barcodes). In QR Codes this becomes rows and columns of squares that are either black or white.. As per decoder specification the modules cannot be less than 3 pixels wide so the smallest image that can contain a v40 QR Code is an image of at least 522 pixels x 522 pixels. + an appropriate area of white space (additional 4+ pixels around the modules). 

Note: Due to angle of shot, focus, lighting, distortion, dust on the lens, etc.,  the bare minimum will be hard to scan but will be easier as the image grows bigger  > 3 pixels per module.

Photo below shows modules in QR Code v 40::

QR Code decoding, the iPhone camera,  and size of the video feed.Edit

QR Code decoding actually turns the camera on video mode (auto focusing )  and continually scans the field to detect Qr Codes and Barcodes. Upon detection it turns off the camera and processes the captured image.

An iPhone 3GS has VGA video which means the video feed is 640 x 480 pixels (480p). This falls short of the minimum requirement to read a v 40 QR Code  even when everything is perfect (angle, focus, lighting, etc.). It will of course continue to import QR Codes of all sizes via email or through the camera roll or via 3rd party apps such as dropbox and Evernote. If there is a real requirement to scan, an iPhone 3GS can always switch to manual scanning, capture an image of sufficient size (> 640 height). Unfortunately our testing  shows the manual method to be troublesome as focus, lighting, and angle comes to play.    An iPhone 4 , a 4S and an iPhone 5 has 720p, 1080p and 1080p video respectively and is tested to scan v 40  QR Codes effectively, an iPhone 4S  with the correct setting in fact has no problem decoding a v40 QR Code with more than 7,000 digits. The v 40 QR Code needs to fill the width of the view finder barcode and the video capture size needs to be set to high. 

Error Correction: Error Correction (EC): QR Codes support Reed-Solomon Error Correction (RS EC),  the same EC used in DVDs and Blue Ray that allow the disk to be played even with a nasty scratch that leaves swaths of data unreadable.   


QR Code Levels and Masks

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

The restoration is actually possible through building/coding (polynomial) redundancies throughout the media - in the case of the QR Code - in the image, due to this, the character capacity of the QR Code decreases as the EC level increases. 

QR Code Art Edit

IMG 0366

QRU QR Code Art

Artists have taken to modifying the generated pictures to make them artistic by putting logos, changing colors, rounding corners and still allowing them to be scannable - these are all thanks to the built-in Error Correction.

The screen capture on the right is from an iPad QR Code app called QRU HD. It makes use of the extensive imaging capability of apple to color the QR Code and blend  (multiple) images(logos). Coupled with its capability to produce A0 posterrs from layers of text and images it can easily create aesthetically powerful and effective documents within minutes.  

QR Code art requires caution - the only reason Color QR Codes work is QR Codes require 8 bit black & white images which means 24bit color images produced by the camera or captured from the photo album are converted to mono prior to decoding. If the color contrast is not distinct, it is likely that the app will not be able to decode the image.

With regards to the logo.image. The overlayed logo in effect covers pixels of the QR Code that contains information. It works because Error Correction can deduce the contents based on redundancies located in the non covered parts. Once the entire information cannot be reproduced anymore, the QR Code becomes unreadable.  

Testing modified QR Codes cannot be overemphasized. Color and images make your printed document appealing but if the QR Code cannot be read then the entire thing fails. 

Lately sites have come out to produce QR Code arts - typically for a fee:

among my favorites is Visual Lead:

Another is Quikkly - it's not a traditional QR code, but instead gives you a dedicated space within the code to customize however you wish. So you don't have to have dots over your brand logo or whatever.

If you want a more comprehensive list - A blogger called QR Code Artist maintains a list of QR Code Art generators in his website :


Maximum character storage capacity (40-L)

Encoding max # of characters bits /char characters supported
Numeric 7,089 3 1/3 0-9 (all digits)
Alphanumeric 4,296 5 1/2 0-9, A-Z (all caps), , $,%,*,+,-,.,/,:  (Note this does not include tab characters and CRLF) 
Binary/Byte 2,953 8 ISO 8859-1 (Latin 1) ASCII + some other charcters.
Kanji Kana 1,817 13 Shift JIS X 0208

Note:  The published capacities are actually guidelines - in testing (using codes based on the original open source C program- (I use it in my app QRU HD)) - I was able to generate and later scan QR Codes that  exceeds the capacity (not by much)  - more than 3,100 Latin1 characters and 7100 numeric

Encoding : UTF-8 and UTF-16Edit

The default encoding of the smartphones is UTF-16. The reason your phone is able to represent all manner of languages including Chinese, Japanese, Thai, Estonian, etc. is due to UTF-16 (the encoding standards is known as Unicode as defined in Annex Q of  ISO/IEC 10646). The way it works is it tries to fit all these myriads of characters within 16 bits, for some it will 32 bits. 

UTF-8 is the smaller brother of UTF-16 it is similarly able to encode all unicode characters in 8, 16, 24, or 32 bits per character.  For the english language, UTF-8, ASCII, and ISO 8859-1 are similar,  ISO 8859-1 is in fact a subset of UTF-8 that represents all UTF-8 charcters that can be represented in 1 byte (8 bits), however for the QR Code to actually handle unicode, it requires an overhead called a BOM which is a prefix of characters that need to be inserted as part of the code to be encoded otherwise it goes awry, there are some documented cases of an eastern european language being decoded as Japanese.

Note: Since UTF-8 is variable sized. the resulting capacity of the QR Code, particularly when non english or Latin-1 charcters are used is much less than 2,953 - the BOM overhead.

New Barcode TechnologyEdit

In this section, what we describe is not confined to a QR barcode. Many of the other types can also be used here. Nothing in the section depends on the specific properties of a QR.

The use of a barcode can be greatly enhanced if the barcode is put on an electronic screen, to let a nearby user control it with her phone.

In the figure, suppose the Controller, which sends images to the screen, is at the Internet address It makes an http query to a Website, The website sees that the query is coming from It makes the URL "" and converts this to a barcode. It sends a page with this barcode to the Controller, which shows it on the screen. A pedestrian, Jane, comes along. She scans the barcode with her phone. The phone decodes and brings up a browser and loads it with the URL. This causes a query to the website. From the lowest level mechanism of the Internet, the website gets the address of her phone (which is different from But the website sees from the URL that there is the address Hence  the website sends pages to both devices. The page sent to the phone lets Jane control the large screen.

Note that none of the input peripherals of the screen are accessible to Jane. No keyboard, mouse, keypad etc. But how realistic is this scenario? It turns out that this describes several important and currently underserved applications.

The first is the shop window. The screen is inside the shop window, facing the street. Jane is a pedestrian. As a practical matter, the shop cannot put the keyboard or mouse of the screen outside the window. They will be vandalised or stolen. The use of the barcode lets the pedestrian get control of the screen with one click (by scanning the barcode).

She can now search the shop's entire inventory using her phone. But the results are NOT shown on her phone. They appear on the much larger screen in the window. This is far more immersive. Depending on the items being searched for and the size of the screen, the items might be life size or larger. This gets around a historic problem with shop windows. Too small to show everything for sale.

Also, a shop window exists for only one reason. To persuade the pedestrian to enter the shop, when she has not already made that decision. The barcode lets her engage with the shop, to preselect items she might be interested in.

The barcode method also permits a social dimension to shopping. Some people like to shop with friends. Whereas surfing the web at home is solitary.

Many retailers can benefit from using the barcode. A jeweler for example. When a jeweler is open, it might show some diamonds in its window. But these are not the most expensive. When it is closed, there are usually no diamonds in the window. Wasteful. A jeweler is often in an expensive retail area. When it is closed, its window is wasted. Now with the screen and barcode, a pedestrian can see all the diamonds. Plus, the images can be larger than life. And she can zoom in and rotate the images. None of which is possible when the shop is closed.

Or consider a car dealer. A car is often the largest item in any shop window. But a dealer can only fit a few cars in its window. Now, suppose it puts a very large screen. A pedestrian with a phone can change the colour of the car, open the doors and trunk, and rotate the images.n only fit a few cars in its window. Now, suppose it instals a very large screen. A pedestrian with a phone can see every model, change the colour, open the doors, rotate the car etc. Note that there is now the concept of paired web pages. A small web page for the phone and a large page for the large screen. The phone page has low bandwidth. Which helps improve the robustness of the interaction since the phone uses a wireless connection to the Internet. In contrast, the large screen has a wired connection, which gives much more bandwidth. Most of the visual branding takes place on the large screen.

Another type of retailer is a realtor. When the product (a house) even in principle cannot fit inside the store. You can try this prototype . Bring it up in a desktop. It simulates a screen in a realtor office window facing the street. It shows one listing at a time, with a barcode. Scan the barcode with a phone. The desktop changes to a gallery of thumbnails of listings. Use your phone to scroll through the gallery and to drill down to see a single listing on the desktop. 


Another use case is the electronic billboard (aka. electronic signage). Times Square New York, for example. Now if a billboard shows a barcode, two strangers could play a turn based game on the billboard. In front of the entire plaza. Enhanced mind share for the advertiser.

There is also a use case intermediate between the shop window and the billboard. Restaurants and bars have these screens. Behind the bar or mounted from the ceiling. Deliberately out of reach of the customer, to prevent the screen getting dirty.

The use of a barcode to let a phone control a digital screen is elegant in the scientific sense. Simplest solution. Minimum hardware, from the retailer's standpoint. Other methods have been suggested. Here we quickly discuss these.

  1. A touch screen . This is not possible when the screen is behind the glass of a shop window. Unless perhaps the screen is put flush against the inside of the window. But even here, some touch screens are unlikely to work. And for electronic billboards or screens deliberately deployed out of reach of customers, touch screens will not work. Plus, a touch screen often costs 20 - 30 % more than a non-touch screen of the same size.
  2. NFC . Typically, NFC is for much shorter ranges. Less than 30 cm. Also, this requires that the retailer needs to install an NFC transmitter near its screen. Extra cost to the retailer.
  3. Simulated touch screen. For the shop window. A regular non-touch screen is used. On the inside of the shop window, an invisible grid of wires is used to detect where the pedestrian touches the outside of the window. This is extra hardware compared to the barcode method. Some people are reluctant to actually touch a window that many others have touched. And this will not work, even in principle, for a billboard.
  4. Image detection . The retailer has cameras near its screen, pointed at the customer outside. She points at different parts of the screen and the retailer software tries to detect this from the camera data. But the retailer has to pay for the cameras. At least 2 are needed, to detect in 3 dimensions. While for a billboard, it is ambiguous where a distant person should stand, to control the billboard.

Split ScreenEdit

Suppose Jane uses the above barcode method to control a shop screen. Bob comes along and wants to control the screen. What happens? The retailer can entirely through software set a maximum number of users. Each user gets the exclusive control of a subset ("split screen") of the screen. In the first figure below, Jane is controlling the entire screen and is looking for dresses. But the screen continues to show a barcode. When Bob scans this, the screen splits left and right. Jane gets the left and Bob gets the right. The second figure assumes that Bob then goes on to search for umbrellas in his split screen. Notice that the screen still shows a barcode. This means that another person can also use it. Doris comes nearby and wants to look for a hat. She scans the barcode. The screen splits into 3 parts. And they do not have to be of equal area. The third figure assumes that Doris has started searching and is looking at a hat. But the screen still continues to show a barcode.  Mike ventures near, to look for baseball bats. He scans it and searches. We get the fourth figure.

As a practical matter, a retailer is unlikely to have more than 4 simultaneous users of a large screen.

Notice how the use of the barcode is far easier than having the large screen use cameras to do image recognition of the users. The latter is one alternative to a barcode. But it does not scale to having multiple users independently control different parts of the screen. 


You walk near a shop and see a screen in a window, playing ads. But you cannot control the screen. Also you cannot hear it. For this, the shop has to place speakers outside the window. Extra hardware to install. And vulnerable to damage or loss. But suppose the barcode method is used to let a pedestrian control the screen. A phone plays audio. A web page can have audio. Thus the web page on her phone that is used to control the screen can play an audio track corresponding to whatever the big screen is showing.

This is important because alternative methods for audio mean extra cost for the retailer. If the speaker is not in the pedestrian phone, then it must be elsewhere. Anywhere, that has to be provided by the retailer. Earlier, we explained that the use of the barcode is the minimum hardware solution (hence minimum cost) for the retailer. Also true for audio.

Earlier, we described electronic billboards. You have seen conventional hardcopy billboards. But you likely have never heard a billboard. Yet in 1950, an audio engineer could have rigged up a loudspeaker as part of a billboard. Technically possible yet rare. Mostly because of concerns of noise. The audio might be considered noise. Now, if an electronic billboard has a barcode to let someone control it, the barcode can also provide an audio track.

Now consider the use of split screens in a shop window. Each person gets her own audio track for her split screen, corresponding to whatever she looks at. This is another obstacle for other audio methods. Suppose the screen allows 2 split screens. A retailer would have to put 2 speakers outside the window. Each with a mono track for a split screen. But if the retailer now wants to allow 3 split screens, an extra speaker has to be installed. Even worse, the combination of the audio from those speakers is very likely to be garbled. Noise.

In the gallery of split screens, it is possible for a barcode to give a person's phone just an audio track, instead of control of a split screen or the entire screen. Hence a group of people could follow along and see and listen, when someone is actively controlling a split screen.

If the latter person leaves, or is logged out after controlling for too long, then the next person to control that split screen can be chosen from the group of listeners.

Movie TrailersEdit

The use of a barcode can be extended to inside a movie theatre, in the room where the movies are shown. Since 1913 , before the movie appears, trailers have been shown on the projection screen. A trailer is an ad for another movie. If a trailer persuades a patron to see its movie, she is most motivated when the trailer ends. But she cannot buy a ticket to it. No impulse buy. The theatre cannot close the deal.

A barcode can solve this problem. The left diagram above shows a patron inside the theatre, with a phone. On the side wall is an electronic screen. The right diagram is an example of what it shows. There is a barcode. The patron scans it from her seat. She gets a page from the theatre chain. She can buy a ticket (or several) to a future screening of any of the trailer movies being depicted.

But the screen can also show a table. Each line is a trailer that is shown in the current session. Next to the title of a movie is a counter that starts at 0. When the first ticket is bought, using this method, the counter goes to 1. When the second ticket is bought, it goes to 2. Etc. Next to it is a fixed number, a threshold. When the counter reaches the threshold, the price per ticket falls for everyone who bought. A gamification. Another feedback loop, to induce a patron to buy. 

The barcode and the table act to give the theatre an extra revenue source. It sells the tickets now, at the point of maximum persuaston.

There is another revenue source, to the party that owns the data. It sells the sales data to the studios. Suppose a movie spans 2 genres, action and romance. The studio wants to maximise sales. It makes 2 trailers, action and romance, and pays the theatres to show them. Suppose the theatre finds that the romance trailer sells more tickets than the action trailer. Likely, the theatre will then mostly show the romance trailer, because it wants to sell many tickets. When the studio finds out, then the TV commercials are likely to be the romance theme. Currently, the most expensive part of the publicity budget for a movie is the TV commercial, not the trailers. So often trailers are shown 3-6 months before opening night, while commercials are only shown 1 month before.

The barcode method gives sales data, which is far more definitive than focus group data. In the latter, the studio pays people for their opinions. In the former, patrons are voting with their money.

There is another important advantage of the barcode method. If a patron pays with cash at the theatre entrance, for a given movie, the theatre does not know anything about her specifically. It only knows that someone paid for a given movie, Alpha. She goes into the theatre and uses this method to buy a ticket to a trailer movie, Gamma. Because the latter might be shown weeks later, the theatre can ask for her contact address (email), to send reminders. Also, the theatre now knows that she is a repeat customer, and the 2 movies that she paid for, Alpha and Gamma. The URL for the session she is in can uniquely specify Alpha. While the web page where she buys tells the theatre about Gamma. Knowing her viewing preferences is important marketing data. The theatre can (carefully) send her emails in future, to suggest other movies.

Important because most people know that if they wait 1 year after a movie comes out, they can watch it at home for a few dollars on DVD or streaming video. But going to a first run theatre can cost $US12. So people who go to a theatre are willing and able to pay the extra amount. When the theatre uses the QR to sell to them, the context is favourable. The response rate is likely to be much higher than if the theatre advertises on a web page to someone surfing the web at home. The theatre is using the large screen and the integrated sound system to show the trailer with maximum sales effect.

Outdoor CrowdEdit

The movie trailer method can applied to an outdoor crowd. The common idea is that there is a group of people in an area and most have phones. A flatbed truck is used. There is an electronic screen on the truck, connected to the Internet. The truck drives to the crowd. Which might be outside a sporting event. Or a concert. Or outside nightclubs. The truck stops. The screen advertises items likely to appeal to the crowd. These might be physical items offered by nearby retailers. A person can buy using her phone. There is a group discount to encourage gamification and purchases.

One consideration is safety. When the trailer is moving, the image on the screen can be turned off or a single static image can be used. Perhaps to advertise the service, once the trailer is parked. This avoids the problem of a screen distracting drivers. The method needs a pedestrian to successfully scan the barcode, which is best done when the screen is not moving. So disabling the main use of the screen when moving is not an undue restriction. Also, when the trailer is parked and the screen is showing the barcode and table, this can preferably be facing the crowd of pedestrians, and not the road.

Technical Notes on QR Code AppsEdit

There are probably close to a few dozen QR Code mobile apps all of them use a handful of Software Development Kit (SDK) to build the product. Known core library (SDK)

Anatomy of a QR Code

providers are ZXing Image processing library. Z Bar SDK, Shopsavvy , ManateeWorks , Scandit. Particularly Z-Bar is available for free under the GNU LGPL 2.1, while ZXing is available under the Apache License 2.0 and it is probable that most of the numerous free to public scanners will be based on either of them.

All these SDK will typically have a few (at least a scanner and a decoder) but not all the components listed below:

  1. A Scanner - typically uses an autofocus phone camera to detect the barcode and capture an image
  2. A Decoder - that reads the barcode image and comes out with a string of text that the barcode contains.
  3. A Parser - that interprets the resulting string by what it intends to do ... we can call this action items. If the parser does not detect any action item it will default to a text string message.
  4. A number of Action Item Codes (sample codes are found in some SDK) - these are the codes invoked to ask the phone to make a phone call, do SMS, invoke the maps, book an event in the phone's calendar, save the contact in the address book.
  5. Utilities such as Scanned history allows the user to reuse the action items of previously scanned barcodes without rescanning the barcode again (i.e. look at a website or get directions to a location).

Note,Windows 8 at least the version installed with the 2012 Nokia Lumia phones (as shown by a friend) has a built in decoder. I am still investigating the capability of its parsers, it was not able to decode imbeded addresses and phone numbers from a Post Card QR Code and instead presented them as text. I suspect that it has aility to detect web URLs and some of the more standard standalone URIs. (Please add if you know more!) ​In Addition SDKs with the ability to create QR Codes will have the folowing components:

  1. Editors - Usually absent or a small part of the sample app, Editors are codes that create strings that go into the barcode or QR Codes.
  2. Encoder + Setup - The code to create the image, depending on the app a reverse equivalence of the parser (the Setup) maybe required to string together output from several editors.
  3. Packaging - This may or maynot be present depending on the intent of the app, some apps notably QRU and QRU Mini will attach the barcode to business cards, post cards, etc.
  4. Sharing - Codes to allow sharing - Email, Facebook, Twitter, etc. (Note Sharing codes are also present in some read only QR Code Apps that allow the user to shared his scanned history items).

Parsers may or maynot be included in the SDK, ZXing for one comes with an extendable parser that allows the extension of the capabilities of the QR Code. Consequently, apps based on ZXing, should the developer choose it will have inherited this capability to interpret multiple URIs such as phone calls, SMS, youtube videos, websites and many more. For IOS, as of 2012, ZXing support QR Code only decoding. furthermore the resulting codes generates multiple warnings when checked for optimization (X-Code Analyze) so it is typical for an independent IOS developer to use Z-Bar which is royalty free and has full support for a variety of 1D and 2D barcodes including the UPC Barcodes typically found in grocery items, Note though that Z-Bar do not include a parsing logic, parsing is to be built by the app developer.

Compound Parsers.Edit

The parser available in the ZXing sample application, SPARQCode, and the custom parser developed for the QRU and QRU Mini IOS Apps are compound Parsers. This means that a single QR Code can stack a Phone call, an SMS, A website URL, a VECard, VCalendar and location URIs all into a single QR Code and each of these individual URIs will generate an action item in the QR Code app. There is a mistaken notion that a QR Code image is one to one with a single URI, a good app should be able to handle multiple URI's in one QR Code. Note also that in the case of a compound QR Code such as a digital singing postcard - the intent is to use the multiple action codes together or one by one, so the music maybe playing while a formatted letter is read and options to call the sender, or look at map directions, and book an invitation to your phone calendar are present in 1 screen:

Action Item Coding.Edit

Initiating an action item in the code specifically for IOS may or maynot require heavy programming. My experience is as follows: Using the Native ? Objective C I found 2 general ways of coding action items; ? one is to go deep into the Apple frameworks and the other more simple one is through URI Coding which opens a browser window (separate from your app) and uses the capabilities of Mobile Safari to do what you want (except for the address and maps which open the apple map apps (google maps in IOS 5.1 and earlier). Of course if you want to do everything within your app, you may try to open an instance of UIWebserver to host the safari session inside your app (have only tried this with YouTube uri which is actually the a valid URL"), For phone, SMS Typically I get more satisfaction using the deep frameworkswhich has more capability but sometimes, the frameworks do not add more than what a URI can provide and it also makes sense to do the task outside your app - case in point are youtube and driving directions which you can only achieve using a URI link (to or to (I'm still studying Nokia' Here APIs to figure out how to invoke the mapping directions, I suspect though that in the end it will require a URI to ).?

URI Coding: Edit

URI schemes for smart phones is nearly universal IOS, Android, Windows Phone 8, and I'm pretty sure FIrefox Mobile OS and Blackberry 10 will support the scheme. I can verify that IOS, Android, and Windows 8 not only have standard URI Schemes (phone calls, sms, email, youtube) seems to be universal but they allow app developers to register their own URI schemes and when you try to interface with apps such as facebook or Twitter, you can be sure that uri access to these apps are uniform throughout the platforms. The emergence of URI seems to be related to universal support for the capability to run HTML5 applications. The URIs however can be invoked within Native framework application easily through the incorporation of a browser/ webserver interface in the app (In apple IOS this is the UIWebserver class).   

URI Links The following links are ? the resources I know to these URI Schemes:

1. Official Apple URI schemes

2. Wiki of known 3rd party URI schemes for IOS - ?

3. This website contains a list of URIs to modify the settings of the iPhone (the URIs work for IOS 5.0 and below, this has been removed by Apple with 5.01 and 6.0. There is an ongoing petition to restore them that seems to be going nowhere, on the other hand, what is really required are URIs that will work with all phones, an airplane or silent mode barcode,  for example can be posted in movie houses, legal courts,  and churches):   

example: Airplane Mode On — prefs:root=AIRPLANE_MODE  

4.Google URI Schemes for Android.

Sample CodesEdit

IOS Objective C URI Coding Sample Code:

NSString *smsstring = @"sms:+123456789";

NSURL *uri = [NSURL URLWithString:smsstring];

[[UIApplication sharedApplication] openURL:uri];

Android URI Coding Sample CodeEdit

String? uri? =? ""? ? Utils.getLatitude(ShowDetails.this)+","+Utils.getLongitude(ShowDetails.this)+"&daddr="+userLatitude+","+userLongitude;

Intent intent = new Intent(android.content.Intent.ACTION_VIEW, Uri.parse(uri));
intent.setClassName("", "");

HTML5 sample Code Fragment (using the URI in HTML5)Edit

<a href="sms:444?body=hello">Tap to sms hello!</a>

Native Framework Coding:Edit

Although you can easily move from 1 smartphone platform to another by coding HTML5 particularly for apple (and I am guessing for the rest platforms as well),nothing beats the performance and feel of a native app, below are some instance where the URI equivalent is not as flexible as the native framework


1. SMS - Coding a Subject field and a body for iMessage

2. Email - with Subject and predefined body

3. Simple Geocoding (get coordinates of an address without invoking a map).

4. Invoking the Media Player / Ipod? (no URI or not in the? apple URI list? )?

5. Creating contacts (no URI or not in the apple URI list )?

6. Calendar Events? (no URI or not in the? apple URI list? )?

7. Local or Push Notifications? (no URI or not in the? apple URI list? )?

sample code for SMS:

// NSDictionary *dict = [[NSDictionary alloc] initWithObjectsAndKeys:smsresult,@"phone",smssubject, @"subject", smsbody, @"body", nil];

NSString *phoneto = [parsed_SMS_dict valueForKey:@"phone"];

//NSString *subject = [parsed_SMS_dict valueForKey:@"subject"];

NSString *text = [parsed_SMS_dict valueForKey:@"body"];

MFMessageComposeViewController *picker = [[MFMessageComposeViewController alloc] init];

picker.messageComposeDelegate = self;

if ( [MFMessageComposeViewController canSendText] == YES) {

NSArray *array = [NSArray arrayWithObject:phoneto];

picker.recipients = array;

picker.body = text;

[self presentModalViewController:picker animated:YES] }

In summary the code above pass an array of recepients and a dictionary object containing the subject and body to the MFMessageComposeViewController (which is the native apple SMS and iMessage window. present Modal ViewController will pop a fullscreen window from your app, once finished the control goes back to you.

HTML 5 Universal Apps:Edit

HTML5 allows development across all the different mobile platforms through products such as Phone Gap (which makes the code a local app). At the heart of this flexibility is HTML5's support for local data, rich media (graphics, audio, video and even vector based drawing (SVG)),  CSS3 which mimics all the native UI controls (buttons, etc) and javascripts (events and scripting) and URIs that provide access to the phones core functions such as the address book, phone, SMS, location service, calendar, and maps. HTML5 deep integration with IOS and Android (and other platforms I believe) also provide adequate performance compared to Native framework applications (at least as far as IOS is concerned).   

Java  and SDK based on C or C++ integration

  Java integration with  PC based HTML browsers is straightforward, it requires a Java Virtual Machine (JVM) to run in the client side and work hand in hand with the server. However this is only true for the PC and none of the mobile devices see Oracle Java Bulletin . Historically, there were efforts by Sun (before being gobbled up by Oracle) to provide a JVM for IOS. This was however rejected by Apple (and Steve Jobs) along with (most famously) Adobe Flash and the .Net (SIlverlight) framework as performance and security risks. In short, along with Flash, Java and .net never made it to HTML 5 (although sliverlight is alive and well in Windows Phone 8)  through  Java works in mobile through direct integration with the OS. Android for one is developed primarily through Java. 

Despite its power, HTML5 is not a low level language and integration with the open source SDKs are not straightforward. Without this integration, task like decoding or encoding  a QR Code becomes impossible.  Its a good thing though that 3rd party solutions are available that allow mix and match of C, C++ and HTML 5.

The one that I know of  is MoSync.   (please add if you know of more).

I am a native IOS framework developer and frankly, if you are just developing for one platform, nothing beats using the native frameworks in terms of power, speed, support, and completeness of documentation. However I fully realize that the other platforms are equally important as well and coding universal apps maybe the way to go. 


Up and coming WebRTC API  (Real Time Communications) promises camera and microphone control via javascripts. The test browser is Chrome. I tested the demoes, one of them works in Safari on my macbook, none works in my iPad whether I am using Safari or Chrome. still once it gets to the stable version it should not be a long wait to get to the Mobile browsers specially since the technology makes more sense in Mobile than in the Macbook/PC.

For QR Codes apps though, I do not think that you will be able to avoid the C based  SDKs in the near future and will have to work with MoSync or any other bridge to make that universal app, even if you can use URIs for QR Code Encoding (SparQCode) and Decoding (online decoding exist see  exist but no URIs).  It will be clumsy!

Best Practice / Respect the Users:Edit

Creating Media where the Barcode is to be printed:

IMG 0371

Action List

Respect the user, label the 2D barcode image instead of surpring the user especially with services which cost money (calling, sms, data usage (interweb, email,? XMPP, calendar)). Otherwise encapsulate the URI in plain text to allow the user to choose to act on the URI or not.

Scanning Program responsibility:

if you are coding a scanner - the best practice in this regard is to display a list of Action codes and display whatever information is possible and allow the user to elect to proceed or not. Use an icon to indicate what type of URI, and then the actual contents of the URI or whatever will fit in the title space. ? Doing this allows the user to evaluate the action item at a glance. Also provide an option (such as a detail disclosure button (for non aple users this is the Blue circular icon with the > sign in the rightmost field) to allow the user to see the URI in full before executing it. Doing this does not replace labeling the barcodes properly in the printed media but it adds a layer of protection to the user.?

The worse way to code a scanner program is to just perform the action URI directly after it is scanned with no user intervention for the user to elect to go or not, but then if your display will not give any indication to what the URI is, there is no point in asking for that confirmation.?

Despite what marketing and technical people think, majority of the smart phone owners are not technically adept and experiences like this will make them wary and kill of our industry, this is specially true as mobile shopping starts to take root.

QR Code Generating URIsEdit


SPARQCode has a set of URI's to generate various QRCodes. Check out this page Note though that the generated QR Code will have SPARQCode footprints all over it. The use of the URI allows any online app (in any web enabled device to just do the following code to generate a custom QR Code (er SPARQ Code):

Sample Code for IOS:

SPQRQCodeString *sparqstring = @"";

NSURL *uri = [NSURL URLWithString:sparqstring];

[[UIApplication sharedApplication] openURL:uri];

This will open a mobile browser window with the QR Code outside your app. For seasoned IOS app developers, you may want to use a UIWebview class to maintain control inside your app and subsequently capture the generated image for further editing or improvement.

Note: SparQCode has been acquired by Yahoo and the links do not work anymore - however there are at least a handful of sites that generate QR Codes from URI, among them the most popular is Googlechart: Below is a sample uri to the google chart QR Code generator (in PHP code)

$newQRCode="".$entity_id."%3BDIN%3A".$din."%3B&chs=200x200&choe=UTF-8&chld=Q|2' alt='qr code'";

it is later embeded in a generated  HTML email (via AJAX):

$body .=  "

<img src=\"".$newQRCode."\"  height=200 width=200 ALIGN=RIGHT>



Windows 8 Lenses AppsEdit

As an IOS Developer I find the Windows 8 architecture as refeshingly different. For QR Code Scanning apps - it will be best to register your app as a Lenses App which gets invoked if you open the camera and your app is open or through the camera options. To date Windows 8 3rd party lenses are strikingly bare having said that, one of the native "Lenses" app decodes QRCodes but I find that the parsing routines can be improved.

Another impression is the following: Although development of Android and IOS apps maybe worlds apart, the behaviour of the phones and the frameworks/ architecture has a lot similarity and parallelism. In contrast, Windows 8 is a total departure in terms of how it handles the phone contacts and how it utilizes online resources to profile a contact person, (the camera you already know). The Nokia Maps (soon to be renamed Nokia Here with SDks for both Android and IOS sometime 2013) and accompanying Nokia Drive applications are remarkable furthermore the data is downloadable which is not a problem because the phone has an sd card slot. . It will be interesting to see what gets developed for the platform.

QR Code scanning and the Mobile Phone Camera:Edit

Preface: QR Code versions & sizes:

Chronologically, QR Codes did not start out as a dense barcode, but as the years passed by more versions were introduced to bump up the capacity. The latest version and the densest is QR Code v 40 which boast of close to 8,000 digit capacity with an EC level of L (7% of the codes are replicated). In practice, when creating a QR Code, the creation logic starts with a setting that specifies an amount of bits (lack or white) on a certain length of field and then piles up the columns and rows as the data content grow larger. The densest/ largest it can currently become is a QR Code v 40. QR Codes with less data will have a QR Code version that is less than 40 - maybe a v 29 or a v 10.

In barcode lingo a QR Code v 40 has the dimensions of 177 x 177 modules while a QR Code v 10 has 57 x 57 modules.  In terms of scanning the barcode, current logic requires the module to be at least 3 pixels to scan properly. For a 2D Qbarcode such as the QR Code this means a minimum size of 3x3 pixels per module. Given that a QR Code v 40 has 177x 177 modules it roughly translates to a minimum dimension of 522 x 522 pixels, given the requirement for white space and factors such as angle of shot, lighting etc. the minimum scan dimension for a v 40 will easily reach 600 x 600 and up.

Here lies the problem:  an iPhone 3GS is equipped with a 2.1 Mega pixel camera and a VGA video feed wqhich is 640 x 480 (or 480p).  A VGA camera will never generate a sufficiently sized image capture to meet the minimum 3 pixel per module.  An iPhone 4.0 on other hand has a 720P video feed - actually enough as long as the barcode + sufficient white space  fills up the view finder. An iPhone 4S has a full HD video feed (1080P) and given the correct settings will always scan a v 40 easily.

The other issue:  Most of the SDKs were coded a few years ago, the default video settings for the camera were set to 480P or VGA. This can be remedied through parameter settings - put it at its highest (1080P), but it needs to be done to scan QR Code v 40 properly.

Solutions for iPhone 3GS  - The solution for an Iphone 3Gs and older is to import the v 40 QR Codes either by email or through the camera roll. If you really need to use the camera, Apps such as QRU has an option to capture a still image of the barcode but due to focus,  lighting and angle issues, these tends to be a hit and miss affair.

Scanning from a distanceEdit


Up the electric post

Particularly from the marketing point of view, QR Codes received a lot of flak and became notorious because all of a sudden we see a lot of printed ads that contain foolish QR Codes that cannot be scanned, I am pretty sure that before they were released, the QR Codes were tested for scanability, howerver their final placement required them to be scanned from a distance and this is where most of the trouble and its hilarious consequence are rooted.  As noted earlier, the scan only works when the modules are more than 3 pixels wide.  The remedy of course are multiple,  (first used with ordinary barcodes, Module is an area that is either black or white within the barcode). 

1. Use a higher resolution camera (or swap your old phone with a new one) but make sure that your scanner app can actually make use of the higher resolution.

2. Scan nearer.

3. If your scanner has manual controls, try that, also try to zoom. Note that smartphones only have digital zoom and at a certain level, when pixelations starts, the image becomes unusable.   (Note also that manual controls is sort of a hit and miss process particularly for those SDK that build in QR Code recognition). The reason I put in this entry is because the max resolution from video feeds is significantly smaller than the max resolution of images from manual shots in a lot of camera. Iphone 4S for example has an 8 MPxl camera vs a 1080 P video feed.     

4. However the responsibility of ensuring that the QR Codes are scannable rest on the marketer. who needs to prepare his poster to be scanned from a distance. and ensure that the QR Codes are large enough to scan properly. There is actually someone who took the pains to measure the appropriate size of the QR Code dependent on distance, It is a outdated  - I believe it assumes that the phone camera  uses VGA video (standard equipment across all phones circa 2009-2010), as we know already these measurements change dependent on the the smart phone video mode particularly if it has HD Video a 720P and preferably a 1080p.  See link: QR Stuff

5. The metrics that work for me: If I will not be able to personally check all the QR Codes to be deployed , I will ask the person on site to take a video of the site using his phone camera with some item of known size like a 1 meter drum,   this should be a good starting point in planning my QR Code poster (or a basis to decide not to put up the QR Code after all.Read on -> .

The image size produced by the video feed is known, if you have a FullHD video camera the image size of the entire view finder is 1080x1920 if you have a VGA feed - it is 480x640. Therefore  if I have a v40 QR Code  whose size is 177x177 module with a 4 pixel boundary and add another 20% for non optimal lighting, the image size requirement of such a QR Code  will be in the 700x700 range and needs to fill up 70% of my view finder (assuming a 1080P feed) whether I shoot the QR Code from 4 inches away or from a mile away (Of course the simplest QR Code requires less, a v1 is 21x21 modules - with all the adjustments - a mere 80x80. and a QR Code with 50 characters (v4) requires 33 x 33 modules around 120x120 pixels minimum).

Notes:  As far as posters are concerned most who post posters aspire for readability - that words read from a distance are readable by the human eye. It is important to realize that the phone camera is vastly inferior to the human eye. If our eye is a camera  it will at least have a 576 Mega Pixels sensor and a telescopic lens that range from wide angle to telephoto. Using our eyes to get an approximate feel of scannability over a distance will fail if you do not realize this.  In fact since people bring their phones with cameras all the time it is a simple matter to use the video - Ask the person to take a phone camera video of the place where the poster will be setup - then you should know (based on the required percentage of the QR Code image vs. the view finder) how big a QR Code you should be setting up. 

Don't be surprised if the required sizes reaches 1x1 meter or more, particularly since phone cameras are wide angled.

Error Correction and QR Code art workEdit

Part of the strength of QR Code (as well as some of the other 2D Barcodes such as Data Matrix and Aztec Barcodes) is resistance to error and even partial erasure of the
Qr code error correction levels

EC Levels

image. This is achieved through an the use of Error Correction Algorithym (both during Encoding and Decoding). In particular QR Codes use the Reed-Solomon Error Correction (RS) to be able to tolerate up to 30% loss of the image and still allow the barcode to work. RS can be very confusing if you are not proficient in math but a simpler explanation on how it works in QRCodes is found in

Anyway, because of this capability, some smart people found out that you can get away with defacing some parts of the barcode to make it artistic. ? To the best of my knowledge the process to do so is hit and miss - or you modify the barcode incrementally until you achive what you want or it cannot be decoded anymore. A starting point though is the wikipedia page of QR Code? which explains the various parts of the barcode image. Videos of incorporating logos, colorizing, and making QR Code artwork are available in Youtube (How to put a logo inside a QRCode) .  The general tools of the trade is adobe photoshop and similar tools, the QRCode error correction need to be set up high (as per video - Q works better than H because of less clutter),The process is actually putting the logo/ art layer on top of the QR Codes and testing if it still works. If you are an average MAC user free tools are Preview and Skitch which can do the job as well. 

Online services to create QR Code arts abound these are the sites I know of (please feel free to add your site if you do this service):

1. comes with designer QR Codes and dynamic QR Codes to track for free


3. QRArtist Apps have also been developed to do this one of them (maybe the only one at time of publication are QRU for the iPhone and QRU/HD for the iPad). 

Mobile Usage SectionEdit

Mobile Usage sections are for QR Code content standards that are available with current apps. Developers may add their app to the Apps that support the URI Section, they may also add new sections. The update are valid so long as an existing app actually support the standard and perform the action as indicated.

Making Phone CallsEdit

The standard URI for phone calls is TEL: number - where the valid characters should be the all numeric characters and the + sign. using the + sign indicates that it uses a country code.?

TEL:9999999 or


Use of ( )- ? parenthesis or hyphens - ? is prevalent in directory listing to indicate an area code, ? use of these () is generally not accepted by the phone as is, A good parser may allow the usage and strip off the ()- prior to passing the number to the phone for calling, but it is not universal, so if you have to code, do not include the ()- characters.?

A secondary format would be to use the prefix PHONETO:

PHONETO:9999999 or


Note: The number should be any number that the phone can recognize so +12141234567 is a valid number, so is 1234567. For most smartphones the following applies: An international phone number needs to be preceeded by a "+" sign, any number without the + sign is considered local, most do not accept 123-4567 with the hyphen as a valid phone number. It is however conceivable for a parser to omit the hyphens and do other editing or masking prior to actually passing the number to the phone for the actual action. For the Phone URI, in the absence of a usable prefix like TEL: or PHONETO: the + sign distinguishes the number as a phone number, even if it is just a local number.

Apps that support the URI

Most ZXing SDK based apps that implement the included parsing logic.

QRU and QRU Mini IOS Apps

Coding Tips:


NSString * urlString = [NSString stringWithFormat:@"TEL://%@", phone];

[[UIApplication sharedApplication] openURL: [NSURL URLWithString:urlString]];


Windows 8 Mobile

Windows 8 has a native decoder the URI format it is able to detect is being investigated.

Sending an SMSEdit

There are a couple of standards and variations vailable for SMS. These are:

1. SMS:99999999;subject:xxxxxxxxxxxxxx;text:xxxxxxxxxxxxxxxxxxxxxx;

2. SMSTO:99999999;subject:xxxxxxxxxxxxxx;text:xxxxxxxxxxxxxxxxxxxxxx;

3. An IETF RFC was submitted in the following format:

For those not familiar IETF is the Internet Engineering Task Force is a de facto authority on all standards pertaining to the internet and related fields. This RFC is currently on hold pending document revisions, among the comments are that GSM which is part of the title is not relevant anymore particularly with the advent of smartphones, Also note the absence of the subject field, previous SMS do not have this field in Short Messages, the technology has since moved all the smartphones will have the subject field already.

Meaning of Fields: 1. SMS: or SMSTO: instructs the parser that the next series of number will be the phone number for the SMS.

99999999 is the phone number. This field is mandatory!

2. subject: or SUBJECT: instructs the phone that the following characters will be part of the subject field for the SMS. This field is optional!

3. text: or TEXT: denotes the following text to be part of the body. This field is optional!

For these formats, Parsing typically requires a delimiter and a defacto delimiter is the ";" (semi colon) character.

Apps that support the URI

Most ZXing SDK based apps that implement the included parsing logic.

QRU and QRU Mini IOS Apps  

Coding Tips:


If you need to code the subject and body you need to use the IOS MFMessageComposeViewController rather than just invoking a browser using an SMS uri.


please add

Windows Mobile

Windows 8 has a native decoder the URI format it is able to detect is being investigated.

Drafting EmailEdit

The defacto standard for email is

MAILTO:email address;SUBJECT:heading of email;

The QR Code creates a draft message with the appropriate email address/ addresses and subject, it is particularly useful for technical support services.

Apps that support the URI

Most ZXing SDK based apps that implement the included parsing logic.

QRU and QRU Mini IOS Apps

Coding Tips:


If you need to code the subject and body you need to use the IOS MFMailComposeViewController rather than just invoking a browser using an email uri.


please add

Windows Mobile

Windows 8 has a native decoder the URI format it is able to detect is being investigated.

Giving map directionsEdit

The format is as follows:

IMG 0296

1. geo:longitude,latitude,altitude

sample :


2. ADDRESS:109 North Bridge Road, Funan Mall, SIngapore , Singapore 179097;

Both of these format actually invokes the native map application to give the user driving, transit or walking directions from the person's current location to the location specified. For Android it invokes google maps, for IOS, it may invoke the native Core location services or code a google map or any of the Nokia Here web based interfaces, pending the announced development and release of an actual Nokia Here IOS SDK.

Apps that support the URI

Most ZXing SDK based apps that implement the included parsing logic.

QRU and QRU Mini IOS Apps

Coding Tips:


Apple Maps

Apple Maps - Please see Apple's Core Location services as well as the Mapkit Classes - The corelocation services is a set of services that determine where on earth you are and reports them as geo coordinates - longitude, latitude, altitude, if you want the address, you do reverse geo coding, on the other hand if you want the geo coordinates from an address you do reverse geo coding.  The mapkit framework is actually a set of classes that allow you to display a map, and do things to them like put points in the map, zoom and reverse zoom, annotate among others. Both use delegate methods, which means you create an instance of the class and it runs independently like a black box, the delegate methods allow you to get back control at certain points in the execution.

Core location gets the data from  Assisrted GPS or if you have the later version of iPhone GLONASS , the russian equivalent of american GPS

Note though that the mapkit classes do not provide driving directions, You can off course annotate the map with a destination point and you current location and then draw the directionas manually using these classes. ? If you are coding for IOS 6 to get driving directions you need to access the Apple map services via a ? (set of) URI  to ? ? (prior to IOS 6.0 the URI to use was google maps see section on google maps).

<a href=",+CA&saddr=cupertino">Directions</a>

see the link for more details, to use see discussion on google maps below:

Google Maps

In IOS 5 and below the short cut for reverse geocoding is using Google Maps URI as follows:

url = [NSString stringWithFormat: @",%f&daddr=%f,%f&t=h&z=18",

location.latitude, location.longitude,

location_x.coordinate.latitude, location_x.coordinate.longitude];} //@",%f&daddr=%f,%f&t=h&z=18"

[[UIApplication sharedApplication] openURL: [NSURL URLWithString: url]];

In IOS 6 The Google maps app for IOS came out, to interface with the google maps app for IOS a new set of URIs  was published  starting with the prefix .. "comgooglemaps://?"

Note - With IOS 6 and the subsequent junking of Google maps as a Native app, the interface has changed drastically though the uri ""remain valid.

Similar to Core Location from apple, Google has its own Google maps SDK with its own set of URIs, there are a number of subsystem inside making very complex map applications possible. The SDK has versions for Javascript, Android, IOS, Web services and a few levels more. The SDK requires an API Key and a fee is levied for paid apps and free for free apps. Note though that the use of uri's - comgooglemaps or do not require the use of an API key.    

Nokia Maps 

You may use Nokia Maps in your IOS apps through any of the web based Nokia Here APIs - (Java Script, Restful, and HTML5). In a conference Nokia did say that they will have an IOS SDK soon (not yet in the web site) , and an Andoid SDK very soon. Existing native SDKs are available for Windows Phone, Java and qt (a programming language used for Nokia Symbian OS and N9).

General Note for using Restful Services:

You will need to plug in a Restful client SDK but it will should with any Restful web services enabled sites (incluiding Nokia's and LinkedIn) I know of at least 2:




November 2012 Apple vs. Google vs Nokia

Basic Location and Driving Maps:

Speaking only for the local maps in SIngapore, Apple's mapkit is a few months old compared to google whose satellite view seems to be a mix between old and new and Nokia Here which is clearly using maps outdated by at least 5 years (I live in a place where they have reclaimed and the beach area the beach area and put a dam. (Punggol, Singapore), The dam (Sungei Serangoon) can be clearly seen in Google and Apple's maps but not with Nokia Here (both in the website and the downloaded app), Of course all these changes over night so just keep posted, the area is being developed even know so the apple and google maps are at least a few months old and needs to be changed soon. This is surprising because Nokia Drive is in use in 80% of the car based GPS systems including those used in Singapore.

Transit Maps

Google and Nokia both have Public Transit directions that apple does not have.

Street View

Google only although ? Nokia? has just completed acquisition of Earthmine a ? 3D Street Level technology company ? and is probably on the verge? of having one.


Apple and Nokia


From the little that I know Android programmers should be able to use Google Maps easily. The other option is Nokia Here via the web based APIs and the up and coming native Android SDK. Nokia has a Java SDK - Not sure if anybody has tried to port it to android and why Nokia is coming out with an SDK specifically for the platform.

Windows Mobile

Windows 8 has a native decoder (one of the Lenses App) I have not really looked into the parser but have seen it open a web site. I suspect that geo location and Address URIs are supported. Please note though that Nokia has a powerful map (Nokia Here) and Drive Application, accordingly 80% of the commercial car GPS systems actually use Nokia Maps. It should be studied if there are ways to extend the URI to utilize the Nokia apps better.

Bulletin Boards, Refrigerator Doors & Reminders / Local Notifications (with corresponding Alarm)Edit

The format is as follows:

542856 3630186881423 1476644942 4484282 315442557 n

Reminder / Local Notification

REMINDER:Dinner date with Maria;Date:2012/12/31;Time:18:30;Text:Remember to buy flowers;

Apps that support the URI

QRU and QRU Mini IOS Apps

Coding Tips:


I have yet to see a uri to perform local push notification or I need to review the documents again, Apple local notification framework allows you to set alarms and open the app based on the event you set even if the app is not running, the added capability makes it distinct from alarms set by the the calendar framework.


please add

Windows Mobile

Windows 8 has a native decoder the URI format it is able to detect is being investigated.

Setting a Calendar Event Edit

An iCalendar standard format was filed with the IETF to set an interchange format among the different calendar application.

iCalendar along with any standard are evolving specifications, please refer to the link to ensure you follow the latest one.

Apps that support the URI

Most ZXing SDK based apps that implement the included parsing logic.

QRU and QRU Mini IOS Apps

Coding Tips:


IOS has an EKEvent (Event Kit) that you need to use to interact with the phones calendar database. There are some complexities involved as you deal with the phones native database.


please add

Windows Mobile

Windows 8 has a native decoder the URI format it is able to detect is being investigated.

Contact Information and Business CardsEdit

543626 3599878403730 1476644942 4471256 628820604 n

Business card

The defacto standard is the VCard format, chances are, if you use the native facility of your phone and decide to share a contact, it will create a Vcard for you in the.vcf file format and ask you if you want it emailed or SMS.

Some Notes regarding VCard: .A comment published about it though is that it is verbose and takes up valuable space in a limited medium such as a QR Code. With IOS 6.0 Vcard recreates the entire Addressbook contact. Please follow the link to view the complete specification: VCard .

MECard , a standard popularized by NTT Docomo, the leading Mobile provider in Japan. The MECard is compact and a popular format to exchange information with friends or social contacts. The format is as follows:


KDDI au a Japanese mobile provider (that competes with NTT Docomo) published a contact format similar to the MECard with the addition of a multiple phone numbers emails, and even names,  also an obscure field called MEMORY which I believe decides if you want it in the SIM or in the phone memory. This makes sense for frequent international travellers who swiitches SIM Cards from country to country.The dual names also makes sense particularly with Overseas Chinese particularly (in HK and SIngapore) who will typically have a separate English Name  distinct from their Chinese name at birth and I believe the practice may also be prevalent among overseas Japanese, Vietnamese and Koreans.   

BizCards are also documented in theZXing Barcode Content site as follows:

BIZCARD:N:Surname;X:Firstname;T:Jobtitle;C:Company;A:business address;B:business phone number;E:email;;

QRU Extended Format,

The extensions were originally devised to allow the MEcard and BizCard formats to be extended with additional Addressbook fields from Apple like facebook userid, twitter handle, etc. When not using QRU or QRU Mini, the Me Cards and Biz Cards QR Codes should still scan properly, the extra fields will likely just be ignored.

 Starting with  QRU 2.0, the app has moved to adopting the VCard standard which has a more complete definition of all the fields including Social Networking, Instant messaging and all forms of phone and fax extensions. The extended format continues to be used for ME Card entries, and the parser continues to support BizCards. 

The QRU extended fields are:

MID:middle name;

DEPT:company department; (Bizcard)


MAIN: office trunkline;(Bizcard)

MAIN: Home landline ;(MEcard)

DID:contact direct line; (Bizcard)

FAX:fax number;

MT1:messenger or social network type such as Twitter or Facebook; (Note the format supports up to 4 social networking or messenger types - MT1-MT4 )

MV1:messenger or social network identity Value such as @abcdef or mistletoe; (Note: and corresponding networking or messaging identities - MV1-MV4)

STYLE:x; (0-3) proprietary information to pickout the visual template for printable business cards

(Note, the TEL: in MECards and B: in Bizcards in the QRU extended format) actually signifies the mobile phone number). For QRU and QRU Mini v 1.0 N: designates the First Name and X: designates the Surname). 

Apps that support the URI

QRU and QRU Mini - See above QRU Extended format Note QRU family of products will support VCards in  lieue of BIZCards in subsequent releases with backward compatibility for the current formats, the MECard and extensions will be retained as an option for interoperability reasons with the other scanners.

The Zxing sample code (2.1) support the MECard Format.

Coding Tips:


Easily one of the most complex to code is dealing with the IOS Addressbook. It is conceptually different from the rest of the UIKit Classes with conceptual structures such as the ABmultivalue and due to its origin as a Core Foundation Class. Dealing with it and preventing memory leaks is a major task. This is specially hard for programmers spoiled with ARC and is less mindful of object creation and release/destruction cycles. Apple has very good documentation and samples though but again the major obstacle here is the conceptual leap. Note: There maybe easier ways to do coding with the addressbook using vcf files but it means trading off the ability to select particular fields which I find very important in coding address book tasks.


please add

Windows 8 Mobile

Windows 8 has a native decoder the URI format it is able to detect is being investigated.They have a conceptually different model for contacts which is supposed to be integrated with the persons online footprint (particularly Facebook and Twitter where it puss among other the profile pictures). It should be interesting to see what gets developed in this space.

Website URLEdit

QR Codes use website standard URLS as follow:;Title:only in JPan 1;

Notable - Since the web (and for that matter - video) is such an engaging medium, the marketing industry in particular Real Estate, Product promotion and Services marketing have made heavy use of the QR Code to do extend what they use to do with the print media.

Apps that support the URI

QR Code containing website URLs are almost exclusively used in mobile or tablet environments.Among mobile apps with the ability to scan and read QR Codes, there is close to universal support for the url format. Note that the URLs may or may not be compliant with the mobile browser in use. In general Mobile browsers are universally compliant to HTML 5 and above, the use of older HTML coding, Adobe Flash, and other technologies not compatible with HTML5 may result in the incorrect rendering of the page.


One of the easiest to invoke are access to Mobile Safari through the following codes:

NSString * urlString = [NSString stringWithFormat:@"http://%@", url];

[[UIApplication sharedApplication] openURL: [NSURL URLWithString:urlString]];

Note: though the the codes above opens the mobile safari app, if you wish to host the web session within your app or needs more control you need to open an instance of the UIWebview class and pass the url to it.


please add

Windows Mobile

Windows 8 has a native decoder the URI format it is able to detect is being investigated.

Youtube VideosEdit

There are a few formats but youtube videos even in mobile are simple URLs to the youtube mobile site:;Title:only in JPan 1;

Other formats are:


Apps that support the URI

There is close to universal support for youtube videos via the url format. Note that the URL formats also allow support for other video sites so long as they feature HTML5 video. IOS do not support the Adobe flash video format.


Youtube is equally easy coding via a formatted url:

NSString * urlString = [NSString stringWithFormat:@"", youtubevideoid];

[[UIApplication sharedApplication] openURL: [NSURL URLWithString:urlString]];

Note: Please note there is a difference between using the url and the mobile youtube - which is more appropriate for mobile. See also the notes on website urls.


please add

Windows Mobile

Windows 8 has a native decoder the URI format it is able to detect is being investigated.

Play mood musicEdit


Apps that support the URI

QRU and QRU mini utilize this format to play songs existing in the iPhone, iTouch or iPads music files. it is used by itself or in conjunction with a QR Code Postcard to set mood music with a message. It looks for the song played by the artist in a particular album. If there is none, it will look for the song played by the artist without regards to the album/version. If there is none it will play the song by any artist.


Coding an Ipod player app is not an easy task but rewarding nonetheless apple has good sample codes that allow the task to be doable. to be sure ,you will need to be familiar with the Media (music media) schema, awareness of the Media states, managing events and many more.


please add

Windows Mobile

Windows 8 has a native decoder the URI format it is able to detect is being investigated.

Digital PostcardEdit

The post card formats an adobe PDF Postcard (standard postcard size) using the app.
576291 3725265018317 1476644942 4532609 783726681 n

Digital Post Card

Basic Post Card:

Message:name and formatted postal address of the person you are sending the message to;Text: post card text; MOOD:x;TextColor:R,G,B,A;TextSize:99.999999;

Basic Properties: Message: denotes a QR Digital Postcard will be parsed, the suceeding fields is extracted from the contact address book and should contain the recepient name and postal address.

Text: postcard Text message

MOOD: Designates preexisting templates provided by the app. The app should be able to allow the user to select a background picture or even use the camera to format one however, the QR Code as a medium will not be able to support this. The QRU App uses proprietary file types to allow sending the custom pics via email, the MOOD templates anticipate that the QR Code maybe scanned instead of sent by email therefore the requirement for templates.

TextColor: RGBA values - Red, Green, Blue, Alpha, The software should allow for specification of the custom text colors that provide best visibility against custom backgrounds.

Textsize: (font size)

Extended Post Card Properties:

The digital post card message is more effective with imbedded action items included in the QR Code, these maybe any of the following

Play a song (mood music):


Send a geographical location coordinates


Send a postal address:

ADDRESS:full postal address;

Send a contact number (phoneto)


Set a Calendar Event

VEVENT: .......

Send contact information


Send website or URL information;Title:only in JPan 1;


Message:name (addressee) x'0D0A' (CRLF) address1 CRLF address2;Text:blabla .... bla ......bla;MOOD:2;TextColor:,0.5,0.5;TextSize:42.09909;geo:150.0000,0.001290.0;;MECard:...;VEVENT:MP3:song,artist,album;

Apps that support the URI

The digital post card are proprietary formats developed for the QRU apps . It is the developers intent to allow free and wide spread use of format, it is however urged that any further use, modification, or extension of the format should be documented in this wiki page.

Medical Emergency InformationEdit

The idea for its use came from the Blood Donor cards issued by the Red Cross when you donate blood. it wil contain the following information:

Blood donor card
  1. Blood type
  2. Birthday (age is important for medical and legal reasons).
  3. Allergies and existing Medical Conditions that require special emergency treatment.
  4. Next of kin Name, Contact number and address.

The donor card is kept in the person of the accident victim, a responding medic can scan the card, pass the information to the hospital emergency medical room who can immedietely call the next of kin. More importantly, First Aid treatment can be harmful if the victim has pre-existing medical conditions. Use of the card prevents application of the wrong first aid treatment. ​Format:

MEDICALINFO:FNAME:first name;LNAME:surname;ADDRESS:postal address (typically the next of kin address);BIRTHDAY:mmm dd,yyyy;BLOODTYPE:x;Text:pre-existing medical conditions relevant to emergency medical treatment;CNAME: Next of kin full name;CRELATION:next of kin relation ship with donor/victim (example wife or father);CPHONE1:1st contact number of next of kin;CPHONE2: 2nd contact number;

Apps that support the URI

The medical info are proprietary formats developed for the QRU apps . It is the developers intent to allow free and wide spread use of format, it is however urged that any further use, modification, or extension of the format should be documented in this wiki page.

Luggage Tags, Bag Tags, Kiddie CardEdit

Luggage Tags and Bag Tags QR Codes simply contain a PHONETO: and SMSTO: uri to inform the owner that the bag was found.

The phone number and email are also printed in the luggage tag, the QR Code just makes it convenient to call or SMS.

The Bag Tags are 1/2 the size of luggage tags shile the kiddie card contain the monther or fathers contact information should the child wander off in a crowded public place. Apps that support the URI

Phone and SMS uri are widely available in most of the scanning apps.

Kiddie tag
527267 3594702234329 1476644942 4469480 572828194 n

Luggage Tag

Dog Tag


Andoid has the ability to login to a wifi programatically and an app can make use of the interface to logon to wifi, TheZXing project includes wifi settings as one of the


conveniences of using QRCodes The format is as follows:

WIFI:wifi name;T:WPA;S:SSID;P:password;

The wifi name is a name to identify the wifi station

The other fields are important:

T: signifies the encryption used - WEP, WPA, WPA2, or none

S: denotes the SSID - this is what your computer or mobile detects as the wifi connect point.

P: Password

Apps that support the URI

Wifi parsing is part of the ZXing sample app and should be widely available for Android phones.

QRU and QRU Mini support reading the settings which you may copy and paste the password to gain access:


QRU also implemented QR Codes as memory triggers that allow the user to remember passwords the format is as follows

PASSWORD:password;FOR:usage (text).

Note: A Printed copy of the QR Code can be printed and placed in strategic places (example server room) to allow the operator to keep security while ensuring that access for the correct person is always available. Apps that support the URI

QRU and QRU Mini support reading the settings.

Setup (QR Code that documents a procedure)Edit

Also for the Server room or similar environments to act as reference for infrequently used procedures, or procedures that change periodically.


Note: A Printed copy of the QR Code can be printed and placed in strategic places (example server room) to allow the operator to perform the procedure properly. Ordinary Household use can be things as simple as setting the region code of your Blue Ray Player which gets reset everytime there is an onlinbe update.

Note:although v 40 of the QR Code standards support more than 4,000 alpha numeric charcters not all QR Code encoders are able to encode and certainly not all readers are able to effectively scan a 4000 character QR Code. a practical limit for the mobile readers currently available seems to be around 1,000 character or less, still an enormous capacity considering that the barcodes (UPC and EAN-13)we see in the grocery shelves has a capacity of 13 bytes.  

Apps that support the URI

QRU and QRU Mini support reading the settings.

Skype Video Calls:Edit

Skype has a standard URI that allows it to be called from 3rd party apps such as the QR Code Apps. It has varying degrees of support dependent on the platform. Understandably Skype supports the Windows 8 platform fully with smaller function support for the other platforms particularly IOS. See

Requirements: The developer needs to register as a skype developer


The format used was the following:

skype:skypeuserhandle?call&video=true;Title:skype username; The initial part of the Barcode content contains a valid Skype URI,   Title,  an optional field is required to label the action item so the user knows who he or she is skyping. the Skype User handle works whether it is a phone number, and email address or an actual skype name. With the microsoft acquisition the skype identity is moving slowly to be aligned wit the users Microsoft Live ID.

Apps that support the URI QRU and QRU Mini  (2.1 and up) support reading the settings.

FaceTime Video Calls:Edit

FaceTime is the video calling interface of Apple. FaceTime is Apple to Apple only.


facetime://9999999';Title:name of user    The initial part of the Barcode content contains a valid Facetime URI which can either be the iPhone number or a valid Apple ID.   Title,  an optional field is required to label the action item so the user knows who he or she is contacting.

Apps that support the URI QRU and QRU Mini  (2.1 and up) support reading the settings.


WhatsApp recently published an official URL scheme see[http:// ]   

URL Parameters Opens
app - The WhatsApp Messenger application
send New chat composer
abid Address book ID of contact to start a chat with.

If contact with this ID has only one whatsapp-able phone number, application will open a conversation with that contact. If contact with this ID has more than one whatsapp-able phone numbers, application will present a menu with all phone numbers available for chat. If contact has no whatsapp-able phone numbers, or contact with this ID does not exist, or this parameter is missing, application will present contact picker listing all contacts available for chat via WhatsApp.

text If present, this text will be pre-filled into message text input field on a conversation screen.

The URL scheme is somewhat distinct from other URL schemes in the sense that a lot of preparation work is required to make use of it.. In particular it uses the ABID or the AddressBook Record ID as a key to open a chat session with another user. This is ok except that the ABID will change from 1 device to another and is not dirrectly usable with QR Codes. (e.g Abe Lincoln may have an ABID 0f "023"in my iPhone but if I send a QR Code using the ABID 023 to a friend, chances are Record ID 23 will point to another person). 

To make WhatsApp QR Codes work, the abid has to be figured out by the client app and the url need to be modified to conform to whatsapp standard. What the QR Code needs to convey (to the client app) is who the target person and this is most clearly done through the name and number.

In short we have implemented a proprietary whatsapp URL scheme for QR Codes in the following format:


The parameters except for the string can be in any order, the only mandatory fields is the firstname and number, everything else is optional. 

Apps that support the URI QRU, QRU HD,  and QRU Mini  (2.2 and up) support reading the settings.

The QRU Products is also capable of sharing the QR Codes and pdf files with other whatsapp user through support of the whatsapp image file format.

Mobile PaymentsEdit

Paypal launches Shop & Pay on the Go that allows shoppers to shop & pay using a Paypal app to scan QR Codes issued by the store (This is probably a derivative of the Paypal express checkout transaction - I suppose detailing the store and the total amount) and then performing the usual paypal online verification and transaction process. For those interested paypal has an SDK that comes in Java, C#, and PHP as well as complete libraries for IOS and Android.

There should be more news coming in this space as Paypal is not really the payment option of choice for most people, the Credit Cards and Cash Cards however seems to be leaning to NFC technology though instead of barcodes, the main issue being NFC is consistent with the prevalent Cash Card POS Hardware. Security is a secondary reason, (if you ask me, same if not better levels of security can be had in other ways without the NFC hardware).

Trivial Notes: NFC an evolution

For those who do not know what NFC is - NFC is a derivative of RFID (Radio Frequency IDentification) - RFID has been at logger heads with barcodes for decades. whereas barcodes are printed - RFID tags are manufactured. RFID has a few standard types that allow scanner to scan them from 10cm to as far as 200 Mtrs. This hasmade RFID a USD 7 B industry today. RFID is used in almost all contactless tracking solutions, from Employee IDs, to Warehouses and anti-shoplifting. and all new passports as recently mandated by ICAO - (a UN agency governing Civil Aviation and among others the technical capabilities of passports worldwide). Being contactless/ Radio oriented it provides capabilities beyond the barcodes with additional cost. Passive tags range from 5 cents to USD 5.00 a piece.

Smart Cards - In mobile payments Smart cards immedietely succeeded the mag stripe technology in  Credit cards  and ATM Cards. It requires direct contact but is more durable than  mag stripes which need to be swiped. It is used for secure transactions. The security is derived via several levels of authentication, among them is the use of PKI (Public Key Infrastructure) which involves the matching of a Private (In chip) key with the registered Public key as stored in a 3rd Party  Certification Authority (very similar to the role VISA or Mastercard plays in the credit card transaction between, the merchant and yourself (through your local bank)).  

PKI is good for a few things:

1. Non Repudiation - The Certificate Authority (CA) works with trusted Registration Authorities (such as your Bank or phone company) to ensure that each and every certificate in their server is matched with a known and accountable entity.

2. Cross Certification - Certificates in one CA store (server) can be cross certified with Certificates in 2nd party CA store - in a process called Cross Certification. They swap certificates and a key matching request in a 2nd party CA server gets transferred to the CA where your identity/ public certificate is store.  

For this to make sense to you you have to bear in mind that the verification process requires the vendor to validate identities against the CA of his bank - which is likely different if you are using different banks (and they are using different CAs) or in the case of a PKI enabled handset - the phone company's trusted CA.  If you wish to know more about PKI in Mobile follow this link or download the PDF file : Nexus Mobile PKI Security     

Smart cards later evolved into a contactless system by incorporating Induction (unpowered) RFID technology - the type that allows 10 cm data transfer (see RFID link above) while retaining all capabilities of the smart card. In Malaysia and Singapore, they are paired with an RFID transponder to allow toll gantries to deduct road tolls from Bank issued Cash Cards.  In Mobile phones, in the late 1990s,  GSM technology started using smart cards to associate the phone subscriber with the physical phone in what we know now as the SIM Card.  

Forward to 2011 - NFC  equipped smart phones, Google wallet, Mastercard Paypass and more:

NFC actually acts as a low powered RFID transponder. It is actually able to do more because it can both function as the unpowered passive tag (powered via Induction - it will be good to test if your mobile wallet will work even if the phone is powered down).  or as a low powered RFID scanner (the NFC phone can read RFID Tags).   With Mastercard Paypass, a Bank registered SIM card is required (at least in Singapore). It is not clear to me if the special  SIM Card has additional content or not - far as I know both SIM cards and credit/cash cards can employ PKI technology and will have an imbeded private key inside.  Google wallet itself does not seem to have this requirement, just a tie up with an existing Credit Card or Cash Card.  

NFC Payment Backend System: 



The merchants require the use of a payment backend system, - Mastercard Paypass is emerging as the pioneer among the credit/ cash cards,  and a tie up is required somewhere in the payment process (Between Google and Mastercard or a local cashcard provider).   Note: Singapore, HK, the UK,  and Malaysia (these are the ones I know but there are probably more),  have pre-existing local cash card systems designed for public transport payments. In fact HK's Octopus Card  circa 1997 is the first among these contactless Smart Cards used for payment purposes. 6 years later, in 2003, Mastercard paypass emerges in the US with a promise of inter operability among diffrent local systems. In 2012, paypass reaches SIngapore promising interoperability between systems worldwide.

Bill PaymentsEdit

Singapore Scenario

Bill payments are getting more and more efficient with the advent of Online/Mobile Banking. For regular bills the answer is simple, just authorize the Billing party (phone, credit card. government,  mortgage company,  or utlity company (to name a few)) to deduct the bill monthly from your bank account (In singapore this is commonly known as GIRO). For most people though, auto deduction is not something they want to do so bill payment continues to be part of their monthly routine.  Singapore addressed this collectively through a unified bill payment system called AXS and it involves setting up of payment stations in all the malls and common public places island wide.  It was setup more than a decade ago and involves the simultaneous scan of 3 (1D) barcodes pertaining to the Payment Code (Company ID / billing company account number 12 bytes)), the bill number (a unique 16 digit code that identifies the individual billl (typically contains a date) and the amount (12 bytes representing an amount from 0 - SGD 9,999,999,999.99).   

With Mobile Phones and Mobile banking they can actually improve the island wide system and the answer is through the use of a 2D barcode (QR Code) that can incorporate the 3 fields in 1 barcode and allow the transmission of the fields to the individual banks mobile apps. The payment stations will continue to be relevant, and the organization that assigns the Payment Codes to billing companies (and more importantly associates the payment codes  with actual (bank) account numbers) will still be required.

Mobile Tickets/ Claim stubsEdit

IOS 6 Passbook feature uses secure barcodes to act as digital mivie tickets, claim stubs and boarding pass. In this case a secure barcode is issued by the movie house or the airline and redeemed in the movie houses and airport gates by scanning the barcode from your phone instead of a physical ticket or boarding pass.Passbook is part of a secure system to transmit the barcodes to the correct phone.

This idea has been around much longer than IOS 6, although passport puts all the tickets in one place. Loyalty systems in hotels have been using this for sometime even before IOS 6 was announced.

Window Shopping Edit


QR Code Shopping wall for kMart

On Test in Amsterdam, Window shopping becomes actual shopping by posting QR Codes of items on display on shop window . The project called QRout is a collaboration between 30 boutiques and Paypal which delivers Gift wrapped goods within 2 days.

In use elsewhere are Sears and KMart Shopping walls featuring top toys sold for christmas, Subway sandwich delivery. I believe the QR Codes contain direct links to the items in the store's online shopping website with Paypal or credit card checkout. Even as a marketing gimmick this will work out very well. See picture:

Shopping CatalogsEdit

Holiday Catalog from Cold Storage Singapore features QR Codes to order Holiday Dinner Packages.   The barcodes themselves are just a plain set of 6 numeric numbers. They also have an iPhone App in iPhone crazy singapore see -  Cold Storage grocery app  (as do their rival NTUC).  
IMG 0779

QR Code equipped shopping catalog with matching IOS app

This is a good idea, and scanning the holiday catalog to do your online orders is convenient. 

I believe the grocery is fairly new to the online shopping business and there are things that can be improved:

1. The catalog features QR Codes for some items but not all. I believe groceries are better served using UPC barcodes with their app. the ordering ties up with their inventory and accounting system and I believe these are based on UPC Codes (as do all other groceries). With UPC codes and access to their online store, they can actually do a lot more than what the app is currently capable of doing.

2. I scanned the QR Codes in the catalog and it did not do anything in the app. I suspect the back end interface is not ready (see 1st comment).

3.1st use of the app seems cluttered since there are over 20 icons and no indication on what needs to be done 1st  (register).  I believe the app should focus on online shopping (the cart, the shopping list,  checkout), All other options are one time and can be bunched into Miscellaneous, Non registered users should be prompted to register first.

4. As opposed to the NTUC app, the Cold Storage app uses the map to show all the store locations (stores options) but is not location aware. It doen't have a clue where I am.

5. Shopping list vs. My Cart - What the difference ? Shopping list is a list you bring to the grocery, My cart is online purchase. I believe they should have just asked the user whether they want to keep the list or purchase online. Also, are all items available online? For fast moving items the stock will not always be there if so - the online facility should allow partial checkout and a recommendation to try to get the item in the nearest store where it is stocked (or take a chance as the grocery informs the stocked retail outlet to withraw the item from the shelves for your online purchase requirement - reserve).

Marketing Posters, DIrect Mailers & FlyersEdit

This has been around for years. You can actually put anything into these barcodes although the most universal are single urls. Take a real estate flyer selling a condominuium project,

For those with Real Estate projects - see this Using QRCodes for Real Estate :

To summarize its message: There is a resource worse thing you can do is code a web url containing the same information already in your poster, flyer, and mailer.

Brilliant idea no 1: - Put a classy video of the project c/o Youtube, Vimeo, Metacafe, or whatever else.

Slightly more brilliant - Show a map and driving directions using geo location uri. or put a VCard with your name and number, company, and position - Real Estate Agent.

Even more brilliant - Show a map and all other projects you can sell within the vicinity, show a video of the amenities and a resource (idea first bought to my attention by my neighbor Paschal Tay).

Tip: Employ Marketing Analytics:Edit

I found an article about using QR Codes in small businesses of all places in a US based business registration company called Speedy Inc. LLC. The ideas are good and really helpful and something you do not expect based on their line of business.  The most significant thing I got from the site however was the importance of Analytics: 

If you are serious into web marketing one of the tools available is Google Analytics. There are different levels of analysis available depending on how much detailed information you want (it may require addition of some codes in your website), a simpler one is to just to use  Google Analytics'URL Builder.   If you just wish to know how many times the QR Code was scanned -  be a member and use Bitly to compress/shorten the URL . It will count the number of times the shortened URL was used and indirectly how many times the QRCode was scanned. 

SPARQCode  has their own url shortening/compression facility and live analytics, it seems to work like Bitly, Analytics is a paid option so I cannot say for sure. URL compression however is used universally, paid or not,  both  the web facility and the API, the only option to turn ot off is to use the RAW facility.   

Note: URL compression is a tradeoff, URL QR Codes can handle a few hundred bytes or more routinely even with error correction set to high. The big advantage of using bitly or SPARQCode is marketing analytics, ability to count the number of scans. The trade off is some extra work if your encoder is not set for URL compression. a far bigger trade off is the compressed URL can be anything, the URL compression company gets hold of data, and in many levels whatever security you or the scanner have is somewhat reduced.  

To learn more about different analytics systems read this article.

Other marketing things that work:Edit

The same speedy inc LLC article mentioned a few more ideasI found the other ideas below

Online Contests - create an action code to join the contest (URL). December 2012, Ikea, the furniture company uses photo recognition in a number of new IOS apps - from catalogs to contests. Ikea requires that you scan a poster in its customer area, complete a puzzle and submit online. Fabulous idea, except they hang the poster from the ceiling and the aircon was moving the poster back and forth. Photo recognition simply does not work with moving objects (unless your camera is very fast). it works in the same way that a phone app recognizes a barcode - auto focus , then look for the markers, if it can't find any it continues scanning. those photo markers are probably more complex than the 3 boxes of a QRCode, because it takes a long time to recognize after it autofocuses with the non moving catalog, the moving poster simply made it impossible. Particularly QR Codes were designed for fast scanning to track moving parts in a Toyota assembly line. The rest of the requirement, verification that you are on store, membership ID are all easy to do in smartphones.

Reward Coupons - Use the QRCode to allow the scanner to claim a price or - allow the member/ rewardee to download a QRCode which is then redeemed by scanning the barcode (similar to IOS Passbook process)?

Facebook Like, Tweet, etc. - Quick link to a like a facebook page / and display a twitter profile with the option to follow? Saw this in the article, then saw this in the SPARQ Code features page. The general idea is good but I wonder if there is a better way to do this (contemplating of a facebook like action item - maybe - but probably not).


Comments and Feedback on the current set of QR Code content encoding (Mobile Usage) Edit

Please follow the format :

Mobile Usage (Heading 3) 

Author - (date) comment

Name - (date) reaction / reply

Emergency Medical InformationEdit

It will be better for the standard to evolve to support localized fields such as Government or Private Health Insurance number, depending on emergency room treatment requirements that vary on a city to city or country to country basis. If there are such standards it would be nice to have them listed in the wiki

URI & User RespectEdit

This ought be heavilty emphasived.? 2D barcode images as marketing landmines is a great way to burn public trust and generate complimentary negative PR.? The very images you generate can be regenerated in a way that harms your campaign.?

SMS and PhonecallsEdit

Something to think about - Should I generate a phone call action item whenever I get an SMS:999999 barcode or not? ? or for that matter should I generate an SMS item if I know the tel: barcode is a mobile number.?

Barcodes for Common ServicesEdit

TEL: and SMS: and MAILTO: Barcodes should be used in bus stops, lift or elevator landing areas, and elsewhere the public congregates to provide easy access to the following:

Hospitals and? Paramedics:

City Services

Public Utilities:

Police, Firemen, and ? Emergency Response:

Proposed new QR code applications !Edit

This section is meant to document suggestions or future plans to implement a new use for QR Codes for mobile. If an app already exist that is able to parse your suggestion please move it to the Mobile Usage Sections and identify the app that conforms to it. Publishing your suggestion here is presumption that you are permitting any developer to use your idea in a future app. It is presumed that the developer will modify this wiki to place your suggestion under the Mobile Usage Section once his or her app are published and available.

Recipe Edit

The proposed QR Code is meant to build a grocery list using the ingredients listed inside the QR Code: A weekly grocery list can be built simply by scanning a Recipe Book with QR Codes. The app should collate and sort the ingredients from several recipes and the user can do a final edit prior to shopping.

Suggested Format:

RECIPE:Paella Valenciana; Service:9; Ingredients:Rice,Bomba,1 pack;Tomatoes,The Biggest you can find,3 Kilos;Bell Pepper, Assorted Colors, 6 big pieces; ......


RECIPE: name of dish

Service: number of people that the quantity of ingredients specified can serve.

Ingredients: Name of Ingredient, brand or description, quantity; (multiple)

Paulovg November 1, 2012

Printed PublicationsEdit

It is so easy to put up hyperlinks in digital manuscripts, however once printed the publisher should use QRCodes to allow the links to external publications and other digital resources to remain available. This is probably already existing, I am just waiting for verification before putting this in the Mobile Application Area.

Paulovg 2012

Blue Tooth controlsEdit

There are no Blue Tooth URIs in existence, however NFC is now widely used in pairing the phone  with bluetooth capable speakers. It should be possible to get this done via QR Code as well - important content to pass are  device name and password.  

Paulovg 2013

Window Shopping Edit

Window shopping becomes actual shopping by posting QR Codes of items on display on shop windows, the QR Codes should contain direct links to the item in the store's website which should be provisioned for online shopping (Paypal or credit card checkout), preferably mobile friendly. Even as a marketing gimmick this will work out very well.

Paulovg 2012


Restaurants can have multiple uses for QR Codes, the simplest among them is the business card with QR Codes:

1. Business Card Action items should be:

  • Marketing website featuring specialty dishes, promos, and events (anniversary discounts, holiday menu, and entertainment schedules). If you do take out.  
  • Reservation or takeout contact number. (Use a MECard or a VCard rather than just a plain TEL:999999 )

2. Menu - Definitely not for fine dining but a menu can have QRCodes to help the customer in ordering

  • menu items links to menu item photo to web page with 3 sections  - Photo, menu ingredients (for those with allergies), recommended compliments

3. Bills - Use QR Coded Bills, it can serve 2 purposes:

  • Helps the customer create his expense claims - (Far future - if QRCode aided expense claims app is built, this will save a lot of time for a lot of people).
  • If you can link it with mobile payment and it makes sense to you - why not?  

4. Billboard / Posters:

  • The billboard can contain the same items in the business card.

Memory Keep sakesEdit

Memory keep sakes vary from a Photo Albums, to scrap books, to gravestone and Museums. If you have the time and inclination, Wordpress and other free to blog websites make it easy to write a bit of history about your photos or items and put in details so that things will likely be forgotten over time can remain fresh. The kicker of course is to simultaneously come out with a photobook that links to the blogs and put it in your living room. A blog site that create photo albums - that would be a good idea for a new app. 

Using QR Codes to keep a memory alive is not at something new, Big Museums use them, so does one grave in Sweden. I use them for postcards, see below:  

Comments and Feedback on proposed new applications!Edit

Please follow the format :

Mobile Usage (Heading 3) 

Author - (date) comment

Name - (date) reaction / reply

QR Code Apps ReviewEdit

We do 2 levels of review one is based on the Appstore Page of the product, and the detailed review is based on actually using and installed app.

QRU & QRU Mini Author: dacapo Apps and Products    Current Release 2.1;Edit

IOS only

Note: The principal author/ editor of this wiki is the programmer/ owner of QRU and QRU Mini.

Creates and Reads True Unicode QR Codes - It uses Unicode encoding to send messages using any language + emoticons / emoji characters.

There is an option to use the native encoding options of the QR Code to reach the full capacity 7,000 digits, close to 4,000 Alphanumeric (this is not ascii, the encoding is the same one supported by the first Alphanumeric Barcode standard Code 39 which 43 different characters, the 26 all cap letters, 10 digits and 7 special charcters (no CRLF and no Tabs). It also supports Kanji Kana using the Shift JIS X 0208 encoding.

Creates compound Qr Codes - QR Codes with multiple action items in 1 barcode. 

Localization - Not localized - At the moment interface/messages and screens are in the English Language but you may use any of the defined apple keyboards to input messages in another language.

App utilizes HD Video in appropriate iphone models to scan v40 QR Codes (7,000 + digits, 4,000 alphanumeric, close to 3,000 unicode characters depending on language used. 

Parser - Supports multiple action items (at least 12 and growing with new versions) , Contacts, Calendar Events, Maps, Websites, Videos, Phone, SMS, Text, Wifi, Above that QRU and QRU Mini supports proprietary formats such as music matching, Local Notification, The parser is a compound parser that generates multiple action items from the barcode.

Reader supports QR Codes and 1D barcode types (several types including UPC-A, UPC-E, EAN-8, EAN13, ISBN-10, ISBN-13, CODE 39, CODE 93, CODE 128, Interleaved 2/5),  Reader scans through the Phone Camera but reads the barcodes from existing images (Photo Album/ Photo Stream) or from an email attachment. It will utilize proprietary formats to allow multi media barcodes to be recreated.

Output includes QRCode (PNG) and PDF File with imbeded QR Code, proprietary outputs include (QRU) App importable QRC barcode and QRZ - compressed file containing the barcode + background images, profile pictures, company logos that maybe part of the message.. QRC and QRZ allow direct import of the file when attached in an email or when stored in any file sharing app such as Dropbox or Evernote. QRU 2.1 now allow direct importation of image files (PNG, JPEG, JPG) from 3rd party apps.

The PNG Files can be exported to image processing apps that can apply filters to create QR Code Art. As an email. attachment the file cannot be directly importable into any 3rd party app (except twitter and facebook) as IOS will only give options to print, save image (to camera roll) , copy it in the paste board (aka cut and paste option), twitter and facebook, or assign to contact (address book), 

Other features:

The app features a Search, surf, and QR Code/ Barcode interface that allows the user to navigate towards the url or youtube video and then QR Code the pages wanted (similar to bookmarking).

Media Player - QRU features a Music Player (iPod) - Creating a QR Codes for music simply searches for the song and playlist, plays the song,  and QR Code.

Google Analytics support - It will put in the required parameters in the URL to allow Google Analytics to track usage.

App allows setting of the Reed Solomon Error Correction Level (Low, Medium, Quartile, and High) as well as to set initial density (S, M, L).

Camera settings include support for HD Video and all other defined Video modes of IOS.

Camera setting include Auto scan or manual scan (still shot) for older model iPhones.

Support for the front camera.  

User definable on and off support for the various barcode types can enhance performance if the user do not expect to scan other types of barcodes except QR Codes.

Selectable Search Engine (Bing, Yahoo, Google, and user defined). The serach engine selection is in preparation for true internationalization and use in countries where other search engines are more dominant (e. g. Baidu in China).

Selectable Map app whether Apple Maps or Google Maps  (Please note, Apple Maps provide pass through support for apps that support transit information and may pass control to a 3rd party app with the appropriate information). 

UPC Barcode includes lookup from or module (will search for price and product review info once known).


2.1 adds support for 


Skype Call (Video and Voice)  Note Skype Chat not aailable in IOS.

Facebook Chat

Twitter  (Actually opens the users Twitter Home Page)

WhatsApp - WhatsApp URI transfer control to WhatsApp App at the moment, it is not able to perform call or messaging from a 3rd party app. 

Image file containg QR Codes can now be processed by QRU

QR Reader Author: Tap MediaEdit

Review Type:App Store

Creates and Reads QR Codes - Features Multiple Language Support, Reader supports multiple 2D and 1D barcode types, MMS, Facebook and Twitter sharing

Reader seems to be Camera Based only - no scanning from an existing photo.

Parser - Supports Maps, Websites, Videos, Text, probably Phone and SMS (does not seem to support contact QR Codes)

Sharing: MMS, Facebook and Twitter


Scan Author: QR Code City LLC Edit

Review Type:Detailed

Scan has IOS, Android, and Windows Mobile versions of the app

Reads QR Codes + EAN13, (UPC & ISBN) - Barcode creation refers you to website Requires signup, I believe to allow the user to post a profile (with photo) - useful for swapping contact information.

Latest version support scan from photo

Parser - Contact information (probable lookup on the website) , Websites, Videos, Text, probably Phone and SMS. Scans Twitter, Instagram, and Twitter Likes.


QR Scanner Author: Grip'D LLCEdit

Review Type:App Store QR Scanner is a very simple scanner. Camera only.Parser - Support for URL, Phone Number, SMS and Email QR codes


QR Code Best Reader for iPhone Free Author: T3 AppsLLCEdit

Review Type:App Store Scanner only. no indication that it reads from photos.

Parser - Contact, websites, email, sms, phone, maps, and plain text


The interface seems very close to the Zxing sample app without the custom icons.

Inigma QR Code, Data Matrix and 1D Code Reader Author 3G VisionEdit

Review Type:App Store I-nigma has versions for IOS, Android, Windows, and Black Berry.

I-nigma owns a proprietary barcode SDK engine which is sold to developers, Aside from the usual QR Codes, Bar Codes, and a number of 1D Barcode support. they also support the newer Micro QR Code standard and a few more not readily available in the free SDKs. The SDK seems to be miltilingual but the app I reviewed is English only. A few added capabilities is support for reversed color QR Codes (white on a dark background), and multi colored QR Codes, which in my belief is shared with a few SDKs (Z-Bar seems to support multi colored barcodes) but not all).

Parser: I-nigma supports the usual batch of action codes as documented in the ZXing barcode content page, these are Maps, Contacts, Calendar Events,Phone, URL, Text, SMS, Videos, above that I-nigma has i-nigma shopper which compares prices of books, groceery items, etc, based on the UPC code (mostly prices over online shopping stores like Amazon and e-Bay (probably US).

Sharing - seems to be supported via Twitter and Facebook


Bakodo Author Dedoware Inc.Edit

IOS only Bakodo is a shopping app first and foremost with ability to scan QR Codes.Supports UPC barcodes and QR CodesParser : QR Code Parser seems to support the usual number of ZXing action items - Phone, SMS, URL, Maps, Contacts, the best thing about the app however is what it does with the UPC code which includes ability to use different search engines (including those in e-Bay, and other online stores - similar to I-nigma but with a lot more choices) to look up the item, post reviews on twitter and facebook about the item.


Accusoft Barcode Scanner Author AccusoftEdit

Review Type:Detailed (Partial) The Accusoft Barcode scanner is a no frills app, very elegant with no buttons just pop ups to tell you it has detected a barcode, also no history feature. I have not explored the capabilities of the scanner, the use of pop ups instead of a list indicate that it will not support compound barcodes with an action list. Having said that the app is just a sampler. The current Accusoft is a privately held company originally named as the Pegasus Imaging. Over the years they have acquired a number of companies focused on the document and Imaging Management space and has a very impressive number of technology in its arsenal which includes Mobile Medical Imaging (X-Rays and CT Scan in IOS), and the Barcode scanners, which I suspect is just part of the tools required for their Document Management Business.


ConnectMe QR Reader Author Top Floor Studio LLCEdit

Review Type:Detailed (Parrtial) I downloaded the free sampler app which is elegantly no frills and supports the usual maps, emails, phones and SMS, beyond this, the web site has a video and the business seems to be about selling an entire personal Marketing campaign package centered on QR Codes (Website, T Shirt, Posters, Business Cards etc). Wonderful business concept!

Comments ActiveX QR Code Generator Control Author KeepAutomation

The ActiveX qr code generator component & DLL can be used to easily generate and print qr code two dimensional barcodes from Microsoft Access, MS Office Excel, InfoPath, FrontPage, Web, Visual Basic 6, VFP, C++ as well as .NET Framework applications.


ScanLife Author ScanBuy Inc.Edit

Review Type:Detailed Scan Buy is a company whose main business is barcodes. It boast of several global offices and counts on a number of big brands for customers. Scan Life the product boast of a few patents and a number of development kits. Scanlife the app is a free sample, I believe the company develops for enterprise and the review below do not necessarily capture the capability of the company

Scan Life the mobile App is truly easy to use with a number of very intersting features. These are:

1. Live Feed: Global online tracking of scanned items from all its users complete with a picture of the item. What's interesting is that you can use the "global (live feed) history" as if you scnned them yourself.

2. Facebook options include Post like and Invite friends (Not sure if this is for the app, a community app page, or for the scanned item, I think this is obscure, I fail to see the relevance of these features to what the app is going to be used for).

3. Options for favorites include choices from scans from the "Live Feed". This feature is really useful with UPC barcode scans as you may get lucky and see 3rd party pricing, reviews, etc. ... PS A search bar will make it great,

4. There is also an obscure feature to frame the scanned barcode with things like snow flakes etc. Some of the frames are in-app purchase - means you pay for them. I suppose that this is tied up with facebook posting.

5. Scanning a UPC Barcode includes a lookup from similar barcodes in the live feed (great feature!).

6. There is a search button that allows you to put in the barcode by typing - I guess this is similar to POS systems over rides when the barcode cannot be read properly.

The rest of the features are:

1. Create MeCard QR Code ... One thing though is the QRCode creation requires you to type, It is something that I personally dislike in a mobile app although with an iphone 4S and up any textfield is actually equipped with a Speech to Text button. I would have preferred that it gets the data from my address book.... and in IOS it would have been great with a VCard using the apple xTensions for social networking.

2. Scan using the camera or from the Photo Library

3. Scan History - UPC barcode items sometimes include the photo from the actual product (from Live feed), or icons that represent whether it is a UPC Barcode or a QRCode.

4. There is Sharing via Facebook, Twitter, and Email, It shares the link to the barcode from its Live Feed database. The links open a mobile friendly website hosted by Scanlife, the ME Cards feature an email vcf option .... It doesn't share the QR Code image just the links. The facebook features an QRCode image, I know for a fact it gets the image by referring a 3rd party link to an image, I have a feeling though that this is just a generic picture of a QRCode, Live Feed probably involves the transmission of the decoded string rather than the entire image for performance reasons.



I like SPARQCode, the website, the web URI's, the analytics, SVG etc. The web  facility and the URI/API is very very good.  The app itself has a flawless interface, crisp, nice scanning sound.  It has an IOS and Android version, and on their credit page  in the mobile app it acknowledges the ZXing SDK.  This probably explains why the IOS app is QRCode only, I suppose Android version it will support more than QR Codes (see discussion on the SDKs below). I like the formatted and themed UIWebserver as well, it opens its own browser inside the app instead of passing the control to mobile safari (although there is an option to do this).

Having said all these praises, I do not understand why they skipped creating an action list. Once you scan - it just jumps to the website ( a touch move thing), I know this is intentional because the ZXing sample app provides for the action list and recommends it.   This is fine if the only thing you scan are SPARQcodes which are properly labelled but it works with the rest of the QR Codes as well,  good and bad. Some scams have been reported, particularly SMS and web based scams that waste the users time and swindles their money.

Also - I expected the mobile app to allow the users to QRCodes via their URI's (tested this in a  safari and mobile safari- it works), coding them should be simple enough to code ( a lot simpler than dealing with the japanese C codes).

They probably have their reason why, but then in my view,  it makes their app less desirable. 

Barcode Software Development Kit (SDK) ReviewEdit

This section aims to review available barcode SDKs in order to provide future projects an intelligent choice in picking their sdk.

ZXing? (2.0 circa Feb 2012 build)Edit

ZXing (Zebra Crossing) is an independent open source project hosted by Google. It was my original go to SDK to develop my project mainly due to endorsements in Development websites such as and elsewhere. ? Its Java and Android version supports:?

  • UPC-A and UPC-E
  • EAN-8 and EAN-13
  • Code 39
  • Code 93
  • Code 128
  • ITF
  • Codabar
  • RSS-14 (all variants)
  • QR Code
  • Data Matrix
  • Aztec ('beta' quality)
  • PDF 417 ('alpha' quality)

There are partial ports to C++, Ruby, C# and IOS, unfortunately the IOS port support QR Code only. It uses a parser that supports its Barrcode content listing. Something new is an online QR Code Generator and decoder. The downloadable codes do not contain an encoder, As of May 2012, the generated code ported for IOS generates a few warnings when you run Apple's Clang Static Analyzer Facility within XCode. I wanted a very clean app so  it got very frustrating to the point that I started looking at other SDKs (side note, getting a Clang message free app is only the beginning, tons of memory related runtime issues abound among them Zombies (released variables that your program thinks is still alive), high memory usage, low memory conditions, and others) , also the replacement SDK (Z-Bar) happenned to support more symbology (barcode types) than what Zxing IOS supports(QRCode only) really clinched it). Please note though that like it or not the success of QR Codes is partly due to ZXing.

Additional Note: Z-Xing downloads do not create QR Codes. ZXing is available under the Apache License 2.0

Note : There is a non issue developing IOS ARC apps,  (march 2012) the Zxing IOS SDK does not have an ARC version and this has lead some developers to question the non availbility. During my testing , I found out that ARC or not, Zxing will work with your ARC apps, this is because the way Zxing integrates its codes into your apps (through ZXINGWidget.xcodeproj) which  gets compiled independently and is only linked edited into your app after compilation. What was bothersome though were some warning messages generated by ZXINGWidget that were very difficult to clean up (this is ok, it is rare to find free 3rd party SDKs without warning messages, an amount of clean up needs to be done for most of them).        

ARC Notes :

For the non apple developers, ARC stands for Automatic Reference Counting and instructs the IOS or OS/X compiler to keep track of the creation and usage  of variables, this leads to apps that can do away with the retain, release and dealloc command and having to code clean up routines everywhere). ARC is optional but the use of this leads to cleaner apps with fewer memory leaks (for new developers it is typical to spend at least 20% of the development time just looking for memory leaks (the variables that you created and forgot to release)  non ARC Codes) . However, ARC do not work with all classes and in particular it does not work with CF (Core Foundation) variables which needs to be cleaned up manually.  Unfortunately you need to deal with CF variables to work with the Addressbook (compounded with CF like multivalue variables) and the EKEvent class.

Trivia notes:

There are parallel classes between Core Foundation (CF) and the Foundation classes (NS) which together with other frameworks (appkit, then later UIkit in IOS) make up the Cocoa API. (There is for example an NSSTring, and a CFString, an NSArray and a CFArray),  Both of them actually originates with Apple's NextStep acquisition and eventual move of Steve Jobs back to Apple. Core foundation and Foundation classes. The best explanation I have come across is that the foundation classes are all objects (meaning that it was created and resides in memory somewhere, also it is addressable), while the CF object are C primitives (integer, constants, etc.) 

Z-Bar?  (iPhone SDK 1.2)Edit

Z-Bar is a 32 bit SDK and is not supported for newer releases of IOS which are 64bit only. It has not been updated for sometime, You may want to see alternative solutions to this - like using Zxing or the native IOS AVCapture framework that supports getting metadata from a video session. IOS between IOS 8 to 10 support AVCapture framework exclusively so it is not able capture barcodes from existing images as Z-Bar does however with IOS 11, Core Image has been updated to read metadata off existing images. What this means is the full capability of Z-Bar is now available using native IOS. In terms of symbology support - it does not support DataBar (RSS), sadly it also does not support the 18 digit GS1 Serial Shipping Container Code barcodes (SSCC) but it is able to read additional 2D barcodes such as PDF417, Datamatrix, and Aztec Codes.

Z-Bar is an open source project that supports the following symbology:

  • UPC-A and UPC-E
  • EAN-8 and EAN-13
  • Code 39
  • Code 93
  • Code 128
  • DataBar (RSS)
  • Interleaved 2 of 5
  • QR Code

It has a core made from C and has interfaces with Python, qt (Nokia symbian OS), PERL, ? there is support for Windows as well as at least 4 flavors of Linux (Debian Fedora, Gentoo) . There is a full IOS SDK. And although the website is not updated they have comeout with a Z-Bar Android SDK 1.0.?

The SDK is vavilable under the GNU LPGPL License 2.1? meaning its absolutely free. according to their website they have had hundreds of contributors through the years that it does not even make sense to compensate them. The symbology support is a little less than ZXing but the thing is ZXing's IOS version supports far less than their list. The parsing is not in the SDK. it has a distinct image processor and codes to control the camera so you may just pass the image to the decoder for processing bypassing the camera function. A lot of work needs to be done to fit the sample code to what you want it to be, the sample codes? do not include a parser, however? ? it works and its free, and I was far happier with it than the early release of ZXing for IOS.

Note: As with ZXing, the SDK provides ability to read barcodes but not to encode them.

QR Code Encoding SDKs

There is a whole range of SDks that Encode and decode QR Codes most of those available in the internet are avilable to evaluate for free and then paid if you publish your app in the App Store. There are some bits and pieces of the QR Code encoding codes shared in Github . If you decide to use them over the paid SDKs just be aware that some work needs to be put in to clean it up - for the newbie IOS developer, C, and C++ source codes are not objective C but you may (with effort) use them in your project as XCode supports these languages as well.

The partial list below contains unevaluated SDKs that are confirmed to support 2D Barcodes, For contributors: please post your reviews (along with date information and version) if you have evaluated any of these SDKs.    

Barcode Professional SDK for .NET - note: support for Datamatrix, PDF417, QR Code, MicroPDF 417 encoding

Lead Tools - note: support for Datamatrix, PDF417, QR Code, MicroPDF 417 encoding

3G Vision/ I-nigma  - note: support for DataMatrix, QR Code encoding

QuickMark SDK - Note decoding only although they seem to have a module to colorize QR codes as well as an online encoder.

Red Laser SDK - Note Decoding only, partial support for Datamatrix, supports Codabar aside from the usual EAN 13, UPC . IOS, Windows Phone,  and Android. Note the brand is owned by eBay inc and affiliated with Paypal. New version (Jan 2013) supports PDF417.

Editing RightsEdit

Anyone is welcome to add to or update this wiki. As founder and administrator of the wiki, I reserve the write to edit the updates for purposes of readability. This wiki is supposed to be factual and sources should be acknowledged. Please bare in mind that the wiki aims to cater to new and old developers and to provide a resource for them while developing their barcode app, Conflicting ideas will likely occur, it is my belief that there is a place for all ideas. ? In cases where you think a post might generate an issue or one of my updates inadvertently generates one, please give me an email or use the talk facility of the wiki so the issue can be resolved. You can also email me directly?

Paulo Gervasio


Latest activityEdit