Creating QR Codes

The QRCode object is designed to be smart about how it constructs QR codes. It can automatically figure out what mode and version to use to construct a QR code, based on the data and the amount error correction. The error correction level defaults to the highest possible level of error correction.

Below are some examples of creating QR Codes using the automatated system.

>>> url = pyqrcode.create('')
>>> url = pyqrcode.create('', error='L')

There are many situations where you might wish to have more fine grained control over how the QR Code is generated. You can specify all the properties of your QR code through the optional parameters of the pyqrcode.create() function. There are three main properties to a QR code.

The error parameter sets the error correction level of the code. Each level has an associated name given by a letter: L, M, Q, or H; each level can correct up to 7, 15, 25, or 30 percent of the data respectively. There are several ways to specify the level, see pyqrcode.tables.error_level for all the possible values. By default this parameter is set to ‘H’ which is the highest possible error correction, but it has the smallest available data capacity for a given version.

The version parameter specifies the size and data capacity of the code. Versions are any integer between 1 and 40. Where version 1 is the smallest QR code, and version 40 is the largest. By default, the object uses the data’s encoding and error correction level to calculate the smallest possible version. You may want to specify this parameter for consistency when generating several QR codes with varying amounts of data. That way all of the generated codes would have the same size.

Finally, the mode parameter sets how the contents will be encoded. Three of the four possible encodings are available. By default, the object uses the most efficient encoding for the contents. You can override this behavior by setting this parameter. See pyqrcode.tables.modes for a list of possible values for this parameter. A much longer discussion on modes can be found in the next section Encoding Data.

The code below constructs a QR code with 25% error correction, size 27, and forces the encoding to be binary (rather than numeric).

>>> big_code = pyqrcode.create('0987654321', error='L', version=27, mode='binary')