MaxiCode (UPS) – matrycowy, modularny, alfanumeryczny kod kreskowy o stałym wymiarze. Ze względu na swoją budowę może być stosowany do znakowania obiektów szybko poruszających się (np. ładunki poruszające się na przenośnikach). Może być dodatkowo umiejscowiony na powierzchniach zagiętych lub zakrzywionych. Symbolika została opracowana w 1992 roku przez firmę kurierską United Parcel Service. Następnie symbolika została włączona do Wykazu Ujednoliconych Symbolik (ang. USS - Unform Symbol Specyfications) przez organizację AIM (Global Trade Association of the Automatic Identification & Data Capture Industry). Obecnie symbolika jest dostępna na licencji public domain. Oprócz symboli ASCII istnieje również możliwość kodowania znaków należących do alfabetu arabskiego, greckiego, hebrajskiego lub cyrilicy.

Budowa kodu

Struktura fizyczna 

Kod ma stałe wymiary równe jednemu calowi kwadratowemu. Umożliwia to zakodowanie 93 znaków alfanumerycznych lub 138 cyfr (stała wartość) w 866 modułach. Każdy moduł ma kształt sześciokąta i przyjmuje dwa kolory zaczerniony lub biały. Pojedynczy sześciokąt ma wymiary 1,02mm w pionie i 0,88mm w poziomie. Poszczególne moduły ułożone są w matrycy 30 lub 29 (poziomo) na 33 (pionowo) moduły. Specyfikacja dopuszcza i umożliwia połączenie do ośmiu kodów celem zwiększenia ilości przenoszonych danych.

W centralnej części kodu znajduje się przypominający tarczę strzelecką wzór wyszukiwania, dzięki któremu skaner może rozpoznać położenie kodu. Wzór wyszukiwania składa się z trzech czarnych okręgów, pomiędzy którymi są białe przerwy. W pewnej odległości od wzoru wyszukiwania znajduje się sześć grup komórek stanowiących wzór orientacyjny. Komórki te są symetrycznie ułożone względem wzoru wyszukiwania i pozwalają na określenie położenia kodu względem skanera (gdzie jest góra, dół, lewa i prawa krawędź).

Mechanizm korekcji błędów 

W kodzie stosuje się mechanizm korekcji błędów Reed-Solomon na dwóch poziomach korekcji

 SEC – poziom standardowy, w którym dla 42 modułów kodujących dane dodaje się 20 modułów korygujących, co zapewnia możliwość poprawnego odczytu danych dla symbolu uszkodzonego w 16 procentach.
 EEC – poziom rozszerzony, w którym na każdy moduł kodujący dane przypada jeden moduł zawierający dane o korekcji, co pozwala na poprawny odczyt symboli uszkodzonych w 25 procentach.

Struktura logiczna 
W kodzie grupy modułów tworzą tzw. słowa kodowe. Jedno słowo kodowe odpowiada jednemu znakowi alfanumerycznemu. Dzięki możliwości kompresji cyfr jest możliwość kodowania dziewięciu cyfr w sześciu słowach kodowych. Kodowane dane dzielą się na dwa komunikaty:

 komunikat pierwotny – zawiera informacje o trybie kodu, dla niektórych trybów zawiera także pewne informacje o przesyłce, takie jak:
 trzycyfrowy kod kraju według ISO 3166

 kod pocztowy danego kraju
 trzycyfrowy kod Class of service przydzielony przez przewoźnika określający priorytet w kolejce
 dwudziestocyfrowy kod do śledzenia ruchu przesyłki
 dwu- czterocyfrowy kod określający pochodzenie przewoźnika

Komunikat ma długość 60 bitów (modułów). W komunikacie tym wykorzystuje się mechanizm korekcji EEC, co wykorzystuje kolejne 60 bitów.

 komunikat wtórny – wykorzystuje poziom korekcji SEC i służy do kodowania innych danych dodatkowych, które nie muszą być niezbędne do odczytania (w przypadku szybkiego skanowania). Dane te mogą zawierać informacje o dozwolonych sposobach manipulacji ładunku, na którym są umieszczone lub jego punkcie nadania i odbioru jak również o numerze faktury, o kliencie, numerze zamówienia etc.

Tryby kodu 
Kod może występować w jednym z siedmiu trybów. Informacje o trybie zakodowane są w czterech bitach komunikatu pierwotnego. Tryb uzależniony jest od stosowanego poziomu korekcji, rodzaju przenoszonych danych oraz struktury symbolu. Dostępne tryby to:

 Tryb 0 – nieaktualny (można rozpoznać po tym, że dwa górne moduły leżące po prawej stronie są białe, w pozostałych trybach są zaczernione)
 Tryb 2 – wykorzystywany przy stosowaniu numerycznych kodów pocztowych
 Tryb 3 – wykorzystywany przy stosowaniu alfanumerycznych kodów pocztowych
 Tryb 4 – wykorzystywany poziom korekcji SEC
 Tryb 5 – wykorzystywany poziom korekcji EEC
 Tryb 6 – wykorzystywany dla programowania urządzeń
W firmie UPS stosuje się tryb drugi lub trzeci.

Bibliografia 
 Kody kreskowe rodzaje, standardy, sprzęt, zastosowania – ILiM, Poznań, 2000, 

Kody kreskowe
Domena publiczna