MOM.SOFT

MOMSOFT  /  가이드

Guide

QR 코드 만들기: 한 번에 스캔되는 코드의 조건

QR 코드는 디자인이 아니라 규격입니다. 오류정정 레벨, 모듈 크기, 여백, 명암 대비라는 네 가지 변수만 이해하면 인쇄물에서 스캔이 실패하는 일은 거의 사라집니다.

프로젝트 문의하기 →

QR 코드는 그림이 아니라 규격입니다

QR 코드는 1994년 일본 덴소웨이브가 개발한 2차원 바코드이며, 지금은 ISO/IEC 18004 국제 표준으로 관리됩니다. 겉보기에는 흑백 점을 무작위로 뿌려 놓은 것 같지만, 실제로는 정해진 자리에 정해진 정보가 들어가는 구조물입니다. 이 구조를 모른 채 만들면 "예쁘게 나왔는데 스캔이 안 되는" 코드가 나옵니다.

QR 코드의 최소 단위는 모듈, 즉 정사각형 점 하나입니다. 버전 1은 21×21 모듈이고 버전이 하나 올라갈 때마다 가로·세로가 4모듈씩 커져 최대 버전 40은 177×177 모듈이 됩니다. 담을 데이터가 늘어나면 버전이 자동으로 올라가는데, 인쇄 면적이 고정되어 있다면 모듈 하나의 물리적 크기는 그만큼 작아집니다. 스캔 실패의 근본 원인은 대부분 여기서 시작됩니다.

절대 건드리면 안 되는 고정 영역

로고를 얹거나 배경 이미지를 깔 때 위 영역을 침범하면 오류정정으로도 복구되지 않습니다. 특히 파인더 패턴 세 개 중 하나라도 가려지면 리더는 코드의 존재 자체를 인식하지 못합니다.

오류정정 레벨 L·M·Q·H, 무엇을 고를까

QR 코드는 리드-솔로몬 오류정정을 사용합니다. 코드 일부가 긁히거나 가려져도 남은 데이터로 원본을 복원하는 방식이며, 복원 가능한 데이터 비율에 따라 네 단계로 나뉩니다.

L (약 7%)

여유가 가장 적은 대신 같은 내용을 가장 성기게 담습니다. 화면 전용이거나 데이터가 길어 모듈 수를 줄여야 할 때만 씁니다.

M (약 15%)

일반적인 기본값입니다. 깨끗한 인쇄물, 웹 페이지, 슬라이드 등 훼손 가능성이 낮은 환경에 적합합니다.

Q (약 25%)

중앙에 작은 로고를 넣거나 스티커·라벨처럼 마모가 예상되는 용도에 씁니다.

H (약 30%)

야외 포스터, 현수막, 물기·먼지·긁힘이 있는 현장용. 로고 삽입이 전제라면 사실상 필수입니다.

여기서 놓치기 쉬운 것이 대가입니다. 오류정정 레벨을 올리면 복원 여유는 커지지만 여분 데이터가 함께 늘어나, 같은 내용이라도 버전이 올라가고 코드가 촘촘해집니다. 인쇄 크기가 고정된 상태에서 무작정 H로 올리면 모듈 하나가 너무 작아져 오히려 스캔이 불리해질 수 있습니다. "훼손 위험이 크면 H, 인쇄 면적이 작고 환경이 깨끗하면 M"이 현실적인 판단 기준입니다.

URL이 길수록 코드는 촘촘해집니다

QR 코드는 내용에 따라 인코딩 모드를 달리 씁니다. 숫자 모드는 3자리를 10비트에, 영숫자 모드는 2자를 11비트에(문자당 5.5비트) 담고, 바이트 모드는 문자당 8비트를 씁니다. 한글은 UTF-8 바이트 모드로 들어가 글자당 3바이트를 차지하므로, 같은 글자 수라도 한글 텍스트는 영문보다 코드가 훨씬 빽빽해집니다.

영숫자 모드가 허용하는 문자는 숫자, 대문자 알파벳, 그리고 공백과 $ % * + - . / : 뿐입니다. 소문자가 하나라도 섞이면 그 구간은 바이트 모드로 처리됩니다. 그래서 HTTPS://EXAMPLE.COM 처럼 대문자로 적은 URL이 소문자 URL보다 더 성긴 코드로 나옵니다. 스킴과 도메인은 대소문자를 구분하지 않으므로 안전한 최적화입니다. 다만 경로와 쿼리 문자열은 대소문자를 구분하는 서버가 많으니, 도메인만 있거나 경로가 없는 주소일 때만 쓰는 요령으로 삼는 편이 좋습니다.

감을 잡아 두면 좋은 용량

오류정정 M 기준으로 버전 1(21×21)은 바이트 모드 약 14자, 버전 3(29×29)은 약 42자, 버전 5(37×37)는 약 84자를 담습니다. 이론적 최대치는 버전 40에 L 레벨을 썼을 때 숫자 7,089자, 바이트 2,953자입니다. 실무에서 문제가 되는 지점은 명확합니다. 캠페인 추적용 UTM 파라미터를 붙이면 URL이 100자를 쉽게 넘고, 그만큼 버전이 올라가면서 명함처럼 작은 인쇄물에서는 모듈이 사람 눈으로도 구분이 어려울 만큼 작아집니다.

명함에 vCard 전체를 통째로 넣는 것도 같은 이유로 권하지 않습니다. 이름·직함·회사·전화·이메일·주소를 모두 넣으면 수백 바이트를 쉽게 넘겨 버전이 크게 올라가고, 명함 크기 안에서는 감당하기 어려울 만큼 촘촘한 코드가 됩니다. 연락처 페이지 링크 하나만 넣는 편이 스캔 성공률과 수정 가능성 양쪽에서 유리합니다.

크기와 여백: 2×2cm와 4모듈 규칙

인쇄용 QR 코드의 실질적인 하한선은 보통 가로세로 2cm로 봅니다. 이보다 작아지면 데이터가 짧은 코드가 아닌 한 모듈 크기가 카메라 해상 한계에 가까워집니다. 그리고 코드 사방에는 모듈 4개 폭의 여백(콰이어트 존)이 규격상 반드시 필요합니다. 2cm 코드가 버전 3(29모듈)이라면 모듈 하나가 약 0.69mm이므로 여백만 사방 2.8mm, 즉 실제로 확보해야 할 자리는 2.6cm 안팎이 됩니다. 여백을 배경색으로 채우는 것은 괜찮지만, 텍스트나 테두리 선이 들어오면 인식률이 급격히 떨어집니다.

스캔 거리 대비 크기의 경험칙으로 10:1이 널리 쓰입니다. 2m 거리에서 읽히게 하려면 코드 한 변이 최소 20cm, 5m라면 50cm는 되어야 한다는 계산입니다. 지하철 광고나 현수막처럼 거리가 먼 매체는 이 계산부터 하고 레이아웃을 잡아야 합니다.

파일 포맷과 인쇄 품질

색상 규칙: 어두운 코드, 밝은 배경

규격의 대전제는 데이터 모듈이 어둡고 배경이 밝다는 것입니다. 색을 입히더라도 이 명암 관계는 유지해야 합니다. 흰 배경에 노란색이나 연한 회색 모듈을 쓰면 카메라 센서에서 배경과 사실상 같은 밝기로 뭉개집니다. 색을 쓰고 싶다면 명도가 충분히 낮은 색, 예를 들어 진한 남색이나 짙은 자주 계열을 배경 흰색과 조합하는 식이 안전합니다.

정적 QR과 동적 QR의 차이

정적 QR은 목적지 주소나 텍스트가 코드 안에 그대로 인코딩됩니다. 외부 서비스에 의존하지 않으므로 만료되지 않고, 인터넷 연결 없이도 내용을 읽을 수 있습니다. 대신 인쇄한 뒤에는 내용을 바꿀 수 없고, 스캔 횟수 같은 통계도 남지 않습니다.

동적 QR은 짧은 리다이렉트 주소만 코드에 넣고, 실제 목적지는 서버 설정으로 바꿉니다. 목적지를 나중에 변경할 수 있고 스캔 수·시간대·기기 통계를 볼 수 있으며, 인코딩되는 문자열이 짧아 코드도 성기게 나옵니다. 다만 그 리다이렉트 서비스가 멈추면 이미 인쇄한 코드가 전부 죽는다는 치명적인 종속성이 생깁니다. 무료 단축 서비스나 구독형 QR 서비스에 대량 인쇄물의 운명을 맡기는 것은 위험합니다. 가능하다면 자사 도메인에 짧은 경로를 만들어 직접 리다이렉트를 운영하는 방식이 가장 안전합니다.

보안 관점도 짚어둘 필요가 있습니다. 와이파이 접속 정보(WIFI:T:WPA;S:이름;P:비밀번호;;)나 개인 연락처를 정적 QR로 만들면, 그 코드를 촬영한 누구나 평문으로 디코딩할 수 있습니다. 게스트 와이파이처럼 공개해도 되는 정보에만 사용하고, 사무실 내부망 비밀번호를 벽에 붙여두는 식은 피해야 합니다.

매체별 실무 팁

명함

여백까지 2.5cm 이상을 확보하기 어렵다면 vCard 대신 짧은 링크만 넣습니다. 재단 오차를 감안해 가장자리에서 5mm 이상 띄우고, 뒷면 여백에 배치해 앞면 정보와 겹치지 않게 합니다.

포스터·현수막

10:1 규칙으로 크기를 먼저 계산합니다. 코드 옆에 "메뉴 보기", "설명회 신청" 같은 한 줄 안내를 붙여 무엇이 열리는지 알려주면 스캔으로 이어질 가능성이 높아집니다. 눈높이보다 지나치게 높은 위치는 피합니다.

메뉴판·테이블

무광 재질에 인쇄하고 스탠드로 세워 두면 조명 반사와 촬영 각도 문제가 동시에 줄어듭니다. 조도가 낮은 매장은 코드를 한 단계 크게 뽑는 편이 안전합니다.

유리창·곡면

매장 안쪽에서 붙이면 바깥에서는 좌우가 뒤집혀 보이고, 대부분의 리더는 거울상 코드를 읽지 못합니다. 바깥면에 붙이거나 반전 출력본을 씁니다. 컵·병 같은 곡면은 코드 폭이 좁고 데이터가 짧을수록 유리하며, 곡률이 심할수록 왜곡이 커지므로 실물 테스트가 필수입니다.

스캔이 안 될 때 점검할 항목

스마트폰별 기본 인식 방법

iPhone은 iOS 11부터 기본 카메라 앱으로 QR을 인식하며, 설정에서 제어 센터에 코드 스캐너를 추가해 두면 사진 촬영 없이 바로 읽을 수 있습니다. 안드로이드는 최근 기종 대부분이 기본 카메라 앱이나 구글 렌즈로 인식하지만, 제조사와 OS 버전에 따라 동작이 다릅니다. 카메라 앱에서 QR 인식 옵션이 꺼져 있는 경우도 있으니, 테스트가 실패하면 코드를 의심하기 전에 카메라 설정부터 확인하는 편이 좋습니다.

만드는 순서 정리

첫째, 목적지 URL을 확정하고 최대한 짧게 다듬습니다. 둘째, 사용 환경에 맞춰 오류정정 레벨을 정합니다(깨끗한 인쇄물은 M, 로고나 야외 노출이 있으면 H). 셋째, 인쇄용이면 SVG로, 화면용이면 충분한 해상도의 PNG로 내보냅니다. 넷째, 실제 크기로 시험 인쇄한 뒤 iPhone과 안드로이드 각각으로, 밝은 곳과 어두운 곳에서, 30cm와 실제 사용 거리에서 최소 네 번은 읽어 봅니다. 이 시험 인쇄 한 장이 수천 장의 재인쇄를 막아 줍니다.

브라우저에서 바로 만들고 싶다면 Utilo QR 코드 생성기처럼 오류정정 레벨과 여백, 내보내기 포맷을 직접 지정할 수 있는 도구를 쓰면 위 기준을 그대로 적용하기 편합니다. 어떤 도구를 쓰든 확인할 것은 같습니다. 오류정정 레벨을 고를 수 있는가, 여백이 유지되는가, 벡터로 내보낼 수 있는가, 그리고 만든 코드가 실제 인쇄물에서 읽히는가입니다.

자주 묻는 질문

QR 코드는 유효기간이 있나요?

정적 QR 코드는 데이터가 코드 자체에 인코딩되어 있어 유효기간이 없습니다. 종이가 남아 있는 한 계속 읽힙니다. 반면 동적 QR 코드는 리다이렉트 서버를 거치므로 해당 서비스가 종료되거나 구독이 만료되면 코드가 동작하지 않습니다. 대량 인쇄물이라면 자사 도메인 리다이렉트를 직접 운영하는 편이 안전합니다.

QR 코드 최소 크기는 얼마인가요?

인쇄물 기준으로 가로세로 2cm가 실질적인 하한선이며, 사방에 모듈 4개 폭의 여백이 추가로 필요합니다. 여백을 포함하면 실제로 2.5cm 안팎의 자리를 확보해야 합니다. 멀리서 스캔하는 포스터나 현수막은 스캔 거리의 10분의 1 이상, 즉 2m 거리라면 한 변 20cm 이상으로 잡습니다.

가운데에 로고를 넣어도 스캔이 되나요?

오류정정 레벨을 H(약 30% 복원)로 설정하면 대체로 가능합니다. 다만 로고가 코드 전체 면적의 10~15%를 넘지 않게 하고, 세 모서리의 파인더 패턴과 그 주변은 절대 가리지 않아야 합니다. 로고 뒤에 흰 여백을 두면 인식률이 올라가며, 배포 전에 반드시 실제 크기로 시험 인쇄해 테스트해야 합니다.

QR 코드 색상을 브랜드 컬러로 바꿔도 되나요?

어두운 모듈과 밝은 배경이라는 명암 관계만 지키면 가능합니다. 진한 남색이나 짙은 자주처럼 명도가 충분히 낮은 색을 흰 배경과 조합하는 것이 안전합니다. 노란색·연회색처럼 밝은 색이나 색을 반전한 코드는 실패 위험이 크고, 빨강 계열은 적색광을 쓰는 산업용 스캐너에서 인식되지 않을 수 있습니다.

관련 도구

이 글에서 설명한 작업은 QR 코드 생성기에서 설치 없이 바로 처리할 수 있습니다. 파일이 서버로 올라가지 않고 브라우저 안에서 변환됩니다.

기술이 필요한 일이 있으신가요

맘소프트는 소프트웨어 개발과 기술 자문을 제공합니다. 편하게 문의해 주세요.

[email protected]