바코드 체크디지트는 마지막 자리를 뺀 숫자에 오른쪽 끝부터 3과 1을 번갈아 곱해 더한 뒤, 그 합 이상인 가장 가까운 10의 배수에서 합을 뺀 숫자입니다. EAN-13, UPC-A, ITF-14, SSCC가 모두 같은 공식이라 체크디지트 바로 앞자리에 3을 곱한다는 기준 하나로 검증합니다.

계산이 맞아도 번호가 옳다는 뜻은 아닙니다. 체크디지트는 한 자리 오타와 대부분의 자리 바뀜을 찾아내지만, 발급받지 않은 번호까지 걸러 내지는 못합니다.

체크디지트 계산 4단계

  1. 맨 끝 체크디지트 자리를 떼어 냅니다. EAN-13이면 앞 12자리, ITF-14에 담는 GTIN-14면 앞 13자리가 남습니다.
  2. 남은 숫자의 오른쪽 끝 자리에 3, 그 왼쪽에 1을 곱하고, 왼쪽 끝까지 3과 1을 번갈아 곱합니다.
  3. 곱한 결과를 모두 더합니다.
  4. 합 이상인 가장 가까운 10의 배수에서 합을 빼면 0~9 중 하나가 나옵니다. 합이 이미 10의 배수라면 체크디지트는 0입니다.

가중치를 오른쪽부터 세기 때문에 자릿수가 달라도 규칙은 하나입니다. 대신 왼쪽 첫 자리의 가중치는 번호 길이에 따라 3이 되기도, 1이 되기도 합니다.

GTIN 자릿수별 첫 자리 가중치

번호 체계 (바코드)체크디지트 앞 자릿수왼쪽 첫 자리 가중치계산 예시
GTIN-8 (EAN-8)7자리×39501234 → 6
GTIN-12 (UPC-A)11자리×301234567890 → 5
GTIN-13 (EAN-13)12자리×1950110153100 → 0
GTIN-14 (ITF-14, GS1-128)13자리×30367123456789 → 7
SSCC (GS1-128)17자리×337610425002123456 → 9

체크디지트 앞 자릿수가 홀수면 왼쪽 첫 자리부터 ×3, 짝수면 ×1로 시작합니다. 다섯 체계 중 EAN-13만 1·3·1·3 순서이고, 나머지 넷은 3·1·3·1 순서입니다.

EAN-13 체크디지트 계산 예시

예시 번호 880123456789(12자리)로 계산합니다. 880은 대한민국 국가코드이고, 뒤 9자리는 계산 과정을 보여 주려고 넣은 임의의 숫자입니다.

자리숫자가중치곱
18×18
28×324
30×10
41×33
52×12
63×39
74×14
85×315
96×16
107×321
118×18
129×327
합계127

곱의 합은 127입니다. 127 이상인 가장 가까운 10의 배수가 130이므로 체크디지트는 3이고, 완성된 GTIN-13은 8801234567893입니다.

이미 인쇄된 13자리를 검증할 때는 13번째 숫자에 ×1을 곱해 합에 더합니다. 결과가 130처럼 10의 배수로 떨어지면 정상입니다.

EAN-13의 맨 앞 숫자는 자기 막대가 따로 없습니다. 왼쪽 여섯 글자를 A·B 두 패턴으로 섞은 조합이 첫 숫자를 나타내며, 체크디지트 계산에는 이 숫자도 포함합니다.

체크디지트가 찾아내는 입력 오류

숫자 한 자리만 틀리면 체크디지트는 반드시 어긋납니다. 가중치 1 자리에서 숫자가 d만큼 바뀌면 합이 d, 가중치 3 자리면 3d만큼 바뀌는데, d가 1~9일 때 둘 다 10의 배수가 아니기 때문입니다.

나란히 있는 두 숫자가 뒤바뀌면 합은 두 숫자 차이의 2배만큼 달라집니다. 차이가 5인 0과 5, 1과 6, 2와 7, 3과 8, 4와 9가 자리를 바꾸면 합이 정확히 10 늘거나 줄어서 검증을 그대로 통과합니다.

두 자리 이상이 동시에 틀리면 서로 상쇄되는 조합도 나옵니다. 그래서 체크디지트가 맞는 번호도 GS1 Korea에서 발급받은 상품 목록과 한 번 더 대조합니다.

UPC·GTIN-14 변환과 체크디지트

UPC-A의 GTIN-12 앞에 0을 붙여 13자리로 읽어도 체크디지트는 그대로입니다. 0에 어떤 가중치를 곱해도 0이라서, 012345678905를 0012345678905로 늘려도 끝자리 5가 맞습니다.

GTIN-14는 다릅니다. 맨 앞 지시자가 0이면 체크디지트가 GTIN-13과 같지만, 박스 단위를 구분하려고 지시자를 1~8로 바꾸면 새로 계산합니다. 0367123456789는 체크디지트가 7인데, 지시자만 1로 바꾼 1367123456789는 첫 자리에 ×3이 더해져 합이 126이 되고 체크디지트는 4로 바뀝니다.

UPC-E는 0이 4~5개 들어간 GTIN-12를 6글자로 줄인 바코드입니다. 체크디지트는 줄이기 전 GTIN-12의 앞 11자리로 계산하고, 판독 쪽도 12자리로 펼친 뒤 다시 계산해 바코드 속 체크디지트와 비교합니다.

GTIN 체크디지트와 GS1-128 검사 문자 차이

항목GTIN·SSCC 체크디지트GS1-128 심벌 검사 문자
계산 방식가중치 3·1, 10의 배수에서 합을 뺌가중치 1·1·2·3…, 합을 103으로 나눈 나머지
위치번호의 마지막 자리마지막 데이터 문자 다음, 정지 문자 앞
바코드 아래 숫자표시함표시하지 않음
스캐너가 PC로 보내는 데이터포함 (기종에 따라 끄는 설정 있음)포함하지 않음
적용 범위EAN-13·EAN-8·UPC·ITF-14, GS1-128 속 (01)·(00) 번호GS1-128 바코드 전체

GS1-128 한 줄에는 검증 장치가 두 겹으로 들어갑니다. (01) 뒤 GTIN-14와 (00) 뒤 SSCC는 각자 체크디지트를 숫자로 품고, 바코드 전체에는 103으로 나눈 나머지로 만든 검사 문자가 따로 붙습니다.

검사 문자는 바코드 아래 숫자에 나오지 않으므로 눈으로 대조할 대상이 아닙니다. 라벨 숫자를 검증할 때는 (01)·(00) 뒤 번호의 끝자리만 계산하면 됩니다. ITF-14는 별도 검사 문자 없이 GTIN-14 체크디지트 하나로 검증합니다.

스캐너·착한라벨 디자이너의 체크디지트 처리

제브라 CS6080 스캐너는 UPC-A·EAN-13 체크디지트를 항상 검증합니다. 설정 바코드로 바꾸는 항목은 체크디지트를 PC로 보낼지 여부뿐이고 출고 설정은 전송이라, 입력된 상품코드가 12자리로 짧으면 Do Not Transmit 설정 바코드를 스캔한 적이 있는지 확인합니다.

착한라벨 디자이너의 (01)·(02) 칸에는 체크디지트 자동 계산이 들어 있습니다. 13자리를 넣으면 GTIN-14 체크디지트 1자리를 덧붙이고, 14자리를 넣으면 마지막 자리를 계산 결과로 바꿔 넣으며, (00) SSCC 칸도 17·18자리를 같은 방식으로 처리합니다.

이 자동 보정 때문에 중간 자리에 오타가 난 GTIN은 체크디지트까지 맞춘 다른 번호로 인쇄됩니다. 엑셀에서 불러온 GTIN 열은 인쇄 전에 발급 목록과 대조하고, 열 연결 순서는 엑셀 바코드 라벨 출력에, SSCC 구조는 GS1-128 물류 라벨 읽는 법에 정리했습니다.