OKLCH 색상 변환기
HEX·RGB를 CSS의 oklch()·oklab() 값으로, 반대로도 변환합니다. sRGB로 표현할 수 없는 색은 색역 밖이라고 알려 주고 가장 가까운 표현 가능한 색을 함께 냅니다.
# 은 있어도 없어도 되고 3자리 축약(#3BF)도 읽습니다.
OKLCH
oklch(62.31% 0.1880 259.81)
#3B82F6 · L은 눈에 보이는 밝기, C는 진하기, H는 색상각입니다
CSS로 붙여 넣기
oklch(62.31% 0.1880 259.81)oklab(62.31% -0.0332 -0.1851)#3B82F6사용 방법
- 1HEX·RGB로 넣을지 OKLCH로 넣을지 고릅니다.
- 2HEX 모드에서는 #3B82F6처럼 색상 코드를 붙여 넣습니다. 3자리 축약도 읽습니다.
- 3OKLCH 모드에서는 명도 L(%)·채도 C·색상각 H를 넣습니다.
- 4oklch()·oklab()·HEX 세 가지 표기가 나오며 복사 버튼으로 그대로 가져갈 수 있습니다.
- 5sRGB 색역 밖이면 매핑한 색과 두 색의 견본을 나란히 보여 줍니다.
자주 묻는 질문
L(명도)이 실제로 보이는 밝기와 맞는다는 점이 다릅니다. HSL에서 노랑 hsl(60 100% 50%)과 파랑 hsl(240 100% 50%)은 명도가 똑같이 50%지만 눈에는 노랑이 훨씬 밝습니다. OKLCH로 옮기면 노랑은 L 97%, 파랑은 L 45%로 갈립니다. 그래서 L을 고정한 채 색상각만 돌리면 밝기가 고른 팔레트가 나옵니다.
그 OKLCH 좌표가 가리키는 색을 sRGB 모니터로는 낼 수 없다는 뜻입니다. 예를 들어 oklch(90% 0.2 90)은 «아주 밝으면서 아주 진한 노랑»인데, sRGB가 그 밝기에서 낼 수 있는 채도는 0.18 정도가 한계입니다. 이 계산기는 색역 밖이면 CSS Color 4의 색역 매핑 알고리즘으로 가장 가까운 표현 가능한 색을 함께 냅니다.
명도와 색상각은 두고 채도만 이분 탐색으로 줄입니다. 다만 줄이는 도중 단순히 채널을 잘라 낸 색과의 거리가 인지 한계(ΔEOK 0.02) 안으로 들어오면 그 잘라 낸 색을 택합니다. 채도만 계속 깎으면 필요 이상으로 흐려지기 때문입니다. 그래서 결과의 L·H가 입력과 조금 달라질 수 있습니다.
나란히 놓고 보아야 겨우 구별되는 정도로 통하는 값입니다. OKLab 좌표 사이의 유클리드 거리이며, 색역 매핑과 색 비교의 기준선으로 CSS Color 4가 채택한 수치입니다. 다만 «인지 한계»는 색·크기·주변 밝기에 따라 달라지는 것이라 절대적인 경계는 아닙니다.
감마를 2.2 거듭제곱으로 근사한 구현일 가능성이 큽니다. sRGB의 전달함수는 어두운 쪽에 직선 구간이 붙은 구간별 정의(0.04045 경계, 지수 2.4)라서 2.2로 뭉개면 어두운 색에서 L이 눈에 띄게 어긋납니다. 이 계산기의 값은 colorjs.io·culori 두 구현과 소수 6자리까지 일치합니다.
상한이 명도와 색상각마다 다릅니다. sRGB 안에서는 어떤 색도 0.32를 넘지 못하고(가장 진한 것이 마젠타 0.3225), 명도가 아주 밝거나 아주 어두운 쪽으로 갈수록 상한이 0에 가까워집니다. OKLCH 모드에서는 지금 L·H 조합의 최대 채도를 함께 보여 줍니다.
다릅니다. 이 계산기는 sRGB를 기준으로 색역을 판정하므로, P3처럼 더 넓은 색역을 쓰는 화면에서는 여기서 «밖»이라고 한 색도 표현됩니다. CSS의 oklch() 표기 자체는 색역과 무관하게 색을 가리키며, 실제로 무엇이 그려질지는 화면이 정합니다.
전송되지 않습니다. 모든 변환은 브라우저 안에서 이루어지며 입력값은 이 기기에만 남습니다.
알아두면 좋은 점
- OKLab의 변환 행렬과 세제곱근 단계는 Björn Ottosson이 2020년에 공개한 정의값 그대로입니다. 근사가 아니라 확정된 상수입니다.
- sRGB 전달함수는 IEC 61966-2-1의 구간별 정의(0.04045 경계, 지수 2.4, 직선 구간 기울기 12.92)를 씁니다. 감마 2.2 근사와는 어두운 쪽에서 눈에 띄게 갈립니다.
- 변환값은 colorjs.io와 culori 두 구현이 낸 결과와 소수 6자리까지, 색역 매핑은 colorjs.io의 toGamut({method:"css"}) 결과와 대조해 검증했습니다(2026-08-31).
- 색역 판정에는 0.000075의 여유를 둡니다. 세제곱근과 세제곱을 오가면서 순수 초록 같은 경계색이 아주 조금 음수로 돌아오기 때문이며, CSS Color 4가 쓰는 값과 같습니다.
- 브라우저도 색역 밖 oklch() 값을 만나면 나름의 매핑을 하지만 구현마다 결과가 조금씩 다를 수 있습니다. 값을 못 박아 두려면 색역 안의 값을 쓰는 편이 안전합니다.
- 대비비(WCAG) 계산은 다루지 않습니다. 색상 대비 계산기를 쓰면 됩니다.
- 입력한 값은 브라우저 안에서만 계산되며 서버로 전송되지 않습니다.
함께 보면 좋은 도구
마지막 검증: 2026년 8월 31일 · 결과는 참고용 추정치입니다.