CODE128 바코드 이해 완벽 가이드 - 구조와 코드셋부터 실무 활용까지 한번에 정리
택배 라벨부터 재고 관리까지 어디에나 쓰이는 CODE128 바코드의 구조, 코드셋 A·B·C, 체크 디지트 원리를 쉽게 풀어드립니다. 무료로 만드는 방법과 실무 적용 체크포인트까지 확인하세요.
![]()
택배 상자에 붙은 운송장, 물류 창고의 재고 라벨, 병원의 검체 스티커까지. 굵고 가는 세로줄이 늘어선 바코드는 어디에나 있지만, 그 줄무늬가 어떤 원리로 정보를 담는지 아는 분은 의외로 적습니다. 이 줄무늬의 정체가 바로 CODE128입니다. CODE128 바코드 이해는 물류나 재고 관리 업무를 하는 분은 물론, 라벨 프린터를 다루거나 POS 시스템을 운영하는 분에게도 바로 써먹을 수 있는 지식입니다.
CODE128 바코드란 무엇인가
CODE128은 1981년 미국 컴퓨터 아이덴틱스(Computer Identics)사에서 개발한 1차원 바코드입니다. 이름의 128은 ASCII 코드 128개 문자를 전부 표현할 수 있다는 뜻입니다. 숫자만 담을 수 있는 EAN-13과 달리 영문 대소문자, 숫자, 특수문자를 자유롭게 담을 수 있어 물류와 산업 현장에서 가장 널리 쓰이는 바코드가 되었습니다. 현재는 국제 표준 ISO/IEC 15417로 규격이 관리됩니다.
- 고밀도: 같은 내용을 담아도 CODE39보다 훨씬 좁은 폭으로 인쇄됩니다.
- 전체 ASCII 지원: 영문 대소문자, 숫자, 특수문자, 제어문자까지 모두 표현합니다.
- 필수 체크 디지트: 오독을 걸러내는 검증 문자가 규격 자체에 포함되어 있습니다.
- 가변 길이: 데이터 길이 제한이 없어 운송장 번호처럼 긴 데이터에 적합합니다.
택배 운송장, 물류 박스 라벨, 재고 관리 태그에서 보는 세로줄 바코드 대부분이 CODE128이거나 그 확장 규격인 GS1-128입니다.
CODE128 바코드의 구조
CODE128은 왼쪽부터 여백(콰이어트 존), 시작 문자, 데이터, 체크 디지트, 종료 문자, 여백 순서로 구성됩니다. 문자 하나는 검은 바 3개와 흰 공백 3개, 총 11개의 모듈로 이루어집니다. 모듈은 바코드에서 가장 가는 줄 하나의 폭을 말합니다. 종료 문자만 예외적으로 13모듈을 사용합니다. 스캐너는 줄의 개수가 아니라 굵기의 조합을 읽어 값을 해석합니다.
체크 디지트 계산 원리
CODE128 바코드 이해에서 가장 중요한 부분이 체크 디지트입니다. 시작 문자의 값에 각 데이터 문자의 값과 위치 번호를 곱해 모두 더한 뒤, 103으로 나눈 나머지가 체크 문자가 됩니다. 예를 들어 Start B(값 104)로 시작해 A(값 33), B(값 34)를 담으면 104 + 33×1 + 34×2 = 205이고, 205를 103으로 나눈 나머지 102가 체크 문자 값입니다. 스캐너는 읽을 때마다 이 계산을 다시 수행해서 값이 맞지 않으면 판독 자체를 거부합니다. 줄이 살짝 훼손된 라벨을 찍어도 엉뚱한 번호가 입력되지 않는 이유가 여기에 있습니다.
코드셋 A, B, C 완벽 이해
CODE128에는 세 가지 코드셋이 있고, 어떤 시작 문자로 출발하느냐에 따라 같은 줄무늬도 다르게 해석됩니다.
| 구분 | 표현 가능 문자 | 주 용도 |
|---|---|---|
| 코드셋 A | 대문자, 숫자, 특수문자, 제어문자 | 제어문자가 필요한 산업용 시스템 |
| 코드셋 B | 대문자, 소문자, 숫자, 특수문자 | 일반적인 텍스트 데이터 |
| 코드셋 C | 숫자 2자리 쌍(00~99) | 운송장 번호 등 숫자 전용 데이터 |
숫자 데이터라면 코드셋 C
코드셋 C는 심볼 하나에 숫자 두 자리를 담습니다. 같은 숫자를 코드셋 B로 인쇄할 때보다 바코드 폭이 절반 가까이 줄어듭니다. 좁은 라벨에 열두 자리가 넘는 운송장 번호를 넣어야 하는 물류 현장에서 코드셋 C가 기본으로 쓰이는 이유입니다. 하나의 바코드 안에서 전환 문자를 넣어 코드셋을 중간에 바꾸는 것도 가능합니다.
바코드는 그림이 아니라 데이터입니다. 줄의 개수가 아니라 굵기의 조합이 값을 결정하고, 체크 디지트라는 검증 장치까지 내장한 작은 데이터 패킷이라고 생각하면 CODE128의 모든 규칙이 자연스럽게 읽힙니다.
다른 바코드와의 비교
현장에서 자주 마주치는 바코드들과 비교하면 CODE128의 위치가 분명해집니다.
| 종류 | 담을 수 있는 데이터 | 특징 |
|---|---|---|
| CODE128 | ASCII 128문자 전체 | 고밀도, 체크 디지트 필수, 물류 표준 |
| CODE39 | 대문자, 숫자, 일부 기호 43문자 | 구형 규격, 폭이 넓고 체크 디지트 선택 |
| EAN-13 | 숫자 13자리 고정 | 상품 식별 전용, 마트 계산대 바코드 |
| QR코드 | 숫자, 문자, 한글, URL 등 대용량 | 2차원, 카메라 스캔에 유리 |
물류에서 자주 보이는 GS1-128은 CODE128을 기반으로 응용 식별자(AI)를 붙여 유통기한, 로트 번호, 수량 같은 정보를 정해진 규칙으로 담는 확장 규격입니다. 겉모습은 CODE128과 같지만 데이터를 담는 문법이 표준화되어 있어 서로 다른 회사의 시스템끼리도 같은 라벨을 읽을 수 있습니다.
CODE128 바코드 만들기와 활용
직접 만들어 보면 이해가 훨씬 빨라집니다. 방법은 크게 세 가지입니다.
- 무료 온라인 생성기: 텍스트를 입력하면 이미지로 내려받을 수 있어 소량 라벨에 적합합니다.
- 라벨 프린터 전용 소프트웨어: 지브라(Zebra) 계열의 ZPL 명령어나 전용 디자인 프로그램으로 대량 출력이 가능합니다.
- 엑셀, 문서 프로그램: 바코드 폰트를 쓰는 방식인데 주의가 필요합니다.
특히 엑셀에서 바코드 폰트만 적용하는 실수가 정말 많습니다. CODE128은 시작 문자, 체크 디지트, 종료 문자가 반드시 들어가야 하는 규격이라서, 데이터에 폰트만 씌우면 겉보기에는 바코드처럼 보여도 스캐너가 전혀 읽지 못합니다. 반드시 체크 디지트를 계산해 주는 함수나 전용 도구를 함께 사용해야 합니다.
사무실이나 매장에서 네트워크 라벨 프린터로 출력하는데 명령이 프린터까지 가지 않는다면 네트워크 설정 문제인 경우가 대부분입니다. 내 IP 주소 확인 같은 도구로 현재 PC의 접속 환경을 점검하고, 프린터가 같은 공유기에 물려 있는지부터 확인해 보세요.
실무 적용 전 체크포인트
라벨을 실제로 발행하기 전에 아래 항목만 점검해도 스캔 불량의 대부분을 예방할 수 있습니다.
- 바코드 좌우에 콰이어트 존(최소 10모듈)이 확보되어 있는가
- 숫자 전용 데이터라면 코드셋 C로 생성했는가
- 테스트 스캔을 실제 사용할 스캐너와 같은 기종으로 해봤는가
- 라벨 프린터 해상도에서 가장 가는 줄이 뭉개지지 않고 인쇄되는가
지금 바로 해볼 수 있는 액션은 두 가지입니다. 첫째, 무료 생성기로 CODE128 바코드를 하나 만들어 스마트폰 바코드 스캐너 앱으로 읽어 보세요. 시작 문자와 체크 디지트가 어떻게 붙는지 눈으로 확인하는 것이 가장 빠른 공부입니다. 둘째, 지금 쓰고 있는 라벨이 있다면 바코드 좌우 여백부터 점검해 보세요. 스캔이 잘 안 되던 라벨의 원인이 의외로 간단하게 풀리는 경우가 많습니다.