Considerations for low-resolution printing of Aztec codes

When a MTB which is encoded in the Aztec optical code format shall be printed (or displayed), several aspects of the optical encoding and presentation may come into play. This article aims to explain some of the considerations which should be made when displaying or printing the Aztec code on a low-resolution (less than 300 DPI) medium.

Resolution matters

For certain low-resolution medium, such as termotransfer printing, care must be taken to maintain the square shape of each bit of the Aztec code when scaling the code to fit the medium. Even tough the resolution of the Aztec code itself may be far less than what the medium is capable of displaying, scaling may not be proportionate in each bit. When managing Aztec codes with a size of about 30 x 30 mm, it is estimated that a resolution of less than 300 dpi (12 dots per millimeter) may lead to degraded ability to read and decode the Aztec unless certain care is taken to ensure proportionate scaling of each pixel.

In the following fictive example a 19x19 pixel Aztec code has been scaled by 190%. It is clearly visible in the inner focal square that some rows and columns have been distorted: 


Original 19x19 squares AztecScaled 190% 19x19 squares Aztec


The distortion becomes even more evident if the two Aztec codes are stacked on top of each other:

Difference between proportionate and disproportionate scaling


One might not be surprised if the scaled Aztec code is harder to read. Even though this is a fictive example, the exact same circumstances apply for printing on a 200 DPI termo-transfer printer. A more real-world example would be a 450 byte MTB encoded with at least 23% error correction bits. That would result in a 91x91 pixels Aztec. Suppose the aim is to print a 30 mm code using the 8 dots/mm printer. That translates into 240 dots, and a scaling of 263,7%. If on the other hand the Aztec code is scaled to 34,126 mm (300%) or 22,75 mm (200%) the proportions in the code will remain intact. The difference between a 200% or 300% scaling, and scaling of 263,7% is illustrated below:

Difference in quality between scaling a 91x91 Aztec 300% and 263,7% on a 200 DPI printer


The difference in quality is significant for the codes readability, and have a great change of being the difference between a fast read and a completely unreadable code. For printers with a resolution of 300 DPI or backlit LCD-screens which can use antialiasing techniques, the difference between scaling to 30 mm or more is much less evident or hardly noticeable. However, care should always be taken to optimise readability and proportionate scaling is always advised. 

Size also matters

For printing and displaying the Aztec code, size matters. Up to 60-70 mm, it can be assumed a code will be easier to print and read, and contain less amount of errors, the larger it is represented. Above this size, some readers may require the medium to be presented with greater distance, possibly causing problems illuminating the medium in dark environments. The scaling problems in relation to low-resolution reproduction also declines the larger the code can be printed or displayed.

Error correction

Normally, the error correction percentage is given a minimum portion of the full optical Aztec code. Error correction bits are added to fill the available data storage capability within the size of the Aztec code able to accommodate the MTB plus the selected amount of error correction. Selecting a smaller amount of error correction will lead to a smaller resolution of the optical code, which is normally easier to read and decode. Hence, it is not certain a higher amount of error correction leads to a more readable code. There is a balance between the readability of the code and being able to account for erroneous decoding of symbols.

The MTS1 specification recommends using 23% of error correction (which will be rounded up to fill the available data encoding space). However, both a smaller (10%) and a larger (36% or 50%) should be considered.


Currently, there are limited experiences in printing/displaying and reading MTBs of size 400 bytes and more, optically presented as Aztec codes, in public transport environments. This article is based on tests conducted with standard cameras and software decoding libraries. Different libraries have shown different ability to overcome the hurdles of the disproportionate scaling. Your milage may vary.