MaxiCode is a fixed-size (approximately 1 inch by 1 inch) 2D matrix barcode symbology which is made up of offset rows of hexagonal modules arranged around a unique finder pattern. MaxiCode was originally created and used by United Parcel Service (UPS) for tracking and managing the shipment of packages.
MaxiCode barcode can encode 256 international characters; values 0-127, in accordance with ANSI X3.4, i.e. all 128 ASCII characters and values 128-255 in accordance with ISO 8859-1 (Latin Alphabet No. 1). Although the capacity of a MaxiCode symbol is not as high as other 2D matrix barcode symbologies, it was primarily designed to encode address data. The maximum data capacity in a single MaxiCode Symbol is 93 alphanumeric characters or 138 numeric characters.
MaxiCode features "Structured Append" which allows files of data to be represented in up to 8 MaxiCode symbols. The original data can be correctly reconstructed regardless of the order in which the symbols are scanned.
MaxiCode symbols are divided into a primary and a secondary message featuring Reed-Solomon error correction. In general, the Primary message normally encodes a postal code, a 3 digit country code and a 3 digit class of service number while the Secondary message normally encodes address data and any other required information. In addition, MaxiCode has modes which are used to define the structuring of the data and error correction within a symbol. The following modes are available:
Special Message Structure when using Mode 2 and 3 (Structured Carrier Message)
MaxiCode Mode 2 and Mode 3 shall be reserved for use as a destination sortation symbol for use by carriers in the transport industry. In these modes, the primary message is always data specific and encodes postal code, country code and service class. The three primary data elements should be supplied in the above order separated by GS (Group Separator - ASCII 29) immediately followed by the secondary message contents. In addition, each data element shall be of the correct type, e.g. postal codes in mode 2 must be all numeric and in mode 3 it must be alphanumeric.There are two standard message formats when using Mode 2 and Mode 3:
- Messages Beginning with "[)>RS01GS": Messages which begin with the seven encoded data characters "[)>RS01GS" conform to particular open system standards and has the following structure:
- [)>RS (Message Header)
- 01GS (Format Header)
- 2-digit representing the year (YY) of a date
- Postal/Zip Code:
- If Mode 2 (NUMERIC ONLY): 5-digit zip code + 4-digit zip code extension (if none exists, four zeros 0000 must be specified)
- If Mode 3 (ALPHANUMERIC): 6-alphanumeric characters zip code (A through Z or 0 to 9)
- GS
- 3-digit country code (from ISO 3166) - NOTE: Mode 2 supports the US Country Code (840). For other country codes please use Mode 3 instead.
- GS
- 3-digit class of service
- GS
- <tracking number> (Mandatory Data for UPS)
- GS<SCAC> (Mandatory Data for UPS)
- GS<UPS shipper number>
- GS<Julian day of pickup>
- GS<shipment ID number>
- GS<n/x> (Package n/x)
- GS<package weight>
- GS<address validation>
- GS<ship to street address>
- GS<ship to city>
- GS<ship to state>
- RS
- EOT (End of Message)
Where GS (ASCII 29) is used to separate fields in a message; RS (ASCII 30) is used to separate format types; and EOT (ASCII 4) is the end of transmission characters.
- Messages NOT Beginning with "[)>RS01GS":
- Postal/Zip Code:
- If Mode 2 (NUMERIC ONLY): 5-digit zip code + 4-digit zip code extension (if none exists, four zeros 0000 must be specified)
- If Mode 3 (ALPHANUMERIC): 6-alphanumeric characters zip code (A through Z or 0 to 9)
- GS
- 3-digit country code (from ISO 3166) - NOTE: Mode 2 supports the US Country Code (840). For other country codes please use Mode 3 instead.
- GS
- 3-digit class of service
- GS
- <The secondary message data in the required format>
- EOT (End of Message)
Where GS (ASCII 29) is used to separate fields in a message and EOT (ASCII 4) is the end of transmission characters.
Sample of a MaxiCode barcode
In order to get a MaxiCode barcode image, please follow these steps:
- Set the Symbology property to MaxiCode
- Set the MaxiCodeMode property
- Set the Code property with the value to encode. NOTE: To encode Mode 2 or 3, then please specify the message in the correct format/structure (more info above)
- If desired, you can use the tilde character "~" to specify special characters in the input data e.g. ~013 is used to represent the ASCII character with the decimal value 13 (CR). To do that you must set the MaxiCodeProcessTilde property to True.