웹 접근성을 위한 색상 대비(WCAG) 이해하기

아무리 예쁜 색을 골라도 텍스트가 배경에 묻혀 읽히지 않으면 소용이 없습니다. 색상 대비는 "보기 좋다"의 문제가 아니라 "읽을 수 있다"의 문제이며, 시력이 약하거나 색을 구분하기 어려운 사용자, 햇빛 아래에서 화면을 보는 사용자 모두에게 영향을 줍니다.

명암비란 무엇인가

명암비(contrast ratio)는 두 색의 상대 밝기 차이를 1:1에서 21:1 사이의 비율로 나타낸 값입니다. 흰색 위의 검정 글씨가 최대값인 21:1이고, 두 색이 같으면 1:1입니다. 비율이 높을수록 글자가 또렷하게 보입니다. 핵심은 색조가 아니라 밝기 차이라는 점입니다. 빨강과 초록처럼 색은 전혀 다르지만 밝기가 비슷하면 대비가 낮아 잘 안 읽힙니다.

WCAG 기준 — 4.5:1과 3:1

웹 접근성 지침(WCAG)은 텍스트 가독성에 대해 명확한 기준을 제시합니다.

왜 색조만 보면 안 될까

사람의 눈은 색조보다 밝기에 훨씬 민감합니다. 그래서 명암비 계산은 각 색의 RGB 값을 밝기(상대 휘도)로 환산한 뒤 비교합니다. 연한 회색 배경에 연한 노란 글씨처럼 둘 다 밝으면, 색은 달라도 대비가 부족해 읽기 힘듭니다. 반대로 짙은 남색 배경에 흰 글씨는 색조와 무관하게 대비가 충분합니다.

실전에서 대비를 확보하는 법

실전 예제 — 명암비를 직접 계산해 보기

이 사이트의 링크 색으로 쓰이는 인디고 #4F46E5를 배경으로 하고 흰 텍스트(#FFFFFF)를 얹는다고 가정해 보겠습니다. WCAG 공식은 각 색의 상대 휘도(relative luminance)를 먼저 구합니다.

1단계 — RGB를 상대 휘도로 변환

#4F46E5rgb(79, 70, 229)입니다. 각 채널을 0~1로 정규화한 뒤 감마 보정 공식을 적용하면 R≈0.078, G≈0.061, B≈0.784가 됩니다. 이를 가중합(R×0.2126 + G×0.7152 + B×0.0722)하면 상대 휘도 L ≈ 0.117이 나옵니다. 흰색은 계산 없이 L = 1.0입니다.

2단계 — 명암비 공식 적용

명암비 = (밝은 색 휘도 + 0.05) / (어두운 색 휘도 + 0.05)이므로, (1.0 + 0.05) / (0.117 + 0.05) = 1.05 / 0.167 ≈ 6.3:1입니다.

3단계 — 기준 판정

즉 이 조합은 본문 텍스트에 안전하게 쓸 수 있지만, 더 엄격한 AAA 등급까지 노리려면 배경을 조금 더 어둡게 하거나 글자를 굵게(큰 텍스트 기준으로 전환) 만들어야 합니다.

자주 묻는 질문

매번 이렇게 손으로 계산해야 하나요?
아닙니다. 원리를 알면 충분하고, 실제 작업에서는 온라인 명암비 계산기에 두 색의 HEX 코드만 입력하면 즉시 비율이 나옵니다. 위 계산은 그 결과가 어떻게 나오는지 이해하기 위한 예시입니다.
색각 이상(색맹) 사용자를 위해서는 무엇을 더 신경 써야 하나요?
명암비를 지키는 것과 별개로, 적록색맹처럼 특정 색 조합 자체를 구분하기 어려운 경우가 있습니다. 상태를 색으로만 표시하지 않고 아이콘·텍스트 라벨을 함께 제공하는 것이 안전합니다.
다크 모드에서도 같은 기준(4.5:1)이 적용되나요?
네, WCAG 기준은 라이트·다크 모드를 구분하지 않습니다. 다크 배경에서도 텍스트와 배경의 명암비를 동일하게 4.5:1 이상 확보해야 합니다.
로고나 장식용 텍스트도 명암비 기준을 지켜야 하나요?
WCAG는 로고에 포함된 텍스트와 순수 장식용 텍스트를 예외로 둡니다. 다만 버튼 라벨, 안내 문구처럼 정보를 전달하는 텍스트는 반드시 기준을 지켜야 합니다.
비활성화(disabled) 상태의 흐린 텍스트도 검사 대상인가요?
비활성 상태는 WCAG 예외로 인정되는 경우가 많지만, 사용자가 실제로 읽어야 하는 안내 텍스트라면 가능한 한 기준을 지키는 것이 좋습니다. 흐린 회색 텍스트가 배경과 거의 구분되지 않는 경우가 흔한 실수입니다.

관련 글

배경과 글자 색의 정확한 코드가 필요하다면 색상 추출 도구로 추출해 보세요. 색을 고르는 단계가 궁금하다면 브랜드 팔레트 만드는 법이 도움이 됩니다.