EAN-13 바코드 13번째 자리, 체크 디지트 계산법

상품 뒤에 붙은 EAN-13 바코드 숫자 13자리 중 마지막 한 자리는 상품 정보가 아닙니다. 앞 12자리로 계산해 붙이는 검산용 숫자, 즉 체크 디지트입니다.
그래서 13자리를 받아 적었을 때 잘못 옮겼는지 여부를 계산기 없이도 확인할 수 있습니다. 곱셈 몇 번과 뺄셈 한 번이면 끝납니다.
요약 ① 앞 12자리에 왼쪽부터 1, 3, 1, 3… 을 곱해 더한 뒤, 그 합보다 크거나 같은 가장 가까운 10의 배수에서 빼면 13번째 자리가 나옵니다. ② 앞 세 자리 880은 원산지가 아니라 번호를 발급한 GS1 회원기관이 한국이라는 뜻입니다. ③ 이웃한 두 숫자의 차가 5일 때 자리를 바꿔 적으면 체크 디지트가 같게 나와 이 검산으로 잡히지 않습니다.
13번째 자리는 상품 정보가 아닙니다
EAN-13 번호는 크게 세 덩어리입니다. 앞쪽의 GS1 프리픽스, 그 뒤의 업체·상품 식별 자리, 그리고 맨 끝의 체크 디지트 한 자리입니다.
업체 코드가 몇 자리인지는 발급 유형에 따라 달라서, 가운데 덩어리를 눈으로 갈라 읽는 것은 의미가 없습니다. 반면 마지막 한 자리는 규칙이 하나로 정해져 있습니다.
이 자리가 있는 이유는 단순합니다. 스캐너가 한 자리를 잘못 읽거나 사람이 한 자리를 잘못 옮겨 적으면, 계산이 어긋나 틀렸다는 사실이 즉시 드러나게 하려는 것입니다.
도구 없이 손으로 검산하는 방법
계산은 세 단계입니다. 예시로 앞 12자리가 880123456789 인 경우를 따라가 보겠습니다. 이 숫자는 계산 설명용이며 특정 상품과는 관계가 없습니다.
1단계 — 홀수 자리와 짝수 자리로 나눕니다
왼쪽부터 1번째, 3번째, 5번째… 자리에는 1을 곱하고, 2번째, 4번째, 6번째… 자리에는 3을 곱합니다. 12자리이므로 각각 여섯 개씩 나뉩니다.
- 홀수 자리(1·3·5·7·9·11번째): 8, 0, 2, 4, 6, 8 → 합 28
- 짝수 자리(2·4·6·8·10·12번째): 8, 1, 3, 5, 7, 9 → 합 33
2단계 — 짝수 자리 합에 3을 곱해 더합니다
짝수 자리 합 33에 3을 곱하면 99입니다. 여기에 홀수 자리 합 28을 더하면 127이 됩니다.
한 자리씩 곱해 12번 더해도 결과는 같습니다. 묶어서 곱하면 암산이 훨씬 빠릅니다.
3단계 — 10의 배수로 올린 뒤 뺍니다
127보다 크거나 같은 가장 가까운 10의 배수는 130입니다. 130에서 127을 빼면 3입니다.
이 3이 체크 디지트이고, 완성된 13자리는 8801234567893 이 됩니다. 합계의 일의 자리가 이미 0이면 체크 디지트는 10이 아니라 0입니다.
같은 방법으로 아무 번호나 검산할 수 있습니다. 예를 들어 앞 12자리가 123456789012 라면 홀수 자리 합은 26, 짝수 자리 합은 22이므로 26 + 66 = 92, 100 - 92 = 8이 나옵니다.
문제는 자리를 세다가 한 칸씩 밀리기 쉽고, 여러 개를 연달아 확인할 때 실수가 누적된다는 점입니다.
저희 도구로 확인하기. 바코드 형식에서 EAN-13(상품)을 고르고 데이터 칸에 12자리만 넣으면 13번째 자리가 자동으로 붙어 바코드 아래에 표시됩니다. 13자리를 통째로 넣었을 때 체크 디지트가 맞지 않으면 바코드가 그려지지 않고 형식이 맞지 않는다는 안내가 뜹니다.
설치·회원가입 없이 브라우저 안에서 바코드가 그려지며, 입력한 숫자는 서버로 전송되지 않습니다.

앞 세 자리 880이 뜻하는 것
880으로 시작하는 번호를 두고 "한국산 표시"라고 이해하는 경우가 많습니다. 정확히는 다릅니다.
앞자리는 그 번호를 발급한 GS1 회원기관을 가리킵니다. 880은 한국의 GS1 회원기관(대한상공회의소 유통물류진흥원)에서 발급한 번호라는 뜻이고, 대한민국에는 880과 881 대역이 배정돼 있습니다.
GS1은 프리픽스가 원산지를 나타내지 않는다고 공식적으로 밝히고 있습니다. 번호를 받은 회사는 세계 어디에서든 제품을 만들 수 있기 때문입니다. 원산지는 바코드가 아니라 포장의 원산지 표시로 확인해야 합니다.
반대 방향도 성립합니다. 한국에서 만든 제품이라도 판매 회사가 다른 나라의 GS1 회원기관에서 번호를 받았다면 앞자리는 880이 아닙니다.
국가가 아닌 용도로 쓰이는 대역
프리픽스가 전부 나라를 가리키는 것도 아닙니다. 일부 구간은 처음부터 다른 용도로 비워 두었습니다.
| 앞자리 | 용도 |
|---|---|
| 020 | 매장·지역 안에서만 통용되는 제한 유통 번호 |
| 977 | 연속간행물(ISSN) |
| 978~979 | 도서(ISBN) |
| 980 | 환불 영수증 |
마트에서 무게를 달아 붙이는 즉석 라벨의 바코드가 2로 시작하는 경우가 있는데, 그 매장 안에서만 통하는 번호라 다른 곳에서는 의미가 없습니다. 책 뒤표지의 바코드가 978로 시작하는 것도 같은 이유입니다.
검산으로 잡히지 않는 오류
체크 디지트 한 자리로 모든 오류를 잡을 수는 없습니다. 구조상 놓치는 경우가 정해져 있습니다.
한 자리를 다른 숫자로 잘못 적으면 합계가 반드시 달라지므로 항상 걸립니다. 문제는 이웃한 두 자리의 순서를 바꿔 적었을 때입니다.
가중치 1과 3이 서로 바뀌면 합계는 두 숫자 차이의 2배만큼 변합니다. 그래서 두 숫자의 차가 5이면 합계가 정확히 10만큼 달라지고, 10으로 나눈 나머지가 그대로라 체크 디지트도 같게 나옵니다.
| 실수 유형 | 검산으로 잡히나 |
|---|---|
| 한 자리를 다른 숫자로 잘못 적음 | 항상 잡힙니다 |
| 이웃한 두 자리를 바꿔 적었고 차가 5가 아님 | 잡힙니다 |
| 이웃한 두 자리를 바꿔 적었고 차가 5임(예: 2와 7) | 잡히지 않습니다 |
| 자리 수 자체가 모자라거나 넘침 | 13자리가 아니므로 형식에서 걸립니다 |
즉 체크 디지트를 통과했다는 것은 "틀리지 않았다"가 아니라 "흔한 오류 대부분에 해당하지 않는다"는 뜻입니다. 원본과 눈으로 대조하는 절차를 대체하지는 못합니다.
정리
- EAN-13의 13번째 자리는 상품 정보가 아니라 앞 12자리로 계산하는 체크 디지트입니다.
- 계산은 홀수 자리 합 + (짝수 자리 합 × 3) 을 구한 뒤, 그 값 이상인 가장 가까운 10의 배수에서 빼면 됩니다.
- 합계의 일의 자리가 0이면 체크 디지트는 0입니다.
- 앞 세 자리 880은 원산지가 아니라 번호를 발급한 GS1 회원기관이 한국이라는 뜻이며, 881도 함께 배정돼 있습니다.
- 020
029·200299는 매장 안에서만 통하는 번호, 977은 연속간행물, 978~979는 도서 대역입니다. - 이웃한 두 숫자의 차가 5인 자리바꿈 오류는 이 검산으로 잡히지 않습니다.
설치·회원가입 없이 브라우저 안에서 바코드가 그려지며, 입력한 숫자는 서버로 전송되지 않습니다.
자주 묻는 질문
12자리만 있는데 13번째 자리를 어떻게 채우나요?
계산해서 붙이면 됩니다. 홀수 자리 숫자를 모두 더하고, 짝수 자리 숫자를 모두 더해 3을 곱한 뒤 두 값을 합칩니다. 그 합보다 크거나 같은 가장 가까운 10의 배수에서 합을 빼면 그 값이 13번째 자리입니다. 도구의 데이터 칸에 12자리를 넣어도 같은 규칙으로 한 자리가 자동으로 붙습니다.
13자리를 넣었는데 바코드가 안 그려집니다.
체크 디지트가 맞지 않을 때 나타나는 증상입니다. EAN-13은 13번째 자리가 앞 12자리와 계산이 맞아야만 유효한 번호로 인정되기 때문에, 숫자 하나가 어긋나면 바코드가 그려지지 않고 형식이 맞지 않는다는 안내가 대신 표시됩니다. 앞 12자리로 다시 계산해 마지막 자리를 대조해 보면 어디가 틀렸는지 드러납니다.
880으로 시작하면 한국에서 만든 제품인가요?
아닙니다. 앞자리는 번호를 발급한 GS1 회원기관을 가리킬 뿐이고, GS1도 프리픽스가 원산지를 나타내지 않는다고 안내하고 있습니다. 880 번호를 받은 회사가 해외 공장에서 생산할 수도 있고, 국내 생산품이 다른 나라 번호를 달 수도 있습니다. 원산지는 포장의 원산지 표시로 확인해야 합니다.
EAN-13과 UPC-A는 무엇이 다른가요?
자릿수가 다릅니다. EAN-13은 13자리, UPC-A는 12자리이며, UPC-A 번호 앞에 0을 하나 붙이면 EAN-13 형태가 됩니다. 체크 디지트를 구하는 방식은 같은 계열이라 도구에서도 형식만 바꿔 각각 생성할 수 있고, UPC-A는 11자리를 넣으면 마지막 한 자리가 자동으로 붙습니다.
