QR Barcode Explained

QR Example Barcode with URL

QR is a two-dimensional or matrix code that can encode up to 2,000 characters. The code is easily recognized by the characteristic three finder patterns in the corners of the symbol. Those patterns are quite large, so the code needs more space than other 2D symbologies, at least with small amounts of data.

What does QR stand for?

QR stands for Quick Response. Intended for use in manufacturing and part tracking, QR's design prioritized fast and reliable scanning over smaller size.

What is QR used for?

Besides applications in warehousing and logistics the code is also widely used in ads, on billboards, on coupons and the like. Typical data content includes URLs, email addresses or VCards, coupon codes etc.

QR Specifications

QR is standardized. The relevant standard is ISO/IEC 18004-2006 and can be obtained from ISO.

QR Code Data Content

QR codes only encode textual content and are indifferent to the actual semantic meaning of the data. How the content is interpreted depends entirely on the scanner or scanner app. Over the past ten years, quasi-standards have been established that define how certain types of data have to be encoded. Non-exhaustive examples:

  • URLs: data beginning with "http://" or "https://" is interpreted as an URL. This can also be a shortened (e.g. bitly) URL
  • Email: data beginning with "mailto:" is interpreted as an email address, further fields denote subject and content of the email, see here
  • SMS: data beginning with "smsto:" are interpreted as an SMS destination
  • VCard / Contacts: data containing VCard-formatted data are interpreted as contact information, see here
  • Wlan Access: data containing the SSID of a WiFi access point and a password

QR Code Error Correction Levels

QR employs a very robust error correction capability. In the highest setting a symbol can be recovered even if 30% of the area is destroyed or missing. However, better error correction also means a larger barcode.

Here's a QR code with the content "https://softmatic.com" with the error correction set to the lowest level ("L"):

QR ECC Low Example

Cranking the ECC level to the best setting ("H") results in a code that is almost 70% larger:

QR ECC High Example

If we erase the center part like so, the code is still readable (try with the "Camera" app of your smartphone):

QR ECC Damaged Missing

This feature is exploited with so called Vanity QR codes, where parts of the code are replaced with a company logo, emoji or other graphical elements:

QR Example Vanity Emoji Smiley

That kind of manipulation obviously contradicts the whole purpose of the error correction and should be avoided in serious applications.

QR Black and White vs Colored, Styling

Per default, QR codes are created with square, black dots against a white background for highest contrast. Colored codes are acceptable and will scan without issue provided the foreground and background colors have sufficient contrast. Likewise, the individual "dots" of a code can have rounded or pointy shapes.

Here's an colored QR code with rounded dots:

QR Example Colored

An example with too little contrast that will not scan (or only with luck):

QR Example Low Contrast

Note, that "inverted" (or negative) codes are in principle allowed but many scanner apps have problems decoding them. Test thoroughly before going into production.

Sample QR Barcodes

Sample code encodes "ABCabc123":

QR Example Alphabet

QR can directly encode accented and diacritic characters like german umlauts. Sample code encodes "ÄÖÜäöü":

QR Example Umlauts Accented

Also supported are non-latin scripts like Japanese. Sample code encodes "ÄÖÜ日本語abc":

QR Example Umlauts Accented

All codes have been verified to scan properly on Mac and Windows PCs and various smartphones. Check the settings of your scanner if the scan result is different or if the code doesn't scan at all.

QR codes can also be read with an online reader, here's the scan result from the previous QR:

QR Decoder Result Japanese Non Latin Script Unicode

Common problems when scanning QR with non-ASCII data:

  • The scanner app doesn't support non-ASCII data
  • The QR symbology is deactivated in the scanner
  • The keyboard layout setting of the scanner does not match the locale setting in your computer

Scan QR with a Smartphone

On iOS, the built-in "Camera" app can natively scan QR codes. On Android smartphones variety of barcode reader apps support reading QR, search the respective App Store. Our suggestion is the free Zxing Barcode Reader which reads QR and many other 2D and linear barcodes.

Create QR Codes with Logos, Icons in Photoshop

Our QR Designer for Photoshop CC creates QR matrix codes directly in your PSD file. Choose from a dozen styles, millions of colors and easily embed logos, icons or images in the code.

More info...

Create QR Barcodes in Illustrator, InDesign

Easy to use barcode plug-ins and extensions for Adobe InDesign and Illustrator. For more videos, see the Softmatic Youtube Channel

The Softmatic barcode plug-ins and extensions for InDesign, Illustrator and Photoshop are available on the Adobe Exchange.

NEW Free Online QR Code Generator

Create your QR codes online and in realtime! Our free online QR code generator runs 100% in your browser. No ads and no registration required. Privacy guaranteed: No cookies, no analytics, no tracking.

Stand-alone software for QR codes

Softmatic BarcodePlus V5 creates QR codes and will export the barcode as PDF / SVG (resolution-independent vector) oder raster image (PNG, TIFF). The app will automatically format the data according to the specs to create the smallest possible symbol:

Create QR codes in bulk

For mass creation of QR, see Softmatic's bulk barcode generator, BarcodeFactory. Ideal for personalized 2D codes for tickets, event, mailings. Video shows generating bulk QR codes from email addresses:


Developers love our easy to use Barcode REST API for QR codes. The Barcode API supports all common linear and 2D code symbologies and can be used from JavaScript / Node, Ruby, Python, PHP, Swift and many other languages and environments. The API comes with a generous free tier and is available through RapidAPI. Documentation and sample code are here.