Cyfra kontrolna to ostatnia cyfra kodu EAN/GTIN, obliczona matematycznie z pozostałych cyfr. Jej jedynym zadaniem jest wykrywanie pomyłek - jeśli ktoś źle przepisze albo źle zeskanuje jedną cyfrę, wynikowy kod prawie na pewno nie przejdzie tej kontroli. Dzięki temu skanery i systemy magazynowe od razu odrzucają literówki, zamiast przyjmować błędny numer.

Wzór - ten sam dla każdej długości

Wszystkie kody rodziny GTIN (EAN-8, EAN-13, ITF-14 / GTIN-14, SSCC) używają dokładnie tego samego algorytmu, niezależnie od liczby cyfr:

  1. Policz cyfry danych od prawej strony, zaczynając od wagi 3 dla ostatniej cyfry.
  2. Wagi naprzemiennie: 3, 1, 3, 1, 3, 1... aż do pierwszej cyfry.
  3. Pomnóż każdą cyfrę przez jej wagę i zsumuj wszystkie iloczyny.
  4. Znajdź najbliższą wielokrotność 10, która jest równa sumie lub większa od niej.
  5. Cyfra kontrolna = różnica między tą wielokrotnością a sumą.

Przykład: EAN-13

Dane: 590123412345 (12 cyfr). Licząc wagi od prawej (3, 1, 3, 1...):

Cyfra590123412345
Waga131313131313
Iloczyn52703294329415

Suma iloczynów: 5+27+0+3+2+9+4+3+2+9+4+15 = 83. Najbliższa wielokrotność 10 równa lub większa od 83 to 90. Cyfra kontrolna = 90 - 83 = 7. Pełny kod: 5901234123457.

Przykład: EAN-8 (krótszy kod, ten sam wzór)

Dane: 1234567 (7 cyfr). Suma ważona wynosi 60 - to już wielokrotność 10, więc cyfra kontrolna wynosi 0. Pełny kod: 12345670. Ten sam algorytm, krótsze dane - liczba cyfr nie zmienia reguły, tylko liczbę wyrazów w sumie.

Przykład: ITF-14 / GTIN-14 (dłuższy kod)

Dane: 1590123412345 (13 cyfr). Cyfra kontrolna wychodzi 4, pełny kod: 15901234123454. Zasada się nie zmienia - tylko więcej cyfr do przemnożenia i zsumowania.

Przykład: UPC-A (12 cyfr, 11 danych)

Dane: 03600029145. Przy nieparzystej liczbie cyfr danych widać wyraźnie, dlaczego liczenie wag trzeba zaczynać od prawej strony - pierwsza cyfra dostaje tu wagę 3, a nie 1 jak w EAN-13.

Cyfra03600029145
Waga31313131313
Iloczyn0318000693415

Suma: 0+3+18+0+0+0+6+9+3+4+15 = 58. Dopełnienie do 60 daje cyfrę kontrolną 2, pełny kod 036000291452. Dopisanie zera z przodu (wersja EAN-13 0036000291452) dokłada do sumy 0×1 = 0, więc cyfra kontrolna się nie zmienia - to podstawa zgodności obu formatów opisanej w poradniku EAN-13 a UPC-A.

Jak sprawdzić, czy istniejący numer jest poprawny

Nie trzeba odejmować cyfry kontrolnej i liczyć od nowa. Wystarczy przemnożyć wszystkie cyfry, łącznie z ostatnią, nadając ostatniej wagę 1, przedostatniej 3 i tak dalej. Jeśli suma jest podzielna przez 10, numer jest poprawny. Dla 5901234123457: suma dwunastu cyfr danych z ich wagami to 83, cyfra kontrolna 7 dostaje wagę 1 - razem 90, dzieli się przez 10, numer jest w porządku. Gdyby ktoś przepisał go jako 5901234123475 (zamiana dwóch ostatnich cyfr), na dwóch ostatnich pozycjach zamiast 5×3 + 7×1 mielibyśmy 7×3 + 5×1 - wynik 94, błąd wykryty.

Dokładnie tak działają formularze Allegro, Amazon czy Google Merchant: odrzucają numer z błędną cyfrą kontrolną, zanim w ogóle sprawdzą go w rejestrze GS1. Jeśli widzisz komunikat o „nieprawidłowym EAN", w pierwszej kolejności przelicz ostatnią cyfrę w kalkulatorze.

Co wykrywa ten algorytm, a czego nie

Wagi 1 i 3 nie są przypadkowe. Ponieważ 3 jest względnie pierwsze z 10, zmiana dowolnej pojedynczej cyfry zawsze zmienia sumę o wartość niepodzielną przez 10 - czyli każdy pojedynczy błąd jest wykrywany. Zamiana miejscami dwóch sąsiednich cyfr zmienia sumę o dwukrotność ich różnicy, więc jest wykrywana zawsze z wyjątkiem sytuacji, gdy cyfry różnią się o 5 (np. 27 zamienione na 72 przechodzi niezauważone). Algorytm nie ma też szans wykryć dwóch błędów, które przypadkowo się znoszą. To świadomy kompromis: prosty rachunek, który łapie zdecydowaną większość typowych literówek, a nie pełna korekcja błędów jak w kodach 2D.

StandardCyfr danychAlgorytm
EAN-87mod 10, wagi 3-1
UPC-A11mod 10, wagi 3-1
EAN-13 / ISBN-13 / ISSN w EAN12mod 10, wagi 3-1
ITF-14 (GTIN-14)13mod 10, wagi 3-1
SSCC (etykieta logistyczna)17mod 10, wagi 3-1
Stary ISBN-109mod 11, wagi 10-2 (stąd „X")
Code-128dowolnamod 103, ważony pozycją, ukryty w symbolu

Warto pamiętać o tych różnicach przy książkach: stary 10-cyfrowy ISBN miał własny algorytm modulo 11 z możliwym znakiem „X" na końcu. Po konwersji na 13-cyfrowy (prefiks 978) cyfrę kontrolną liczy się od nowa według wzoru GTIN - nasz generator ISBN robi to automatycznie.

Częste pytania

Czy cyfra kontrolna może wynosić 0?

Tak - wtedy, gdy suma ważona jest już wielokrotnością 10, jak w przykładzie EAN-8 powyżej. Zero jest równie dobrą cyfrą kontrolną jak każda inna.

Czy mogę wybrać sobie cyfrę kontrolną?

Nie. Wynika jednoznacznie z pozostałych cyfr. Jeżeli pula numerów z GS1 daje Ci 12 cyfr, ostatnią zawsze doliczasz; jeśli dostałeś już pełne 13-cyfrowe numery, ostatnia jest w nich policzona.

Czy w Excelu da się to policzyć formułą?

Tak, choć formuła jest długa. Dla 12 cyfr w komórce A1 zapisanej jako tekst działa suma iloczynów kolejnych znaków przez wagi, a potem MOD(10 - MOD(suma; 10); 10). Przy większej liczbie numerów wygodniej użyć naszego generatora wielu kodów, który liczy cyfry kontrolne dla całej listy naraz.

Najczęstsze pomyłki

Nie chce Ci się liczyć ręcznie? Kalkulator sumy kontrolnej robi dokładnie to, co powyżej, w ułamku sekundy - a generator EAN-13 dolicza cyfrę kontrolną automatycznie przy każdym wygenerowanym kodzie.