QR코드는 30%가 가려져도 읽힙니다 — 로고를 넣으면 코드가 커지는 이유
가운데에 회사 로고가 박힌 QR코드를 본 적 있을 겁니다. 분명 코드의 일부가 가려졌는데도 카메라를 대면 잘 읽힙니다. 심지어 모서리가 찢어지거나 스티커가 붙은 QR도 인식되는 경우가 있습니다.
운이 좋아서가 아닙니다. QR코드는 처음부터 일부가 없어질 것을 가정하고 설계된 형식입니다. 그리고 그 여유분에는 정확한 값이 매겨져 있습니다.

네 등급, 그리고 30%
QR코드에는 오류 정정 등급이 네 가지 있습니다. 데이터를 넣을 때 복원용 정보를 함께 넣어두는데, 얼마나 넣느냐의 차이입니다.
| 등급 | 복원 가능한 손상 | 주로 쓰는 곳 |
|---|---|---|
| L (Low) | 약 7% | 깨끗한 화면에 띄우는 경우 |
| M (Medium) | 약 15% | 일반적인 인쇄물 — 기본값 |
| Q (Quartile) | 약 25% | 야외·산업용 |
| H (High) | 약 30% | 로고를 얹거나 험한 환경 |
H 등급이면 코드의 30% 가까이가 사라져도 원래 데이터를 되살립니다. 가운데에 로고를 올려도 읽히는 이유가 이것입니다. 로고가 덮는 면적이 30%를 넘지 않으면 남은 부분만으로 복원이 됩니다.
원리는 흩어 담기입니다. 데이터를 코드 한쪽에 몰아넣지 않고 전체에 잘게 나눠 배치한 뒤 검산용 값을 함께 심어둡니다. 그래서 한 덩어리가 통째로 없어져도 각 조각의 손실은 조금씩이고, 검산용 값으로 빠진 부분을 계산해낼 수 있습니다.
이건 CD나 위성 통신에서 쓰는 방식과 같은 계열입니다. 긁힌 CD가 그래도 재생되고, 잡음 섞인 위성 신호가 복원되는 것과 원리가 같습니다. 지워질 걸 예상하고 미리 계산 가능한 여분을 넣어두는 방식입니다.

세 모서리의 사각형이 하는 일
QR코드를 보면 세 모서리에만 큰 사각형이 있습니다. 네 모서리가 아니라 셋입니다. 여기에 이유가 있습니다.
이 사각형은 카메라에게 "여기가 코드다"라고 알려주는 표식입니다. 셋의 위치를 잡으면 코드의 범위와 기울기, 그리고 방향이 한 번에 정해집니다. 네 개였다면 정사각형이라 어느 쪽이 위인지 알 수 없지만, 하나가 비어 있으면 그 빈 모서리가 오른쪽 아래라는 게 확정됩니다.
덕분에 QR코드는 거꾸로 들어도, 비스듬히 찍어도 읽힙니다. 바코드가 방향을 맞춰야 읽히는 것과 대비되는 지점이고, QR이 포스터·명함·상품 포장처럼 방향이 제각각인 곳에 퍼진 이유이기도 합니다.
여유를 얻으면 자리를 내준다
공짜는 아닙니다. 복원용 정보도 결국 칸을 차지하기 때문입니다. 꿀도구 QR 생성기가 쓰는 것과 같은 라이브러리로 직접 만들어 재봤습니다. 같은 크기(한 변 37칸)에 넣을 수 있는 글자 수입니다.
| 등급 | 담을 수 있는 글자 | L 대비 |
|---|---|---|
| L | 106자 | 100% |
| M | 84자 | 79% |
| Q | 60자 | 57% |
| H | 44자 | 42% |
H로 올리면 같은 크기에 L의 절반도 못 담습니다. 반대로 말하면 같은 내용을 H로 만들면 코드 자체가 커집니다.
실제로 재보면 이렇습니다. 꿀도구의 QR 생성기는 로고가 없으면 M, 로고를 올리면 자동으로 H로 바꿉니다. 로고가 코드를 가릴 걸 알기 때문에 미리 여유를 확보하는 것입니다.
- 주소 32자를 M으로 만들면 한 변 29칸
- 같은 주소를 H로 만들면 한 변 33칸
- 칸 수로는 841개에서 1,089개로 29% 증가
명함이나 전단처럼 인쇄 공간이 정해진 경우, 이 4칸 차이가 같은 물리적 크기 안에서 칸 하나가 더 작아진다는 뜻이 됩니다. 칸이 작아지면 인쇄 번짐이나 카메라 초점에 더 민감해집니다. 로고를 넣으려면 코드를 조금 크게 뽑아야 하는 이유입니다.

주소가 길면 코드가 빽빽해진다
담는 내용이 길어져도 같은 일이 벌어집니다. 마케팅 링크에 흔히 붙이는 추적 파라미터가 대표적입니다.
| 넣는 내용 | 길이 | M 등급 | H 등급 |
|---|---|---|---|
| 짧은 주소 | 14자 | 21칸 | 25칸 |
| 일반 페이지 주소 | 32자 | 29칸 | 33칸 |
| 와이파이 정보 | 43자 | 29칸 | 37칸 |
| 추적 파라미터 붙은 주소 | 97자 | 41칸 | 53칸 |
추적 파라미터를 붙이면 H 등급에서 한 변이 25칸에서 53칸으로 늘어납니다. 같은 크기로 인쇄하면 칸 하나의 크기가 절반 이하가 됩니다. 스마트폰 카메라가 그만큼 가까이 가야 읽힙니다.
그래서 인쇄물용 QR은 짧은 주소를 쓰는 게 유리합니다. 추적이 필요하면 긴 파라미터를 그대로 넣지 말고 단축 주소를 만들어 그쪽에서 통계를 잡는 편이 낫습니다. 코드도 작아지고 인식률도 올라갑니다.
가려도 되는 곳과 절대 안 되는 곳
30%까지 복원된다고 아무 데나 가려도 되는 건 아닙니다. QR코드에는 데이터가 아닌 부분이 있고, 여기는 오류 정정 대상이 아닙니다.
- 세 모서리의 큰 사각형 — 위치를 잡는 표식입니다. 이게 가려지면 카메라가 코드를 코드로 인식조차 못 합니다. 절대 건드리면 안 됩니다
- 테두리 여백 — 코드 주변의 흰 공간도 규격입니다. 배경 이미지에 QR을 바로 얹으면 여백이 사라져 인식이 떨어집니다
- 가운데 — 여기가 상대적으로 안전합니다. 로고를 넣는다면 가운데에, 코드 넓이의 4분의 1을 넘지 않게 두는 편이 무난합니다
여기서 한 가지 주의할 점이 있습니다. 오류 정정이 강력하다는 건 덧붙여도 읽힌다는 뜻이기도 합니다. 실제로 식당이나 주차장의 QR 위에 다른 QR 스티커를 붙여 가짜 결제 페이지로 보내는 수법이 보고됩니다. 스티커가 원본을 완전히 덮으면 오류 정정과 무관하게 스티커 쪽이 읽힙니다.
그래서 QR을 찍은 뒤 열리는 주소를 눈으로 확인하는 습관이 필요합니다. 결제나 로그인이 걸린 QR이라면 특히 그렇습니다. 코드 표면이 들뜨거나 테두리가 어긋나 보이면 붙인 흔적일 수 있으니 쓰지 않는 편이 안전합니다. QR을 배포하는 쪽이라면 코팅을 하거나 인쇄물에 직접 인쇄해 스티커를 덧붙이기 어렵게 만드는 것이 기본 대비입니다.
인쇄 전에는 반드시 실제로 인쇄한 종이를 여러 기기로 찍어보세요. 화면에서 잘 읽히던 코드가 종이에서 안 읽히는 일이 자주 있습니다. 잉크 번짐, 광택 코팅의 반사, 접히는 자리가 겹치면 30%의 여유도 금방 소진됩니다. 특히 코드를 접히는 선 위에 배치하는 건 피하는 게 좋습니다.
로고를 올리면 오류 정정 등급을 자동으로 최고 단계로 바꿔 만들어 드립니다. 색상과 크기도 조정할 수 있습니다.
함께 읽으면 좋은 글
크기 수치는 꿀도구 QR 생성기가 쓰는 것과 같은 라이브러리(qrcode 1.5.4)로 같은 내용을 등급만 바꿔 실제로 생성한 뒤 한 변의 칸 수를 센 값입니다. "담을 수 있는 글자 수"는 한 변 37칸을 넘지 않는 최대 길이를 영문 기준으로 찾은 값이라, 한글이나 특수문자가 섞이면 더 적게 들어갑니다. 등급별 복원율(약 7·15·25·30%)은 QR코드 국제 규격에 정의된 값이며, 실제 인식 여부는 손상 위치·인쇄 품질·카메라 성능에 따라 달라집니다. 로고 크기 기준은 규격이 아니라 실무에서 통용되는 권장선입니다.