HEX 색상 코드 완벽 정리: #RRGGBB의 원리
#1e90ff 같은 HEX 색상 코드는 16진수 두 자리씩 세 쌍으로 이루어집니다. 각 쌍은 빨강, 초록, 파랑 빛의 양을 00(없음)부터 ff(최대, 255)까지 나타냅니다. 네 번째 쌍을 붙이면 불투명도를 정할 수 있습니다. 80은 약 50%, ff는 완전히 불투명한 상태입니다.
4분 분량
HEX 색상 코드의 원리
화면의 모든 색은 빨강, 초록, 파랑 빛을 섞어 만듭니다. HEX 코드는 각 빛의 세기를 # 기호 뒤에 두 글자씩 씁니다. 빨강이 먼저, 그다음 초록, 마지막으로 파랑입니다. 이것이 #RRGGBB 패턴입니다.
각 글자는 16진수, 즉 16개의 숫자로 세는 방식입니다. 0부터 9까지 쓴 뒤 a(10), b(11), c(12), d(13), e(14), f(15)가 이어집니다. 한 쌍은 00(0)부터 ff(255)까지 256개의 값을 나타내며, 이는 rgb()의 범위와 정확히 같습니다.
한 쌍을 일반 숫자로 바꾸려면 첫 자리에 16을 곱하고 둘째 자리를 더하면 됩니다. 아래는 CSS 색 이름 dodgerblue인 #1e90ff를 네 가지 포맷으로 표시하고, 쌍별로 계산한 것입니다.
| 형식 | 값 |
|---|---|
| HEX | |
| RGB | |
| HSL | |
| OKLCH |
| 쌍 | 채널 | 계산 | 값 |
|---|---|---|---|
| 1e | 빨강 | 1 × 16 + 14 | 30 |
| 90 | 초록 | 9 × 16 + 0 | 144 |
| ff | 파랑 | 15 × 16 + 15 | 255 |
즉 #1e90ff는 rgb(30, 144, 255)입니다. 빨강은 조금, 초록은 꽤 많이, 파랑은 최대로 섞여 밝은 하늘색이 됩니다. 256개의 값을 가진 쌍이 세 개이므로 표현할 수 있는 색은 16,777,216가지입니다.
세 자리와 네 자리 HEX 축약형
모든 쌍의 두 자리가 같으면 각 쌍을 한 번만 써도 됩니다. #ffcc00은 #fc0이 되고, 브라우저가 각 자리를 다시 두 번씩 늘려 읽습니다. #1e90ff는 1e와 90이 같은 숫자의 쌍이 아니라서 축약형이 없습니다.
축약형으로는 1,670만 가지 색 가운데 4,096가지만 쓸 수 있습니다. 네 자리 형식은 같은 방식으로 불투명도를 더하므로 #f008은 #ff000088과 같습니다.
| 축약형 | 전체 | 색 |
|---|---|---|
| #fff | #ffffff | 흰색 |
| #000 | #000000 | 검정 |
| #f00 | #ff0000 | 빨강 |
| #fc0 | #ffcc00 | 따뜻한 노랑 |
| #abc | #aabbcc | 회색빛 파랑 |
| #f008 | #ff000088 | 불투명도 53%의 빨강 |
HEX 투명도: 알파가 있는 여덟 자리 HEX
여덟 자리 코드는 네 번째 쌍으로 알파, 즉 불투명도를 더합니다. 형식은 #RRGGBBAA입니다. 00은 완전히 투명하고 ff는 완전히 불투명합니다. 현재 모든 브라우저가 CSS에서 이 형식과 네 자리 #RGBA 축약형을 지원합니다.
쌍을 구하려면 불투명도에 255를 곱하고, 정수로 반올림한 뒤 16진수로 바꾸면 됩니다. 50%는 127.5이고, 반올림하면 128, 16진수로는 80입니다. 아래는 #1e90ff에 적용한 전체 변환표입니다.
| 불투명도 | 알파 (0–255) | HEX 쌍 | 알파를 적용한 #1e90ff |
|---|---|---|---|
| 100% | 255 | ff | #1e90ffff |
| 95% | 242 | f2 | #1e90fff2 |
| 90% | 230 | e6 | #1e90ffe6 |
| 85% | 217 | d9 | #1e90ffd9 |
| 80% | 204 | cc | #1e90ffcc |
| 75% | 191 | bf | #1e90ffbf |
| 70% | 179 | b3 | #1e90ffb3 |
| 65% | 166 | a6 | #1e90ffa6 |
| 60% | 153 | 99 | #1e90ff99 |
| 55% | 140 | 8c | #1e90ff8c |
| 50% | 128 | 80 | #1e90ff80 |
| 45% | 115 | 73 | #1e90ff73 |
| 40% | 102 | 66 | #1e90ff66 |
| 35% | 89 | 59 | #1e90ff59 |
| 30% | 77 | 4d | #1e90ff4d |
| 25% | 64 | 40 | #1e90ff40 |
| 20% | 51 | 33 | #1e90ff33 |
| 15% | 38 | 26 | #1e90ff26 |
| 10% | 26 | 1a | #1e90ff1a |
| 5% | 13 | 0d | #1e90ff0d |
| 0% | 0 | 00 | #1e90ff00 |
CSS
.overlay {
background: #00000080;
}
.overlay-same {
background: rgb(0 0 0 / 50%);
}주의할 점이 두 가지 있습니다. 첫째, 80은 255 중 128로 정확히 50%가 아니라 50.2%입니다. HEX 알파는 256단계뿐이라 딱 떨어지는 퍼센트 대부분은 근삿값입니다. 둘째, Android는 알파를 맨 앞에 둡니다. Android 색상 리소스의 #801e90ff는 CSS의 #1e90ff80과 같습니다.
HEX 코드를 눈으로 읽는 방법
변환하지 않고도 색을 짐작할 수 있습니다. 각 쌍의 첫 자리를 보세요. 정보가 거의 다 거기에 담겨 있습니다.
| CSS 이름 | HEX | RGB | 읽는 법 |
|---|---|---|---|
| tomato | #ff6347 | 255, 99, 71 | 빨강 최대, 초록과 파랑 약간: 따뜻하고 밝은 빨강 |
| gold | #ffd700 | 255, 215, 0 | 빨강과 초록 높음, 파랑 없음: 노랑 |
| chocolate | #d2691e | 210, 105, 30 | 빨강이 앞서고 초록 절반, 파랑 낮음: 주황빛 갈색 |
| darkturquoise | #00ced1 | 0, 206, 209 | 초록과 파랑 높음, 빨강 없음: 시안 |
| dodgerblue | #1e90ff | 30, 144, 255 | 파랑이 앞서고 초록은 중간: 하늘색 |
| mediumorchid | #ba55d3 | 186, 85, 211 | 빨강과 파랑 높음, 초록 낮음: 보라 |
| teal | #008080 | 0, 128, 128 | 초록과 파랑이 절반: 어두운 시안 |
| navy | #000080 | 0, 0, 128 | 파랑만 절반: 어두운 파랑 |
| slategray | #708090 | 112, 128, 144 | 거의 같고 파랑이 조금 앞섬: 푸른빛 회색 |
- 첫 자리가 가장 큰 채널이 주된 빛입니다. #d2691e는 빨강이 d, 초록이 6, 파랑이 1이므로 주황빛 갈색입니다.
- 높은 채널 두 개는 섞입니다. 빨강과 초록은 노랑, 초록과 파랑은 시안, 빨강과 파랑은 마젠타나 보라가 됩니다.
- 세 쌍이 같으면 회색입니다. #333333은 어두운 회색, #999999는 밝은 회색입니다. #708090처럼 거의 같은 쌍이면 차분한 회색빛 색이 됩니다.
- 전체적으로 숫자가 높으면 밝은 색, 낮으면 어두운 색입니다. 세 쌍이 모두 c0 이상이면 연한 색, 모두 30 이하면 아주 어두운 색입니다.
- 같은 숫자라도 초록은 파랑보다 훨씬 밝아 보입니다. #00ff00의 OKLCH 명도는 0.866인데 #0000ff는 0.452에 불과합니다.
#808080이 중간 회색이 아닌 이유
#808080은 숫자로는 정확히 한가운데, 모든 채널이 255 중 128입니다. 하지만 검정과 흰색의 중간으로 보이지는 않습니다. OKLCH 명도가 0.600이라 흰색 쪽으로 60% 간 것처럼 보입니다.
HEX 값은 이미 sRGB 곡선으로 인코딩되어 있는데, 이 곡선은 눈의 감각을 대략 따르지만 정확히 같지는 않습니다. #808080이 내는 빛은 흰색의 약 21.6%이고, 지각 모델은 시각적 중간점을 더 어둡게 잡습니다. OKLCH 기준으로는 #636363, CIELAB 기준으로는 #777777입니다.
| 회색 | 의미 | OKLCH L | 흰색 배경 대비 | 검정 배경 대비 |
|---|---|---|---|---|
| #808080 | 숫자상 중간, 128 | 0.600 | 3.95:1 | 5.32:1 |
| #777777 | CIELAB 중간, L* 50 | 0.569 | 4.48:1 | 4.69:1 |
| #767676 | 흰색 배경에서 4.5:1을 넘는 가장 밝은 회색 | 0.566 | 4.54:1 | 4.62:1 |
| #636363 | OKLCH 중간, L 0.5 | 0.500 | 6.01:1 | 3.50:1 |
이 차이는 텍스트에서 중요합니다. 흰색 위의 회색 #808080은 3.95:1이라 본문 텍스트 기준인 WCAG AA를 통과하지 못합니다. 4.5:1을 통과하는 가장 밝은 회색은 #767676이고, 한 단계만 밝은 #777777은 4.48:1로 이미 미달입니다.
대문자와 소문자, # 기호는 붙여야 할까
HEX 코드는 대소문자를 구분하지 않습니다. #1E90FF, #1e90ff, #1E90ff는 CSS, SVG, 디자인 툴에서 모두 같은 색입니다. 한 가지 스타일을 정해 어디서나 똑같이 쓰면 코드를 검색할 때 모든 사용처를 찾을 수 있습니다. CSS에서는 소문자를 많이 씁니다.
# 기호는 CSS 문법의 일부일 뿐 색의 일부가 아닙니다. Figma를 비롯한 많은 디자인 툴은 # 없이 코드를 보여 주고, 프로그래밍 언어에서는 0x 접두사를 붙인 숫자로 쓰는 경우가 많습니다. 예를 들어 Flutter의 Color(0xFF1E90FF)는 알파 쌍으로 시작합니다.
화면에 보이는 색의 HEX 코드 찾는 방법
스포이트를 쓰세요. 커서 아래의 색을 읽어 코드를 보여 주는 도구입니다. 무료이고 대부분 이미 설치되어 있습니다.
- Chrome과 Edge: F12로 개발자 도구를 열고, Styles 패널에서 아무 색 사각형이나 클릭한 뒤 스포이트 아이콘으로 페이지에서 색을 추출합니다.
- PickShade: 홈페이지의 컬러 피커에는 Chrome과 Edge에서 화면 어디서든 색을 추출할 수 있는 스포이트 버튼이 있습니다.
- Windows: Microsoft PowerToys를 설치하고 Win + Shift + C를 누르면 Color Picker가 열립니다.
- macOS: 응용 프로그램의 유틸리티에서 Digital Color Meter를 엽니다. sRGB로 전환한 뒤 보기, 값 표시, 16진수를 차례로 선택합니다.
- Figma, Photoshop 등 대부분의 디자인 앱: I를 누르면 스포이트가 됩니다.
- 사진이나 스크린샷: 이미지 컬러 피커에서 열고 원하는 픽셀을 클릭합니다. 이미지는 기기 밖으로 나가지 않습니다.
화면은 색 프로필을 적용하고 이미지는 압축되기 때문에, 추출한 값이 원래 값과 몇 단위 다를 수 있습니다. 정확한 값이 필요하면 스크린샷이 아니라 디자인 파일이나 CSS에서 복사하세요.
자주 묻는 질문
HEX 색상 코드란 무엇인가요?
HEX 색상 코드는 #1e90ff 같은 여섯 자리 코드로, 빨강, 초록, 파랑 빛의 양으로 색을 표현합니다. 16진수 두 자리로 된 각 쌍은 00(0)부터 ff(255)까지이므로 #1e90ff는 rgb(30, 144, 255)입니다.
HEX 색에 투명도를 넣으려면 어떻게 하나요?
끝에 네 번째 쌍을 붙여 #RRGGBBAA로 쓰면 됩니다. 불투명도에 255를 곱하고 반올림해 16진수로 바꾸세요. 50%는 80, 25%는 40, 75%는 bf입니다. 예를 들어 #1e90ff80은 불투명도 약 50%의 dodgerblue입니다.
불투명도 50%는 HEX로 얼마인가요?
불투명도 50%는 HEX로 80입니다. 반투명한 검정이라면 #00000080입니다. 80은 255 중 128로 50.2%인데, HEX 알파는 256단계라 정확한 50%는 7f와 80 사이에 있기 때문입니다.
HEX와 RGB는 무엇이 다른가요?
색 자체는 같고 표기법만 다릅니다. HEX는 빨강, 초록, 파랑 값을 16진수 쌍으로, rgb()는 0부터 255까지의 10진수로 씁니다. 따라서 #ff6347과 rgb(255, 99, 71)은 같은 토마토 빨강입니다.
HEX 색상 코드는 대소문자를 구분하나요?
아니요. #FF6347, #ff6347, #Ff6347은 CSS, HTML, SVG, 디자인 툴에서 모두 같은 색입니다. CSS 코드베이스는 대부분 소문자를 쓰지만, 일관되기만 하면 어떤 스타일이든 괜찮습니다.
중간 회색의 HEX 코드는 무엇인가요?
#808080은 숫자상 중간이지만 OKLCH 명도가 0.600이라 중간보다 밝아 보입니다. 검정과 흰색의 중간으로 보이는 회색은 #636363(OKLCH L 0.5)과 #777777(CIELAB L* 50) 사이에 있습니다.