Skip to content

무료 바코드 생성기 — EAN-13, UPC-A, Code 128

EAN-13, UPC-A, Code 128 바코드를 온라인에서 무료로 생성해 SVG나 PNG로 내려받으세요. 체크 디지트가 자동으로 채워지고, 틀리면 정답을 알려 드립니다.

트래킹 없음 브라우저 실행 무료
바코드는 브라우저 안에서 그려집니다. 아무것도 업로드되지 않습니다.

외관 및 인쇄 크기

일괄 생성 (한 줄에 값 하나씩)

검증에 실패한 행은 이유와 함께 ZIP 안의 skipped.txt에 나열됩니다.

소매에서 스캔되는 바코드에는 GS1이 발급한 기업 프리픽스가 필요합니다. 이 도구는 그래픽만 그릴 뿐 번호를 배정하지 않습니다. 내부용 라벨은 등록이 필요 없습니다.

이 페이지의 모든 숫자는 계산한 뒤 두 번 검산했습니다. 체크 디지트는 실제로 발행된 바코드 — 인쇄된 교과서의 ISBN-13, 330ml 코카콜라 캔, UPC-A와 EAN-8의 참조 예시 — 를 기준으로 검증했고, 인코더 자체의 계산 결과와도 독립적으로 대조했습니다. Code 128의 모듈 수는 렌더링된 출력과 샘플 단위로 대조해 검증한 공식에서 나왔으며, 홀수 자릿수 전환 페널티도 이 과정에서 발견했습니다. GS1 프리픽스가 원산지를 나타내지 않는다는 주장은 GS1 자신이 공개적으로 밝힌 입장입니다. — Go Tools 엔지니어링 팀 · Sep 24, 2026

Go Tools 인코딩 도구를 만드는 개발자들이 작성하고 검토했습니다. 여기 설명한 모듈 수, 체크 디지트 계산, 인코더 동작은 남이 정리한 요약이 아니라 실제로 돌아가는 엔진을 직접 측정한 결과입니다.

빠른 답변

여기서 생성한 바코드로 상품을 판매할 수 있나요?

번호가 당신에게 발급된 경우에만 가능합니다. 이 페이지가 그리는 그래픽 자체는 정확하고 스캔도 됩니다. 하지만 그 안에 담긴 **번호**는 소매 시스템이 받아들이기 전에 GS1 회원 조직이 당신에게 할당해 준 것이어야 합니다. 등록된 프리픽스로 시작하는 번호를 임의로 지어내면 이미 다른 누군가에게 할당된 번호와 충돌할 위험이 있습니다. 매대, 빈, 자산, 작업 지시서 같은 내부용 라벨은 할당이 필요 없으니 Code 128을 쓰십시오.

EAN-13은 12자리가 필요한가요, 13자리가 필요한가요?

둘 다 가능합니다. 13번째 자리는 앞의 12자리로부터 계산되는 체크 디지트이므로, 둘 중 어느 쪽을 입력해도 됩니다. 12자리를 입력하면 체크 디지트가 붙여져 표시되고, 13자리를 입력하면 검증되어 맞지 않을 경우 올바른 자리 값을 알려 드립니다.

690으로 시작하는 바코드는 중국산이라는 뜻인가요?

아닙니다. 690–699와 680–681은 GS1 China가 관리하는 프리픽스 구간이고, 489는 홍콩, 471은 대만, 958은 마카오입니다. 하지만 GS1은 회원 기업이 세계 어디서든 제조할 수 있고 원하는 조직에서 프리픽스를 발급받을 수 있다고 명시하고 있습니다. 따라서 프리픽스가 가리키는 것은 **번호를 발급한 주체**이지, 상품의 원산지가 아닙니다.

바코드가 화면에서는 스캔되는데 종이에서는 안 되는 이유는 무엇인가요?

거의 항상 정적 영역이거나 다시 크기 조절된 이미지입니다. 흔한 순서대로 보면: 정적 영역이 라벨 가장자리나 테두리에 잘렸거나, 레이아웃 도구에서 이미지를 다시 크기 조절해 모듈이 더 이상 정수 개의 프린터 도트가 아니게 됐거나, 모듈 폭이 스캐너와 인쇄 해상도에 비해 그냥 너무 작은 경우입니다. 셋 다 인쇄하기 전에 결정되는 문제이며, 이 페이지는 셋 다 보여 드립니다.

1차원 바코드에는 실제로 무엇이 들어 있나

선형 바코드는 하나의 문자열을 런렝스 인코딩(run-length encoding)한 결과입니다. 문자마다 막대와 공백의 고정된 패턴으로 바뀌며, 그 폭은 모듈 단위로 잽니다 — 가장 좁은 막대의 폭을 X로 표기합니다. Code 128은 심볼 하나에 11개 모듈을 씁니다. 아홉 글자짜리 문자열은 134개 모듈 폭이 되는데, 전체가 11 × (문자 수 + 2) + 13이기 때문입니다: 시작 심볼 1개, 체크 심볼 1개, 그리고 13모듈짜리 정지 패턴입니다.

심볼의 일부이면서도 빈 공간처럼 보이는 두 가지가, 손수 만든 바코드가 실패하는 지점입니다. 첫째는 정적 영역(quiet zone), 즉 양쪽의 빈 여백입니다. 스캐너는 이걸로 코드의 경계를 찾으므로, 로고나 표 테두리가 이 안까지 들어오면 코드 전체를 읽을 수 없게 됩니다. 둘째는 소매용 코드 체계의 체크 디지트로, 나머지 숫자로부터 계산되는 한 자리 숫자입니다. 스캐너가 잘못 읽은 결과를 엉뚱한 상품 번호로 내보내는 대신 거부할 수 있게 해 줍니다.

Code 128   text = "HELLO-123"

  symbols = 1 (start) + 9 (data) + 1 (check)   = 11
  modules = 11 × 11 + 13 (stop)                = 134
  X = 3px                                      = 402 px
  + quiet zone 10X + 10X                       = 462 px

이 생성기가 하는 일

체크 디지트 계산 과정을 그대로 보여 드립니다

모든 자릿수와 그 가중치, 가중합, 모듈로 연산 단계를 낱낱이 보여 줍니다. 13자리를 붙여 넣었는데 마지막 자리가 틀렸다면, "유효하지 않음"이라고만 말하는 대신 원래 있어야 할 숫자를 짚어 주고 한 번의 클릭으로 고친 번호를 제시합니다.

정적 영역을 미리보기에 그대로 그려 드립니다

표 안의 숫자로만 그치지 않습니다. 규격이 요구하는 여백을 미리보기에 색으로 칠해 보여 주며, 규격이 비대칭이면 이 여백도 비대칭입니다 — EAN-13은 양쪽 다 10X가 아니라 좌측 11X, 우측 7X를 요구합니다.

프린터 해상도에 맞춘 도트 단위 모듈 폭

203dpi에서 모듈 하나는 0.125mm, 300dpi에서는 0.085mm, 600dpi에서는 0.042mm입니다. 패널은 선택한 모듈 폭을 고른 해상도에서의 밀리미터 값으로 바로 환산해 주므로, 인쇄 크기는 뜻밖의 결과가 아니라 직접 내린 결정이 됩니다.

Code 128 폭과 실제로 선택된 서브셋

서브셋 C에서는 숫자가 두 개씩 심볼 하나로 묶이므로, 8자리 숫자가 79개 모듈이면 되는 것을 문자 단위 인코딩으로는 123개 모듈이 필요합니다 — 35.8% 더 좁습니다. 결과 표시에는 실제로 쓰인 서브셋과 절약된 폭이 함께 나옵니다.

15종 코드 체계, 업로드 없음

EAN-13, EAN-8, UPC-A, UPC-E, ITF-14, Interleaved 2 of 5, Code 128(A/B/C 서브셋 포함), Code 39, Code 93, Codabar, MSI, Pharmacode. 모두 페이지 안의 JavaScript로 그려지며, 어떤 값도 어디로도 전송되지 않습니다.

일괄 생성해 ZIP으로, 실패 이유까지 설명

한 줄에 값 하나씩 붙여 넣으면 SVG나 PNG 파일이 ZIP으로 나옵니다. 검증에 실패한 행은 조용히 버려지지 않습니다 — 이유와 함께 skipped.txt에 담기므로, 100개를 넣어 97개만 나와도 어느 세 개가 왜 빠졌는지 알 수 있습니다.

같은 바코드를 만드는 다른 방법

bwip-js

npx bwip-js --bcid=ean13 --text=9780306406157 --scale=3 out.png

BWIPP 기반 엔진 중 코드 체계 지원 범위가 단연 가장 넓은 축에 속하며 — 2D와 우편용을 포함해 100종 이상을 지원하고 — CLI와 라이브러리 형태로 제공됩니다. 바코드를 빌드 단계에서 생성하거나 이 페이지가 다루지 않는 코드 체계가 필요할 때 고려할 만합니다. paddingleft/paddingright를 넘기지 않으면 정적 영역을 전혀 추가하지 않으며, height의 단위는 픽셀이 아니라 밀리미터라는 점에 유의하십시오.

python-barcode

python -m barcode ean13 9780306406157 -o out.svg

Python 파이프라인 안에서 쓰기 편하며 기본적으로 SVG를 씁니다. EAN/UPC 계열, Code 39, Code 128을 지원합니다. 더 특이한 코드 체계와 GS1 응용 식별자는 범위 밖입니다.

ZXing / zxing-cpp

Java와 C++ 라이브러리, 생성과 판독을 모두 지원

같은 코드베이스에서 쓰기와 읽기를 모두 해야 할 때 흔히 고르는 선택입니다. 더 유명한 쪽은 판독기이며, 생성 쪽은 지원하는 코드 체계 범위가 BWIPP보다 좁습니다.

Excel이나 Word의 바코드 폰트

Code 39나 Code 128 TrueType 폰트를 설치하고 값을 입력

별도 도구가 필요 없어서 인기 있지만, 스캔이 안 되는 라벨의 흔한 원인이기도 합니다. Code 39 폰트는 * 구분자를 직접 넣어야 하고, Code 128 폰트는 체크 문자를 직접 계산해야 하며, 폰트는 문서가 지정한 크기 그대로 렌더링되어 모듈 폭을 제어할 방법이 없습니다.

GS1 회원 조직

기업 프리픽스 신청

생성기가 아니며, 소매 유통에서 코드가 작동해야 한다면 건너뛸 수 없는 단계입니다. 번호는 GS1이 발급하며, 막대를 그리는 쪽은 오히려 쉬운 부분입니다. 창고나 자산용 내부 라벨은 번호 할당이 전혀 필요 없습니다.

실제 계산 예시

EAN-13: 12자리를 입력하면 체크 디지트가 계산됨

978030640615
9780306406157

digit    9  7  8  0  3  0  6  4  0  6  1  5
weight  ×1 ×3 ×1 ×3 ×1 ×3 ×1 ×3 ×1 ×3 ×1 ×3
product  9 21  8  0  3  0  6 12  0 18  1 15

sum = 93,  93 mod 10 = 3,  check = (10 - 3) mod 10 = 7

가중치는 페이로드의 맨 오른쪽 자리부터 3과 1을 번갈아 적용합니다. 교과서는 보통 "홀수 번째, 짝수 번째 자리"라고 설명하는데, 그러면 길이마다 공식이 달라집니다. 오른쪽에서부터 세면 EAN-13의 12자리, UPC-A의 11자리, EAN-8의 7자리를 규칙 하나로 모두 처리할 수 있습니다. 이 번호는 잘 알려진 교과서의 ISBN-13이므로, 답이 맞는지 실제 책과 대조해 확인할 수 있습니다.

체크 디지트가 틀리면 거부 대신 정확히 짚어 줌

9780306406158
The last digit should be 7, not 8.
[ Use 9780306406157 ]

내부 인코더는 이런 번호를 아예 거부합니다 — ean13badCheckDigit을 일으킵니다. 틀린 말은 아니지만 쓸모가 없습니다. 포장에서 옮겨 적은 번호는 구조적으로 잘못됐을 가능성보다 한 자리를 잘못 옮겼을 가능성이 훨씬 크고, 사람이 정말 필요한 건 어느 자리가 틀렸는지뿐입니다. 그래서 검증은 인코더를 호출하기 전에 이루어집니다.

Code 128 서브셋 C는 숫자 폭을 절반으로 줄임

12345678
subset C:  4 symbols  ->  79 modules
subset B:  8 symbols  -> 123 modules

saving: 35.8%

서브셋 C는 심볼 하나에 숫자 두 개를 인코딩합니다. 모듈 수는 11 × 심볼 수 + 35를 따르므로, 심볼 수를 절반으로 줄이면 폭도 거의 절반이 됩니다. 그래서 모두 숫자로 된 내부용 코드는 끝까지 숫자만 유지할 가치가 있습니다 — 글자 하나만 섞여도 전체가 다시 한 문자당 한 심볼로 되돌아가기 때문입니다.

홀수 자릿수는 전환 심볼 하나를 더 소모함

12345
12345    (5 digits)  -> 79 modules
123456   (6 digits)  -> 68 modules
12345678 (8 digits)  -> 79 modules

서브셋 C는 짝이 안 맞는 마지막 숫자를 묶을 수 없으므로, 홀수 길이의 숫자 문자열은 전환 심볼 하나를 추가로 지불합니다. 결론은 상당히 직관에 어긋나며, 번호 체계를 설계하기 전에 알아 둘 가치가 있습니다: 6자리가 5자리보다 더 좁고, 5자리는 8자리와 정확히 같은 폭을 차지합니다. 내부용 숫자 코드를 짝수 자릿수로만 유지하면 더 짧은 바코드를 공짜로 얻습니다.

모듈 폭, 도트, 밀리미터

X = 3 modules px, printer = 203 dpi
1 dot @ 203 dpi = 0.125 mm
X = 3 dot        = 0.375 mm
EAN-13 symbol    = 95 modules
+ quiet 11X + 7X = 113 X  = 42.4 mm

열전사 프린터는 정수 개의 도트만 찍을 수 있습니다. 1×로 내보내 같은 해상도로 인쇄하면 모든 모듈이 정수 개의 도트로 남습니다. 나중에 레이아웃 도구에서 이미지를 확대·축소하면 그렇지 않습니다 — 모듈이 소수점 단위의 도트가 되고, 프린터는 막대마다 따로 반올림하므로 바와 공백의 비율이 어긋나다가 결국 스캐너가 읽지 못하게 됩니다.

바코드 생성 방법

  1. 1

    코드 체계 선택

    소매 상품에는 EAN-13을 씁니다(소포장은 EAN-8, 북미는 UPC-A). 카톤에는 ITF-14를 씁니다. 매대 라벨, 자산 태그, 작업 지시서 같은 내부용은 모두 Code 128을 쓰십시오 — 등록이 필요 없고 숫자를 심볼당 두 자리씩 압축합니다.

  2. 2

    데이터 입력

    EAN-13은 12자리나 13자리, UPC-A는 11자리나 12자리, EAN-8은 7자리나 8자리를 받습니다. 짧은 쪽을 입력하면 체크 디지트가 자동으로 붙습니다. Code 128과 Code 39는 길이 제한 없는 텍스트를 받습니다.

  3. 3

    확대·축소가 아니라 인쇄 크기를 정하십시오

    모듈 폭과 사용할 프린터의 해상도를 고르십시오. 패널에서 그 해상도일 때 모듈 하나가 몇 밀리미터인지 보여 줍니다. 레이아웃 도구에서 내보낸 이미지를 다시 확대·축소하는 것이 스캔을 망치는 주범이므로, 크기는 여기서 정하십시오.

  4. 4

    내보내기

    SVG는 어떤 인쇄 크기에서도 선명하며 라벨 소프트웨어가 선호하는 형식입니다. 2×나 4× PNG는 벡터를 받지 못하는 곳을 위한 것입니다. 일괄 모드는 한 줄에 값 하나씩 받아 ZIP으로 돌려주며, 거부된 행은 이유와 함께 나열됩니다.

그냥 거부하는 대신 설명해 드리는 오류

숫자 하나만 잘못 입력해도 "유효하지 않은 바코드"

마지막 자리가 나머지 12자리와 맞지 않는 13자리 EAN-13은 실제로 가장 흔한 입력입니다. 어느 자리가 맞는지 알려 주면 한 번 보면 끝나지만, 그냥 유효하지 않다고만 하면 별도의 계산기를 찾아가야 합니다.

✗ 오류
9780306406158  ->  유효하지 않은 EAN-13
✓ 정상
9780306406158  ->  마지막 자리는 8이 아니라 7이어야 합니다
                   [ 9780306406157 사용 ]

체크 디지트를 조용히 덧붙이는 도구

12자리를 넣어 13자리가 나오는 건 원하는 동작이 맞지만, 그 사실을 알려 줄 때만 그렇습니다 — 그렇지 않으면 인쇄한 번호와 스프레드시트의 번호가 달라지는데 어느 쪽이 맞는지 아무도 알 수 없습니다.

✗ 오류
입력: 978030640615
출력: 바코드 (13자리, 언급 없음)
✓ 정상
입력: 978030640615
출력: 바코드 + "체크 디지트 7 자동 추가됨"

Code 128에 중국어 텍스트 넣기

인코더는 막지 않습니다. 결과물은 스캔은 되지만 입력한 문자로 디코딩되지 않으며, 바코드는 글자 수에서 예상되는 것보다 눈에 띄게 넓어집니다.

✗ 오류
Code 128 <- 订单  (2자, 134모듈 — ASCII 9자와 동일)
✓ 정상
Code 128 <- ORDER-2026-0042  (ASCII, 폭이 내용과 일치함)

라벨 테두리가 정적 영역을 잠식함

생성기는 기본적으로 여백을 전혀 두지 않습니다. 좁은 라벨 가장자리에 붙이거나 상자 모양 디자인 안에 넣으면, 코드는 스캐너가 위치를 찾는 데 필요한 빈 구간을 잃어버려 아예 읽히지 않습니다.

✗ 오류
|▐▌▐▐▌ ▐▌▐ ▌▐▐▌|   <- 라벨 가장자리가 막대에 닿음
✓ 정상
|    ▐▌▐▐▌ ▐▌▐ ▌▐▐▌    |   <- 좌측 11X, 우측 7X 여백 유지

레이아웃에 맞추려고 내보낸 이미지를 다시 확대·축소

"보기 좋은" 물리적 크기로 조절하면 모듈 하나가 소수점 단위의 프린터 도트가 됩니다. 프린터는 막대마다 따로 반올림하고, 바와 공백의 비율이 어긋나며, 코드는 서서히 나빠집니다 — 이는 책상 위 테스트는 통과하고 현장에서만 실패하므로, 아예 안 되는 것보다 더 나쁩니다.

✗ 오류
1x로 내보낸 뒤 레이아웃 도구에서 38mm로 크기 조절
✓ 정상
300dpi에서 38mm가 되도록 모듈 폭을 설정, 1x로 내보내 100%로 배치

이럴 때 씁니다

라벨 5,000장을 인쇄하기 전 번호 검증
스프레드시트에서 가져온 13자리 숫자는 있는데 마지막 자리가 맞는지 확인할 길이 없습니다. 붙여 넣으면 가중합이 그대로 펼쳐지고, 마지막 자리가 틀렸다면 "유효하지 않음"으로 뭉뚱그리는 대신 정확히 짚어 줍니다.
내부용 매대·빈·자산 라벨
창고 위치, 고정 자산 태그, 작업 지시서 번호는 등록된 번호가 전혀 필요 없습니다. Code 128은 문자와 숫자를 모두 인코딩하고 숫자는 심볼당 두 개씩 묶으므로, 숫자로만 된 위치 코드도 짧고 촘촘하게 유지됩니다.
소매 배송용 카톤 라벨
ITF-14는 상품의 GTIN에서 파생된 14자리 배송 단위 번호를 인코딩합니다. 여기서는 13자리나 14자리를 받으며, 체크 디지트는 EAN-13과 같은 모듈로-10 규칙을 따릅니다.
포장 사진 속 바코드 재현하기
막대 아래 인쇄된 숫자를 읽어 입력하고 비교해 보십시오. 체크 디지트가 검증되므로, 잘못 읽은 숫자가 있다면 계산대가 아니라 여기서 먼저 걸러집니다.
연속된 코드를 한 번에 생성
스프레드시트의 값 한 열을 통째로 복사해 일괄 패널에 붙여 넣고 전체를 SVG로 내려받으십시오. 벡터 파일은 다시 샘플링할 필요 없이 라벨 소프트웨어에 바로 넣을 수 있습니다.

코드 체계마다 인코딩하는 방식

EAN-13 — 13자리, 정적 영역은 좌우 비대칭
페이로드 12자리에 체크 디지트 1자리를 더합니다. 정적 영역은 좌측 11X, 우측 7X입니다. 좌우를 똑같이 맞추면 공간을 낭비하거나 왼쪽 끝이 잘립니다. 사람이 읽는 숫자는 규격이 정한 배치의 일부이며, 첫 자리는 막대 바깥 왼쪽에 놓입니다 — 일부 생성기처럼 이 글자를 가운데 정렬하면 왼쪽 정적 영역을 조용히 잠식하는 이유가 여기 있습니다.
UPC-A와 UPC-E — 같은 번호, 두 가지 길이
UPC-A는 11자리에 체크 디지트 1자리를 더한 형태로, EAN-13과 같은 모듈로-10 규칙을 씁니다. UPC-A 번호는 앞에 0을 붙인 EAN-13입니다. UPC-E는 소포장을 위한 6자리 압축 형식으로, 다른 번호가 아니라 스캐너가 원래의 전체 번호로 복원해 냅니다.
Code 128 — 세 서브셋을 자동으로 선택
서브셋 A는 제어 문자와 대문자를, B는 소문자를 포함한 출력 가능한 ASCII 범위를, C는 심볼 하나당 숫자 두 개를 인코딩합니다. 자동 모드는 가장 짧은 인코딩을 얻기 위해 이들 사이를 전환하므로, 결과 표시에는 최종적으로 어느 서브셋에 안착했는지 나옵니다: 짝수 길이 숫자는 C, 홀수 길이라 전환이 강제됐다면 CB, 숫자가 아닌 문자가 하나라도 있으면 B입니다.
Code 128에는 한중일 문자를 담을 수 없음
문자 집합이 Latin-1에서 끝납니다. 한중일 문자를 인코더에 넣어도 오류는 나지 않습니다 — 조용히 더 넓은 바코드를 만들어 내는데, 그 안에 담긴 내용은 더 이상 입력한 그대로가 아닙니다(한자 한 글자가 ASCII 다섯 글자만 한 심볼 폭을 차지합니다). 실패가 조용히 일어나므로, 이 페이지는 인쇄한 뒤에야 잘못을 발견하게 되는 바코드를 그리는 대신 이런 입력을 미리 거부합니다.
Code 39와 Code 93 — 자체 검증, 등록 불필요
Code 39는 숫자, 대문자, 기호 7종을 인코딩하며 체크 문자가 필요 없고, 지금까지 나온 거의 모든 스캐너가 읽을 수 있습니다. 대신 폭이 넓어서 문자당 약 13개 모듈을 씁니다. Code 93은 더 조밀하며 필수 체크 문자 2개가 추가됩니다. 둘 다 산업용·군용 라벨에서 여전히 흔히 쓰입니다.
ITF-14와 Interleaved 2 of 5 — 숫자를 쌍으로 인코딩
Interleaved 2 of 5는 숫자를 쌍으로 인코딩합니다 — 하나는 막대에, 다음 하나는 공백에 담습니다. 그래서 짝수 개만 받아들이며, 홀수 길이 값에는 앞에 0이 붙어 인코딩되는 번호 자체가 바뀝니다. ITF-14는 14자리로 고정된 카톤용 형식이며, 보통 베어러 바(bearer bar)라는 두꺼운 테두리와 함께 인쇄됩니다. 이 테두리는 가장자리가 일부 손상됐을 때 더 짧은 코드로 잘못 읽히는 것을 막아 줍니다.

실제로 스캔되는 바코드 만드는 법

인쇄 크기는 여기서 정하고, 이후에는 이미지를 절대 다시 조절하지 마십시오
외관 패널에서 모듈 폭과 해상도를 정하고 1×로 내보내십시오. Word, Illustrator, 라벨 디자이너에서 이미지 모서리를 드래그하면 모듈이 소수점 단위의 프린터 도트로 다시 샘플링되며, 고르지 않은 막대는 화면에서는 스캔되는데 종이에서는 안 되는 가장 흔한 원인입니다.
정적 영역은 정말로 비워 두십시오
미리보기의 색칠된 띠는 심볼의 일부입니다. 그 안에는 아무것도 있으면 안 됩니다 — 테두리도, 로고도, 인접한 글자도, 라벨의 가장자리도 안 됩니다. 라벨이 좁아서 그만한 여백을 감당하지 못한다면, 잘라내지 말고 모듈 폭을 줄이십시오.
인쇄할 것이라면 SVG를 우선하십시오
벡터 출력은 자체 해상도가 없으므로, 프린터 드라이버가 자기 장치 해상도에서 막대를 한 번만 래스터화합니다. PNG는 이미 픽셀 격자를 확정한 상태라, 그 격자가 프린터와 맞지 않으면 막대가 다시 샘플링됩니다.
내부용 숫자 코드는 짝수 자릿수로 유지하십시오
Code 128은 숫자를 심볼당 두 개씩 묶습니다. 홀수 개면 전환 심볼을 하나 더 지불하므로, 5자리 코드가 6자리보다 오히려 더 넓어집니다. 번호 체계를 처음부터 설계하는 중이라면, 이건 공짜로 얻는 폭입니다.
실제로 쓸 스캐너로 테스트하십시오
실제 프린터로, 실제 크기로, 실제 용지에 라벨 한 장을 인쇄하고 실제 장비로 스캔해 보십시오. 휴대폰 카메라 앱은 고정된 거리의 레이저 스캐너보다 훨씬 관대하며, 열전사 용지와 리본 조합에 따라 잉크가 번지는 정도도 다릅니다.

자주 묻는 질문

여기서 생성한 바코드를 매장 상품에 쓸 수 있나요?
그래픽 자체는 유효하고 스캔도 됩니다. 하지만 소매용 바코드는 그 안에 인코딩된 번호가 당신에게 할당된 경우에만 쓸 수 있습니다. 번호는 GS1 회원 조직이 발급합니다 — 중국 본토는 GS1 China, 다른 시장에는 각각 대응하는 기관이 있습니다. 이 도구는 막대를 그릴 뿐 번호를 배정하지 않으며, 어떤 온라인 생성기도 그럴 수 없습니다. 라벨이 자체 창고, 매대, 고정 자산용이라면 할당이 전혀 필요 없으므로 Code 128이 알맞은 선택입니다.
EAN-13의 체크 디지트는 어떻게 계산하나요?
12자리 숫자를 놓고, 맨 오른쪽부터 3과 1을 번갈아 곱합니다. 그 곱을 모두 더하십시오. 체크 디지트는 그 합을 다음 10의 배수로 만들어 주는 값입니다 — 공식으로는 (10 - sum mod 10) mod 10입니다. 978030640615의 경우 합이 93이므로 체크 디지트는 7입니다. 이 페이지는 입력란 아래에 전체 계산 과정을 펼쳐 보여 줍니다. 가중치를 오른쪽부터 세면 길이가 상관없어지므로, 같은 규칙이 UPC-A의 11자리, EAN-8의 7자리, ITF-14의 13자리에도 그대로 적용됩니다.
690이나 489 같은 프리픽스는 무엇을 알려 주나요?
번호를 발급한 GS1 회원 조직이 무엇인지 알려 줍니다. 690–699와 680–681은 GS1 China가, 489는 GS1 Hong Kong이, 471은 GS1 Taiwan이, 958은 GS1 Macau가 관리하며, 978–979는 ISBN 전용으로 예약되어 있습니다. 제조국을 알려 주는 것은 아닙니다: GS1 자신의 공식 입장은 회원 기업이 어디서든 제조할 수 있고 원하는 조직에서 프리픽스를 발급받을 수 있다는 것입니다. "690은 중국산을 뜻한다"는 널리 퍼진 주장은 바로 이 이유로 여러 팩트체크 기관이 검토 후 사실이 아니라고 판정했습니다.
어떤 코드 체계를 골라야 하나요?
상품이 소매로 판매된다면 선택은 이미 정해져 있습니다: EAN-13, 포장이 너무 작으면 EAN-8, 북미라면 UPC-A이고 배송 카톤에는 ITF-14를 씁니다. 내부용이라면 무엇이든 Code 128을 쓰십시오 — 문자와 숫자를 모두 받고, 등록이 필요 없으며, 숫자 데이터는 심볼당 두 자리로 압축합니다. Code 39는 아주 오래된 스캐너를 상대해야 할 때만 고려할 가치가 있습니다. 같은 내용이라도 약 40% 더 넓어지기 때문입니다.
왜 제 5자리 Code 128이 6자리보다 더 넓은가요?
서브셋 C는 심볼 하나에 숫자 두 개를 채워 넣는데 홀수로 남은 마지막 숫자는 짝지을 수 없어서, 홀수 길이의 숫자 문자열은 서브셋 전환 심볼을 하나 더 지불하기 때문입니다. 5자리는 79개 모듈, 6자리는 68개 모듈이 되며, 5자리는 마침 8자리와 폭이 정확히 같습니다. 아직 번호 체계를 설계하는 중이라면, 코드를 짝수 자릿수로 만드는 데는 아무 비용도 들지 않으면서 더 좁은 라벨을 얻을 수 있습니다.
정적 영역이란 무엇이고 얼마나 필요한가요?
막대 양쪽의 빈 여백으로, 모듈(X) 단위로 잽니다. 스캐너는 이 빈 구간으로 코드가 시작되는 지점을 찾으므로, 장식이 아니라 심볼의 일부입니다. EAN-13은 좌측 11X, 우측 7X를 요구합니다 — 비대칭이라서, 양쪽에 같은 여백을 적용하는 생성기가 여기서 걸립니다. UPC-A는 양쪽 각 9X, EAN-8은 7X, Code 128과 Code 39, ITF-14는 최소 10X를 요구합니다. 이 페이지에서는 필요한 여백을 미리보기에 색으로 표시하므로 라벨에 그만한 공간이 있는지 바로 확인할 수 있습니다.
바코드에 중국어 문자를 넣을 수 있나요?
일반적인 종류의 1차원 바코드로는 안 됩니다. Code 128은 Latin-1에서 끝나고, Code 39는 그보다도 좁습니다. 더 나쁜 건 대부분의 인코더가 한중일 입력을 거부하지 않는다는 점입니다 — 스캔은 되지만 입력한 것과 다른 내용으로 디코딩되고, 글자 수로 예상되는 것보다 눈에 띄게 넓은 바코드를 만들어 냅니다. 이 페이지는 대신 그런 입력을 차단합니다. 스캔 가능한 심볼에 정말로 중국어 텍스트를 담아야 한다면 QR 코드 생성기를 쓰십시오 — QR에는 전용 간지(Kanji) 모드가 있어 이런 제한이 없습니다.
SVG와 PNG 중 무엇을 골라야 하나요?
인쇄할 것이라면 SVG입니다. 자체 해상도가 없으므로 프린터가 고유 해상도에서 막대를 한 번만 래스터화하고, 모든 모듈이 정수 개의 도트에 정확히 맞습니다. PNG는 이미 픽셀 격자를 확정한 상태라, 그 격자가 프린터와 맞지 않으면 막대가 다시 샘플링되어 바와 공백의 비율이 어긋납니다. 벡터를 받지 않는 곳에서만 PNG를 쓰고, 여유 해상도를 남기도록 2×나 4×로 내보내십시오.
바코드를 한꺼번에 많이 생성하려면 어떻게 하나요?
일괄 패널을 열고 한 줄에 값 하나씩 붙여 넣으십시오 — 스프레드시트에서 열 하나를 그대로 복사해 붙여도 됩니다 — SVG나 PNG를 고르면 각 값의 이름을 딴 ZIP을 받게 됩니다. 검증에 실패한 행은 조용히 건너뛰지 않습니다: 이유와 함께 skipped.txt에 모이므로, 100개를 넣어 97개만 나와도 어느 세 개가 왜 실패했는지 알 수 있습니다. 모든 처리가 브라우저 안에서 이루어지므로, 일괄 처리량의 한계는 서버 할당량이 아니라 사용자의 기기입니다.
인쇄 해상도는 얼마로 설정해야 하나요?
실제로 쓰는 프린터의 해상도 그대로입니다 — 여기서 해상도를 고르는 이유는 페이지가 모듈 하나가 몇 밀리미터인지 알려 줄 수 있기 때문입니다. 흔한 열전사 해상도인 203dpi에서는 도트 하나가 0.125mm이므로, 3도트짜리 모듈은 0.375mm입니다. 300dpi에서는 도트 하나가 0.085mm, 600dpi에서는 0.042mm입니다. 해상도가 높을수록 더 작은 모듈을 쓸 수 있어 라벨이 작을 때 중요하지만, 크기 자체가 잘못된 코드를 더 잘 스캔되게 만들어 주지는 않습니다.
이 페이지가 이미지 속 바코드를 읽을 수도 있나요?
아니요 — 생성만 합니다. 사진에서 인쇄된 1차원 바코드를 읽어 내는 것은 다른 문제이며 다른 도구가 필요합니다. 이 사이트의 다른 곳에 있는 QR 디코더는 QR 코드만 처리하며 EAN-13이나 Code 128은 디코딩하지 않습니다. 이 페이지는 번호가 어떤 상품에 해당하는지 조회할 수도 없습니다 — 그러려면 GS1 상품 데이터베이스가 필요합니다.
무언가가 업로드되나요?
아니요. 인코더는 페이지에 로드되는 JavaScript 모듈이며, 일괄 처리 전체와 그 ZIP을 포함해 모든 바코드가 사용자 자신의 기기에서 만들어집니다. 입력한 어떤 내용도 어디로도 전송되지 않고, URL에 기록되지 않으며, 탭을 닫은 뒤에도 남지 않습니다 — 외관 설정(모듈 폭, 바 높이, 해상도)만 다시 설정할 필요가 없도록 로컬에 저장됩니다.

아스키코드표와 ASCII 변환기

인코딩 & 포매팅

ASCII 128자 전체 코드표. 10진수, 16진수, 8진수, 2진수 대조와 문자↔ASCII 코드 양방향 변환. 제어문자는 이스케이프와 캐럿 표기까지 정리한 온라인 도구.

Base64 디코더 · 인코더 (Base64 Decoder & Encoder)

인코딩 & 포매팅

Base64를 온라인에서 무료로 인코딩하고 디코딩합니다. UTF-8과 이모지를 완벽 지원하는 실시간 변환으로, 100% 브라우저에서 처리되어 회원 가입이 필요 없습니다.

Base64 이미지 변환기 (온라인)

인코딩 & 포매팅

Base64 문자열이나 데이터 URI를 온라인 브라우저에서 이미지로 디코딩합니다. 미리보고, 치수와 MIME을 읽은 뒤 PNG, JPG, GIF, SVG로 다운로드하세요. 업로드 없음.

CSV to JSON 변환기 (CSV to JSON Converter)

인코딩 & 포매팅

브라우저에서 CSV를 JSON으로 변환합니다. RFC 4180, 타입 추론, 헤더 행, 큰 정수 안전 처리. 100% 비공개, 업로드 없음.

인코딩 변환과 한글 깨짐 복구

인코딩 & 포매팅

깨진 문자를 붙여넣으면 원문을 되살립니다. UTF-8, EUC-KR, GBK, Big5 조합을 모두 시도하고 왕복 검증을 통과한 경로를 표시합니다. 브라우저 안에서만 처리됩니다.

.env을 JSON으로 변환하는 도구

인코딩 & 포매팅

.env 파일을 붙여넣으면 즉시 JSON으로 변환됩니다. 데이터베이스 비밀번호, API 키, 토큰이 브라우저를 절대 벗어나지 않는 100% 비공개 무료 온라인 dotenv 파서입니다.