

UPC (skrót odang.:Universal Product Code) – pierwszy standardkodu kreskowego, wprowadzony został w supermarketach wUSA iKanadzie w1973 roku, z myślą o usprawnieniu obsługi klientów i gromadzeniu danych w punktach sprzedaży.
Standaryzacją zajmowały się organizacjeUCC (Uniform Code Council, Inc.) w USA orazECCC (Electronic Commerce Council of Canada). W wyniku podjęcia działań mających na celu połączenie standardów UPC oraz konkurencyjnegoEAN w 2005 roku organizacje te weszły w skład globalnej organizacjiGS1.
W chwili obecnej stosowane są 2 rodzaje kodów numerycznych UPC:

W kodzie UPC-A dwanaście cyfr dziesiętnych kodowane jest jako SLLLLLLMRRRRRRE, gdzie S (początek) i E (koniec) oznaczone są przez 3 moduły (bity – 101), M (środek, pole ochronne) jako 01010. Każde L i R jest cyfrą przedstawioną przez 7 modułów (siedem bitów). Całość kodu składa się z 95 bitów. Aby zmniejszyć prawdopodobieństwo błędnego odczytu, każde cyfra zakodowana jest tak, by w jak największym stopniu różnić się od pozostałych. Dodatkowo w kodowaniu nie występują moduły dłuższe od 4 przerw lub pasków.
Pierwsza cyfraL jestprefiksem, natomiast ostatnia cyfraR jestsumą kontrolną.
W kodzie UPC-E można zaprezentować to jako SLLLRRRE
Poprzez dodanie prefiksu 0, kody te stają się zgodne zEAN-13.
W systemie UPC-A, sumę kontrolną oblicza się w następujący sposób:
Na przykład dla kodu "03600029145X", gdzieX oznacza cyfrę kontrolną,X zostaje wyliczone w następujący sposób: Suma cyfr znajdujących się w miejscach nieparzystych (0+6+0+2+1+5 = 14) jest mnożona przez 3 (14 × 3 = 42), następnie dodawane są cyfry znajdujące się na miejscach parzystych – (42+3+0+0+9+4 = 58), obliczana jest wartość modulo 10 (58%10 = 8), a następnie wynik odejmowany jest od 10 (10 – 8 = 2). Obliczamy po raz kolejny modulo 10 (2%10 = 2). Suma kontrolna ma wartość 2.
W UPC-E cyfra kontrolna wynika z parytetu zakodowanych w kodzie cyfr.
W kodzie UPC-A, każda cyfra jest zapisana przez kombinację 4 modułów (kreska przerwa kreska przerwa lub na odwrót). Ze względu na możliwość odczytu kodu w dwie strony cyfry zapisane po lewej stronie kodu ("L") są przedstawione jakodopełnienie takiej samej cyfry zapisanej po prawej stronie kodu ("R").
Na przykład cyfra "6" jest zapisana jako:
0101111 (Dla lewej strony kodu)1010000 (Dla prawej strony kodu)| Znak | Sposób kodowania lewa strona | Sposób kodowania prawa strona |
| 0 | 0001101 | 1110010 |
| 1 | 0011001 | 1100110 |
| 2 | 0010011 | 1101100 |
| 3 | 0111101 | 1000010 |
| 4 | 0100011 | 1011100 |
| 5 | 0110001 | 1001110 |
| 6 | 0101111 | 1010000 |
| 7 | 0111011 | 1000100 |
| 8 | 0110111 | 1001000 |
| 9 | 0001011 | 1110100 |