색상 변환기 — HEX, RGB, HSL, OKLCH
HEX, RGB, HSL, OKLCH, OKLAB, CMYK 등 9가지 색상 형식을 브라우저에서 즉시 변환합니다. 무료 온라인 도구, 가입 불필요.
색각 이상 시뮬레이션 (8가지 유형)
Tints / Shades / Tones / Harmonies
틴트
셰이드
톤
조화 색상
코드로 복사
— — — — — 자주 쓰는 색상 레퍼런스
색상 변환기란 무엇인가요?
색상 변환기는 하나의 색상 값을 툴체인, 디자인 시스템, 브라우저가 실제로 이해하는 형식 사이에서 변환해 주는 소형 유틸리티입니다. HEX, RGB, HSL, HSV, HWB, CMYK, OKLCH, OKLAB, 그리고 148개의 CSS 이름 있는 색상을 모두 다룹니다. 온라인 변환기는 2000년대 초부터 웹 도구의 단골 메뉴였습니다. 당시에는 거의 대부분 Geocities 시대의 스타일시트를 위한 단순한 HEX-RGB 텍스트 박스였습니다. 최신 변환기를 그 레거시 도구와 가르는 차이는 세 가지입니다. 한 방향 드롭다운이 아니라 모든 형식을 동시에 편집할 수 있는 통합 필드 UX, 내부적으로 정규 값을 유지해 왕복 변환을 비트 안정적으로 만드는 OKLCH 단일 사실 출처, 2003년 세대가 출시한 감마가 얽힌 HSL 산술이 아니라 W3C CSS Color 4에 기반을 둔 지각 수학입니다.
서로 다른 색 공간이 존재하는 이유는 서로 다른 문제에는 서로 다른 표현이 필요하기 때문이며, 어떤 단일 공간도 모든 문제에 좋지 않기 때문입니다. RGB는 하드웨어 네이티브 표현입니다. LCD의 빨강, 초록, 파랑 서브픽셀이나 CRT의 형광체에 직접 매핑되며, 각 채널은 0부터 255까지의 8비트 정수로 인코딩됩니다. HEX는 RGB를 16진수로 표기해 6자 문자열로 묶은 형식으로, 간결한 CSS와 Figma 복사·붙여넣기를 위한 것입니다. HSL, HSV, HWB는 디자이너 인지 공간입니다. RGB의 원통형 재구성으로 색조를 회전하거나, 밝게 하거나, 어둡게 하는 슬라이더를 직관적으로 제공합니다. HSL은 Alvy Ray Smith가 1978년에 HSV와 함께 발표했고, HWB는 1996년에 더 깔끔한 정신 모델(색조 + 흰색의 양 + 검은색의 양)로 추가되었습니다. CMYK는 인쇄 공정 추상입니다. 화면이 빛을 방출하는 방식이 아니라 잉크가 종이 위에서 빛을 흡수하는 방식을 모델링한 감산 잉크 스택(Cyan, Magenta, Yellow, Key=검정)입니다. OKLCH와 OKLAB은 지각 공간으로, 동일한 수치 거리가 동일한 지각 거리에 대응하도록 설계되어 디자인 시스템 램프와 접근성 수학에 필수적입니다. Named colors는 CSS 레거시입니다. `tomato`, `rebeccapurple`, `slategray` 같은 148개의 SVG/CSS3 이름이 모든 브라우저에 기본 탑재됩니다.
20년 넘게 sRGB는 "충분히 좋았습니다". 1996년 IEC 표준으로, 당시 CRT 모니터의 형광체 원색을 중심으로 설계되었습니다. 웹 색상이 의미할 수 있는 상한을 조용히 정의했습니다. 그런 다음 광색역 디스플레이가 그 가정을 무너뜨렸습니다. Apple의 Display P3는 sRGB보다 가시 스펙트럼의 약 50% 더 넓은 범위를 덮으며, 2017년 이후 모든 iPhone, iPad, MacBook에 탑재되어 있습니다. Rec2020은 그보다도 더 넓고, HDR TV의 방송 표준입니다. HSL은 sRGB의 감마 특이성을 정의 깊숙이 박아 두었기 때문에, 광색역 디스플레이에서 HSL 램프가 시각적으로 균등하지 않게 보이는 것입니다. L=50%인 초록이 L=50%인 파랑보다 더 밝아 보입니다. HSL의 L이 지각이 아니라 기하학적이기 때문입니다. 2020년에 Björn Ottosson은 CIE-LAB에서 명도 응답을 보정하고 고채도에서 더 깨끗한 동작을 갖도록 파생한 지각 균일 색 공간인 OKLAB을 발표했습니다. OKLCH는 그 극좌표 형식(Lightness / Chroma / Hue)으로, HSL과 같은 모양이지만 지각 수학이 바로잡힌 형태입니다. CSS Color 4는 2022년에 `oklch()`와 `oklab()` 구문을 추가했고, Chrome 111이 2023년 3월에 지원을 출시했으며, Safari 15.4는 이미 2022년 3월부터, Firefox 113은 2023년 5월에 도착했습니다. 2025년에 출시된 Tailwind v4는 OKLCH를 기본 색상 토큰 형식으로 채택했고, shadcn/ui도 곧 뒤따랐습니다. 본 도구는 그 흐름을 반영해 OKLCH를 내부 단일 사실 출처로 삼습니다. 모든 변환이 OKLCH를 경유하므로 HEX → RGB → OKLAB → HEX 왕복은 부동소수점 드리프트를 누적하지 않으며, OKLCH의 L 채널을 직접 편집하면 다른 모든 필드가 정확하게 갱신됩니다.
어떤 공간을 선택할지는 무엇을 하느냐에 따라 달라집니다. **HEX**는 웹 임베딩, 디자인 도구와 코드 사이의 복사·붙여넣기, 간결한 식별자가 중요한 모든 곳에서 적합합니다. `#3b82f6`은 CSS 변수에 편하게 들어가고, 대부분의 프런트엔드 개발자는 한눈에 알아봅니다. 전용 HEX RGB 변환기는 가장 흔한 단방향 변환을 한 단계로 처리하며, 반대 방향 RGB HEX 변환기는 디자이너나 이미지 픽셀 수학 파이프라인에서 채널 정수를 따로 받은 경우를 다룹니다. **RGB**는 직접 하드웨어 주소 지정에 쓰입니다. 0-255 정수가 필요한 모든 곳(canvas API, 이미지 조작, 하드웨어 LED 스트립, OpenGL 색상 속성)에 적합합니다. **HSL**은 레거시 디자이너 인지 공간으로, 색조 회전·밝게·어둡게를 제공하며 OKLCH로 마이그레이션하지 않은 프로젝트에서 빠른 CSS 색상 조정에 여전히 유용합니다. 단방향 HEX HSL 변환기는 그것만 필요할 때의 적절한 지름길입니다. **HSV와 HWB**는 디자이너 색상 피커 공간입니다. HSV(Hue, Saturation, Value)는 대부분의 피커 UI가 그리는 채도-값 정사각형과 일치하므로 Photoshop, Figma, Sketch에서 eyedropper를 클릭할 때 보고되는 형식입니다. HWB는 더 깔끔한 정신 모델로 (순수 색조를 고르고, 흰색을 더해 밝히거나 검은색을 더해 어둡게 함), CSS Color 4는 모든 에버그린 브라우저에서 네이티브 `hwb()` 지원을 추가했습니다. **CMYK**는 인쇄 준비용입니다. 직설적인 면책: 본 도구의 CMYK 출력은 표준 공식 `K = 1 - max(R,G,B); C = (1-R-K)/(1-K)`를 사용한 단순 sRGB 기반 근사입니다. 실제 인쇄 정확도는 특정 인쇄기, 잉크, 용지(보통 US Web Coated SWOP v2 또는 Fogra39)에 대한 ICC 프로파일 변환을 요구하며, 채널이 5-15% 이동할 수 있습니다. 본 도구의 CMYK는 출발 추정치로 다루십시오. 납품물이 아닙니다. 단방향 HEX CMYK 변환기는 같은 면책과 함께 동일한 공식을 적용합니다. **OKLCH**는 2025년 이후의 새 코드에서 기본 선택지입니다. 최신 디자인 시스템, 접근성을 의식한 팔레트 생성, 지각 균일성이 필요한 모든 곳에서 적합합니다. 단방향 HEX OKLCH 변환기는 빠른 레거시 팔레트 마이그레이션을 위해 존재합니다. **OKLAB**은 팔레트 수학에 쓰이는 직교 형식입니다. 두 색상 사이의 중간점, 거리 계산, 색각 이상 시뮬레이션 행렬, 그 외 선형 축 산술이 필요한 작업에 쓰입니다. **Named colors**는 문서, 코드 주석, 목업, 산문용입니다. 148개의 CSS 이름 있는 색상은 고정 사전이며, 본 도구는 OKLAB의 ΔE 거리로 어떤 입력에 대해서든 가장 가까운 이름 있는 색상을 찾아 줍니다.
이 모든 변환의 핵심에 있는 변환 그래프는 잘 정의되어 있으며 의외로 깔끔합니다. sRGB와 선형 sRGB는 W3C CSS Color 4 §11.2에 명시된 조각별 감마 곡선(0 근처의 작은 선형 구간이 있는 대략 2.4 지수)으로 관련됩니다. 선형 sRGB와 CIE XYZ D65는 CSS Color 4 §15.1의 고정된 3×3 행렬로 관련됩니다. XYZ D65와 OKLAB은 두 개의 행렬과 세제곱근 단계(Ottosson 2020에 따른 LMS 원추세포 응답 단계)로 관련됩니다. OKLAB과 OKLCH는 직교-극 변환으로 관련됩니다. `C = sqrt(a² + b²); H = atan2(b, a)`. HEX는 sRGB를 `#RRGGBB` 16진수로 직렬화한 것일 뿐입니다. RGB ↔ HSL, RGB ↔ HSV, RGB ↔ HWB는 sRGB 내부의 직접적인 기하 변환이며 CSS Color 4 §5-7에 정의되어 있습니다. CMYK는 위의 단순 sRGB 기반 공식입니다. 전체 파이프라인은 내부적으로 OKLCH를 뿌리로 하는 유향 그래프이며, 다른 모든 형식은 키 입력마다 OKLCH로부터 계산됩니다.
핵심 변환 외에도 본 도구는 레거시 세대에는 없던 기능을 제공합니다. **Display P3와 Rec2020 색역 감지** — 세 배지가 현재 색상이 각 공간의 재현 가능 범위 안에 있는지 표시하며, 원클릭 **Snap to sRGB** 버튼이 CSS Color 4의 정보용 알고리즘에 따라 이진 chroma 축소를 사용해 색상이 들어맞을 때까지 줄여 줍니다. **WCAG 2 + APCA Lc 이중 명암비 배지** — 두 지표를 한 행에 함께 표시해 오늘 규제 표준을 통과시키면서 미래 지향적 지각 지표로 정합성을 점검할 수 있습니다. **8가지 색각 이상 시뮬레이션** — protanopia, deuteranopia, tritanopia는 Brettel-Viénot-Mollon 1997 이색성 행렬로, protanomaly, deuteranomaly, tritanomaly는 Machado-Oliveira-Fernandes 2009 변이 삼색성 행렬을 심도 0.66으로, achromatopsia와 부분 achromatomaly는 rec601 휘도 가중치로 시뮬레이션합니다. **OKLCH 균일 팔레트 생성** — 틴트, 셰이드, 톤, 조화 색상은 C와 H를 고정한 채 L 채널을 균등 간격으로 단계 이동해 만들어집니다 (Tailwind v4 기본 팔레트와 동일한 방식). **CSS / Tailwind v4 / SwiftUI / Compose / Flutter 코드 스니펫** — 대부분의 크로스 팀 팀이 타기팅하는 다섯 가지 플랫폼용 즉시 붙여넣기 가능 출력입니다. **EyeDropper API 통합** — Chromium 계열 브라우저(Chrome, Edge, Brave, Opera)에서 브라우저 바깥을 포함해 화면 어디에서든 색상을 선택할 수 있습니다. **URL 해시 상태** — 현재 색상이 `#hex=...` 또는 `#oklch=...` 형태로 URL에 인코딩되어 정확한 색상으로 가는 실시간 링크를 한 번의 복사로 공유할 수 있습니다.
본 도구의 모든 기능은 브라우저 안에서 로컬로 실행됩니다. 색상 값은 결코 업로드되지도, 로그에 남지도, 분석되지도, 서버에 보존되지도 않습니다. 입력하는 동안 네트워크 요청이 전혀 발생하지 않습니다. 브라우저 개발자 도구의 Network 탭을 열고 확인해 보십시오. 어떤 필드에 입력해도 트래픽이 생기지 않습니다. 따라서 발표 전 브랜드 팔레트, 사내 디자인 토큰 시스템, 초안 목업, 그 외 기밀 색상 작업에 안전하게 사용할 수 있습니다. 어떤 쿠키도 붙여넣는 내용을 기록하지 않고, 색상 변경 시 분석이 발사되지 않습니다. 동일한 자세는 URL 해시에도 적용됩니다. `#hex=...` 프래그먼트는 주소창 안에만 존재하며 서버로 전송되지 않습니다 (브라우저는 프래그먼트를 HTTP 요청에 담지 않습니다). 공유한 링크조차 보낸 수신자 외 어떤 제3자에게도 색상 정보를 흘리지 않습니다. NDA 하의 출시 전 브랜드 작업, 엠바고가 걸린 캠페인, 클라이언트 팔레트를 다루는 팀에게 이 점은 편의 헤드라인보다 더 중요합니다. OKLCH가 2024–2026년 디자인 시스템의 표준이 된 이유를 더 깊이 알고 싶다면 짝꿍 가이드를 참고하시기 바랍니다: OKLCH 색 공간 설명 — Tailwind v4가 채택한 이유.
// sRGB → linear → XYZ D65 → OKLAB → OKLCH
// References: W3C CSS Color 4 §11-15, Ottosson 2020 (https://bottosson.github.io/posts/oklab/)
// Worked example: #3b82f6 (Tailwind blue-500)
const srgb = [0x3b, 0x82, 0xf6].map(v => v / 255); // [0.231, 0.510, 0.965]
const toLinear = (v) => v <= 0.04045 ? v / 12.92 : Math.pow((v + 0.055) / 1.055, 2.4);
const lin = srgb.map(toLinear); // gamma-decoded linear-sRGB
// linear-sRGB → XYZ D65 (CSS Color 4 §15.1 matrix)
const [lr, lg, lb] = lin;
const x = 0.4124564 * lr + 0.3575761 * lg + 0.1804375 * lb;
const y = 0.2126729 * lr + 0.7151522 * lg + 0.0721750 * lb;
const z = 0.0193339 * lr + 0.1191920 * lg + 0.9503041 * lb;
// XYZ D65 → LMS (Ottosson 2020 matrix), cube-root, → OKLAB
const l_ = Math.cbrt(0.8189330101 * x + 0.3618667424 * y - 0.1288597137 * z);
const m_ = Math.cbrt(0.0329845436 * x + 0.9293118715 * y + 0.0361456387 * z);
const s_ = Math.cbrt(0.0482003018 * x + 0.2643662691 * y + 0.6338517070 * z);
const L = 0.2104542553 * l_ + 0.7936177850 * m_ - 0.0040720468 * s_;
const a = 1.9779984951 * l_ - 2.4285922050 * m_ + 0.4505937099 * s_;
const b = 0.0259040371 * l_ + 0.7827717662 * m_ - 0.8086757660 * s_;
// OKLAB → OKLCH (Cartesian to polar)
const C = Math.sqrt(a * a + b * b);
const H = (Math.atan2(b, a) * 180 / Math.PI + 360) % 360;
console.log(`oklch(${L.toFixed(3)} ${C.toFixed(3)} ${H.toFixed(1)})`);
// → oklch(0.629 0.193 263.4) 주요 기능
동시 편집 가능한 9개의 색 공간
HEX, RGB, HSL, HSV, HWB, CMYK, OKLCH, OKLAB, CSS 이름 있는 색상 모든 형식이 단방향 드롭다운이 아니라 직접 편집 가능한 필드입니다. `oklch()` 값을 입력하면 HEX, RGB, HSL이 모두 업데이트되고, Figma에서 가져온 HEX를 붙여넣으면 OKLCH가 일치하는 지각 좌표로 업데이트됩니다. 편집 중인 필드의 커서는 그대로 유지됩니다. 키 입력마다 다른 8개 필드만 다시 렌더링되어 편집 흐름이 자연스럽습니다.
OKLCH 단일 사실 출처 — 비트 단위 정확한 왕복
내부 정규 표현은 OKLAB의 지각 균일 극좌표 형식인 OKLCH(Ottosson 2020)입니다. 다른 모든 형식은 키 입력마다 이로부터 파생됩니다. 덕분에 HEX → RGB → HSL → OKLAB → HEX 왕복이 부동소수점 드리프트 없이 이뤄지며, 원본 HEX가 변하지 않고 돌아옵니다. HSL이나 sRGB를 거치는 레거시 변환기는 단계마다 반올림 오차를 누적하지만, 본 도구는 그렇지 않습니다.
Display P3와 Rec2020 색역 경고
세 개의 실시간 배지(sRGB, Display P3, Rec2020)가 현재 색상이 각 공간의 재현 가능 범위 안에 있는지 보여 줍니다. OKLCH로 작업하면서 어떤 디스플레이가 값을 정확히 렌더링할지 알고 싶을 때 유용합니다. 많은 Tailwind v4 OKLCH 색상이 sRGB를 초과하지만 P3 안에 들어맞으며, 2017년 이후 대부분의 Apple 기기가 이를 렌더링할 수 있습니다. Snap to sRGB 버튼은 CSS Color 4의 이진 chroma 축소 알고리즘으로 색상이 들어맞을 때까지 줄여 줍니다.
WCAG 2 + APCA 명암비를 한 행에
흰색과 검은색에 대한 명암비를 두 지표로 나란히 보여 줍니다. 오늘의 규제 준수를 위한 WCAG 2.1 비율(4.5:1 = AA 본문 텍스트, 7:1 = AAA)과 미래 지향적 WCAG 3 지각 명암비 알고리즘인 APCA Lc 점수입니다. APCA는 극성에 민감해(밝은 배경의 어두운 텍스트와 어두운 배경의 밝은 텍스트의 가중치가 다름) WCAG 2의 대칭 공식이 잘못 처리하는 부분을 바로잡습니다. 둘 다 쓰십시오. 감사용으로 WCAG, 실제 가독성용으로 APCA.
8가지 결핍 유형에 걸친 색각 이상 시뮬레이션
세 가지 이색성(protanopia, deuteranopia, tritanopia)은 Brettel-Viénot-Mollon 1997 행렬로, 세 가지 변이 삼색성(protanomaly, deuteranomaly, tritanomaly)은 Machado-Oliveira-Fernandes 2009 행렬을 심도 0.66으로 시뮬레이션하며, achromatopsia와 achromatomaly는 rec601 휘도 가중치로 처리합니다. 남성의 약 8%, 여성의 약 0.5%를 다루며, 디자인이 접근성을 유지해야 하는 인구입니다.
OKLCH 균일 틴트, 셰이드, 톤, 조화 색상
팔레트 램프는 chroma와 색조(hue)를 고정한 채 L 채널을 OKLCH 균등 간격으로 단계 이동해 생성됩니다. Tailwind v4가 사용하는 것과 동일한 방식입니다. 결과는 지각적으로 균일합니다. 400과 500 사이의 시각적 간격이 500과 600 사이의 간격과 동일하게 보이며, HSL 램프로는 보장할 수 없는 특성입니다. 조화 색상(보색, 삼각, 사각, 분할 보색)은 정확한 각도로 색조를 회전하면서 L+C를 보존합니다.
CSS / Tailwind v4 / SwiftUI / Compose / Flutter로 복사
대부분의 크로스 팀 팀이 배포하는 다섯 플랫폼용 원클릭 코드 생성입니다. CSS 사용자 정의 속성 (`--color-brand: oklch(0.629 0.193 263.4)`), Tailwind v4 `@theme` 토큰, SwiftUI `Color(red:green:blue:)` 리터럴, Jetpack Compose `Color(0xFF3B82F6)` 상수, Flutter `Color(0xFF3B82F6)`. 각 플랫폼이 기대하는 정확한 구문으로 브랜드 스타일시트, iOS 에셋 카탈로그, Android 테마에 바로 붙여넣을 수 있습니다.
직접 구현한 OKLCH 피커 (외부 의존성 0)
SL 정사각형 + 색조 슬라이더 + 알파 슬라이더는 외부 피커 라이브러리 없이 순수 canvas + JavaScript로 작성되었습니다. 색조 슬라이더의 OKLCH 그래디언트는 HSL로 근사하지 않고 실제 OKLCH 수학으로 계산되므로, 슬라이더를 드래그하면 지각적으로 균일한 색조 회전이 일어납니다. 전체 인터랙티브 레이어의 번들 무게가 10 KB 미만이며, 콜드 로드에서도 첫 페인트가 빠릅니다.
100% 브라우저 내 실행 — 업로드 없음, 추적 없음
모든 변환 수학, 팔레트 생성, 명암비 점수 산출, 색역 감지가 브라우저 안에서 로컬로 실행됩니다. 색상 값은 결코 전송되지도, 서버에 저장되지도, 로그에 남지도, 분석되지도 않습니다. 입력하는 동안 네트워크 요청이 전혀 발생하지 않으며, 개발자 도구에서 확인할 수 있습니다. 발표 전 브랜드 팔레트, 사내 디자인 토큰, 초안 목업, 그 외 기밀 색상 작업에 안전합니다.
색상 변환기 대안 비교
ColorHexa
브라우저 도구오래된 경쟁 도구로, 색상별 심층 정보 페이지가 강점입니다. HEX마다 변환, 팔레트, 조화 색상, 그래디언트가 담긴 전체 SEO 페이지를 생성합니다. UI는 2010년대 초기 미적 감각으로 낡았고, OKLCH 지원이 없으며, APCA 명암비가 없고, 광색역 처리가 없습니다. 특정 색상의 SEO 발견(`#FF5733`을 검색 쿼리로)에는 강하지만, 통합 필드 UX가 중요한 실제 디자인 작업에는 약합니다.
RapidTables
브라우저 도구단방향 변환기(HEX RGB, RGB HEX, HEX HSL 등)를 폭넓게 갖춘 데다 다른 단위 도구도 함께 제공합니다. 각 변환이 단방향 폼이 있는 별도 페이지로, 실시간 통합 필드 경험이 없습니다. OKLCH 지원이 없고, 색역 경고가 없으며, 명암비 검사가 없습니다. Google 검색에서 도착해 일회성 빠른 변환을 할 때 유용합니다. 둘 이상의 변환이 있는 작업 흐름에는 본 도구가 더 빠릅니다.
HTMLColorCodes
브라우저 도구깔끔한 UI의 강력한 색상 피커와 팔레트 생성기입니다. 피커 UX는 시각적 탐색에 좋습니다. 변환기 측면은 기본 수준입니다. HEX, RGB, HSL, HSV, CMYK만 다루며 OKLCH도, OKLAB도, 색역 감지도 없습니다. 색상의 시각적 변형 탐색에 가장 좋습니다. 최신 색 공간이나 정밀 변환 수학이 필요할 때는 본 도구가 더 낫습니다.
OKLCH.com
브라우저 도구postcss-oklab-function 폴리필 저자인 Andrey Sitnik이 만든 아름답게 구축된 OKLCH 전용 도구입니다. 광색역을 의식한 피커와 팔레트 생성으로 OKLCH 특화 탐색에서는 최고 수준입니다. HEX/RGB/HSL/CMYK 변환은 주요 출력으로 다루지 않으며 OKLCH에만 집중합니다. 순수 OKLCH 디자인 작업에는 OKLCH.com을, 색 공간 사이의 교차 변환이 필요할 때는 본 도구를 사용하십시오.
ConvertingColors
브라우저 도구많은 색 공간(HEX, RGB, HSL, HSV, CMYK, XYZ, CIELAB 등)을 ColorHexa와 비슷한 색상별 SEO 콘텐츠 페이지 모델로 다룹니다. 최신 OKLCH 지원이 없고, APCA 명암비가 없으며, 광색역 처리가 없으며, 자동 생성된 콘텐츠 페이지는 콘텐츠 팜 느낌이 듭니다. 개별 색상 메타데이터 탐색에는 좋지만, 실제 디자인과 접근성 작업에는 본 도구가 더 빠릅니다.
IT-Tools
오픈소스 브라우저 도구다른 많은 유틸리티와 함께 색상 변환기를 포함하는 깔끔한 자체 호스팅 가능한 Vue 3 개발 도구 모음입니다. 전체 모음에서 UX가 일관됩니다. 색상 변환기는 HEX, RGB, HSL, HSV, CMYK를 다루지만 OKLCH도, 색역 경고도, 명암비 검사도, 색각 이상 시뮬레이션도 없습니다. 자체 호스팅 다목적 도구 모음을 원한다면 로컬에서 운영할 가치가 있습니다. 본 도구는 색상 전용으로 더 깊이 있는 옵션입니다.
W3Schools 색상 변환기
브라우저 도구초보자 친화적 페이지에 기본 HEX/RGB/HSL 토글이 있으며, 색상 변환기 쿼리의 검색 결과에서 흔히 보입니다. OKLCH가 없고, 고급 기능이 없습니다. W3Schools 설명 콘텐츠 옆에서 교육 레퍼런스로 유용합니다. 그 외 모든 축(더 많은 공간, 지각 수학, 색역 + 명암비 + CVD 기능, 최신 Tailwind v4 / SwiftUI / Compose / Flutter 코드 내보내기)에서는 본 도구가 우위에 있습니다.
색상 변환 예시
Tailwind v4 브랜드 색상 → OKLCH
#3b82f6
OKLCH 출력: `oklch(0.629 0.193 263.4)`. Tailwind v4의 `@theme` 블록에 `--color-brand-500: oklch(0.629 0.193 263.4);` 형태로 그대로 넣으면 나머지 램프가 지각적으로 정렬됩니다. Tailwind v4는 2024년에 기본 팔레트를 OKLCH로 표준화했는데, 이는 L 채널이 색조(hue)에 관계없이 지각 명도를 일관되게 유지해 주기 때문입니다. green-500과 blue-500이 동일하게 밝아 보이며, 이는 HSL/RGB 램프가 보장할 수 없는 특성입니다. 구형 브라우저용 폴백이 필요할 경우 원본 HEX도 그대로 보존됩니다.
웹 HEX → SwiftUI Color 리터럴
#FF5733
SwiftUI 출력 (코드로 복사 → SwiftUI 항목): `Color(red: 255/255, green: 87/255, blue: 51/255)`. 전형적인 iOS/macOS 작업 흐름입니다. 디자이너가 Figma 브랜드 패널에 HEX를 떨어뜨리면, 이를 본 도구에 붙여넣고 SwiftUI 리터럴을 복사해 `View`에 옮깁니다. 명시적인 `/255` 나눗셈이 포함된 표현식 형태는 의도된 것으로, 원본 브랜드 HEX가 소스 코드에 그대로 남기 때문에 불투명한 `Color(red: 1.0, green: 0.341, blue: 0.2)`보다 코드 리뷰에서 더 잘 살아남습니다.
디자이너 팔레트 스와치 → 인쇄용 CMYK 근사
#FF6347
CMYK 출력: 대략 `cmyk(0%, 61%, 72%, 0%)`. 표준 공식 `K = 1 − max(R,G,B); C = (1−R−K)/(1−K)`를 사용한 단순 sRGB → CMYK 변환입니다. 인쇄 견적용 출발 추정치로는 유용하지만 실제 변환을 대체하지는 않습니다. 인쇄소는 특정 인쇄기, 잉크, 용지에 맞춰 조정된 ICC 프로파일(보통 US Web Coated SWOP v2 또는 Fogra39)을 통해 파일을 처리하며, 채널 값이 5-15% 이동할 수 있습니다. 이 수치는 납품물이 아닌 정합성 체크 용도로 보십시오. ICC 없는 변환은 근사임을 기억하십시오.
OKLCH 광색역 색상 → sRGB 폴백
oklch(0.7 0.25 30)
색역 행이 이 색상을 **sRGB 색역 외**로 즉시 표시합니다 (Display P3는 포함, Rec2020도 포함). 일반 모니터에서는 채도가 떨어진 근사로 표시되고, P3 지원 디스플레이(2017년 이후 출하된 대부분의 노트북)에서는 채도가 살아 표시됩니다. **Snap to sRGB**를 눌러 색상이 sRGB 큐브 안에 들어올 때까지 chroma(채도, OKLCH C 채널)를 줄인 뒤, 결과 HEX(약 `#ef6b50`)를 폴백으로 복사하십시오. OKLCH를 단일 사실 출처로 두면 디자인 토큰에는 광색역 값을 유지하고, `@supports not (color: oklch(...))` 폴백으로 snap한 HEX를 함께 배포할 수 있습니다.
본문 텍스트의 WCAG 명암비 확인
#767676
흰색 (`#ffffff`) 대비 WCAG 2.1 명암비는 약 **4.54:1**로 나옵니다. 일반 본문 텍스트의 AA 임계값인 4.5:1을 간신히 통과합니다. 한 자리만 떨어뜨려 `#777777`로 만들면 비율이 4.48:1로 떨어져 AA를 통과하지 못합니다. APCA Lc 값은 미래 지향적 지표(WCAG 3 초안)로 함께 노출됩니다. APCA는 이 쌍에 대해 약 `Lc 60`을 부여하며, 이는 본문 텍스트에 권장되는 `Lc 75`보다 약간 낮습니다. 두 지표를 함께 쓰십시오. 오늘의 감사 통과를 위해 WCAG를 쓰고, 결과가 실제로 읽기 쉬운지 확인하기 위해 APCA를 쓰는 식입니다.
브랜드 HEX에 가장 가까운 CSS 이름 있는 색상 찾기
#FF6347
**Named** 필드는 `tomato (exact)`을 반환합니다. CSS 명세가 `tomato`를 정확히 `#FF6347`로 정의하기 때문입니다. 이는 모든 브라우저에 기본 탑재되는 148개 이름 있는 색상 중 하나입니다. `#FF6348`처럼 살짝 어긋난 값을 넣으면 필드는 `tomato (nearest, ΔE 0.02)`를 반환해, 가장 가까운 이름 있는 색상과 OKLAB 공간에서의 CIE ΔE(Delta E) 거리를 함께 보여 줍니다. HEX 코드 대신 사람이 읽기 쉬운 색상 이름을 카피나 주석에 넣고 싶을 때 유용합니다.
오래된 HSL 값을 최신 OKLCH로 변환
hsl(220 70% 50%)
OKLCH 출력: 약 `oklch(0.5 0.187 263)`. HSL의 L=50%는 **지각적으로 50%가 아닙니다**. HSL은 sRGB의 원통형 재구성이지 균일 공간이 아니므로, L=50%인 파란색이 L=50%인 노란색보다 훨씬 어두워 보입니다. OKLCH의 L=0.5는 실제로 사람 눈이 지각하는 중간 회색의 휘도에 대응합니다. HSL 디자인 시스템을 OKLCH로 이주하면 L 값이 이동할 것입니다 (파랑은 올라가고 노랑은 내려감). 이는 버그가 아니라 시스템이 스스로를 보정하는 과정입니다.
브랜드 색상에서 5개의 틴트와 5개의 셰이드로 팔레트 생성
#3b82f6
**Tints / Shades / Tones / Harmonies** 섹션은 C와 H를 고정한 채 OKLCH L 채널을 균등 간격으로 단계 이동하여 더 밝은 5개, 더 어두운 5개의 변형을 생성합니다. 결과는 지각적으로 균등한 램프입니다. `500`과 `600` 사이의 간격이 `600`과 `700` 사이의 간격과 동일하게 보이며, 디자인 시스템이 요구하는 특성이 바로 이것입니다. 어떤 스와치든 클릭하면 활성 색상으로 불러올 수 있고, 그 HEX/OKLCH를 복사할 수 있습니다. Tailwind v4 기본 팔레트 생성기와 동일한 방식입니다.
색상 변환기 사용 방법
- 1
어떤 형식이든 어떤 입력란에 붙여넣거나 입력하기
9개 형식 필드(HEX, RGB, HSL, HSV, HWB, CMYK, OKLCH, OKLAB, Named) 모두 직접 편집 가능합니다. 클릭할 "변환" 버튼은 없습니다. Figma에서 가져온 HEX를 붙여넣고, Tailwind 설정의 `oklch()` 값을 입력하고, 오래된 스타일시트의 `hsl()`을 떨어뜨리고, 심지어 `tomato` 같은 CSS 이름 있는 색상을 입력해도 됩니다. 입력하는 동안 점진적으로 파싱되므로, 절반만 입력된 값이 다른 필드를 망가뜨리지 않습니다. 유효한 형식을 확정해야 비로소 반영됩니다. 잘못된 입력에는 조용한 인라인 오류가 표시되고, 유효한 입력은 전체 그리드를 업데이트합니다.
- 2
9개 형식이 즉시 함께 갱신
내부 사실 출처는 OKLCH(지각 균일, 색역 무제한)이며, 다른 모든 형식은 키 입력마다 OKLCH로부터 파생됩니다. 현재 입력 중인 필드는 커서 위치가 유지되며, *다른* 8개 필드만 다시 렌더링됩니다. 이 덕분에 OKLCH의 L 채널을 직접 편집하면서 HEX, RGB, HSL, CMYK가 실시간으로 함께 이동하는 모습을 커서를 잃지 않고 지켜볼 수 있습니다. 변환 수학은 최신 브라우저에 탑재된 것과 동일한 OKLAB 기본 연산을 사용하여 전부 JavaScript에서 실행됩니다.
- 3
시각적 탐색에는 피커 사용하기
형식 그리드 아래에는 채도-명도 정사각형(드래그하여 현재 색조의 S+L 설정), 색조 슬라이더(드래그하여 색상환 회전), 알파 슬라이더(드래그하여 투명도 설정)가 있습니다. Chromium 기반 브라우저(Chrome, Edge, Brave)에서는 **EyeDropper** 버튼이 네이티브 `EyeDropper` API를 활성화합니다. 브라우저 창 바깥을 포함해 화면 어디든 클릭해 그 픽셀의 색상을 샘플링할 수 있습니다. Safari와 Firefox는 아직 API를 탑재하지 않아 해당 브라우저에서는 버튼이 숨겨지며, SL 정사각형 + 색조 슬라이더가 주된 피커로 남습니다.
- 4
색역과 명암비를 한눈에 확인
세 개의 색역 배지(**sRGB**, **Display P3**, **Rec2020**)는 현재 색상이 각 공간의 재현 가능 범위 안에 있는지 보여 줍니다. OKLCH로 작업하면서 어떤 디스플레이가 값을 정확히 렌더링할지 알고 싶을 때 유용합니다. 명암비 행에는 흰색과 검은색에 대한 WCAG 2.1 비율과 APCA Lc 점수(WCAG 3의 미래 지향적 지표)가 함께 표시됩니다. 통과/실패 배지(AA, AAA)가 인라인으로 나타납니다. 색상이 sRGB 색역 외이면 **Snap to sRGB** 버튼이 chroma를 줄여 들어맞게 합니다.
- 5
플랫폼 네이티브 구문으로 복사
9개 형식 필드 각각에 자체 **Copy** 버튼이 있습니다. 한 번 누르면 값이 클립보드로 들어가고, 레이블이 잠시 "복사되었습니다!"로 바뀌어 알려 줍니다. 피커 아래의 **Copy as code** 섹션은 다섯 가지 플랫폼용 즉시 붙여넣기 가능한 스니펫을 생성합니다. CSS 사용자 정의 속성, Tailwind v4 `@theme` 토큰, SwiftUI `Color(red:green:blue:)` 리터럴, Jetpack Compose `Color(0xFF...)` 상수, Flutter `Color(0xFF...)`. URL 해시(`#hex=...` 또는 `#oklch=...`)도 함께 업데이트되어 정확한 색상으로 가는 실시간 링크를 공유할 수 있습니다.
자주 발생하는 색상 변환 실수
HSL과 OKLCH를 혼동하기
두 공간은 같은 색조(hue) / 명도 / (채도 또는 chroma) 원통형 모양을 공유하므로, 종이 위에서는 서로 교환 가능해 보입니다. 그렇지 않습니다. HSL의 L은 기하학적입니다. 최대 채널과 최소 채널을 평균해 RGB에서 파생되며 sRGB의 감마 곡선을 내장합니다. OKLCH의 L은 지각적이며 OKLAB 모델에 고정되어 있습니다. 같은 L의 HSL 램프는 색조 사이에서 시각적으로 균등하지 않게 보이고, 같은 L의 OKLCH 램프는 균등하게 유지됩니다. 디자인 시스템 마이그레이션에서 다시 조정 없이 한쪽을 다른 쪽으로 치환하지 마십시오.
HSL 팔레트가 지각적으로 균일하다고 가정: hsl(220 50% 30%) → hsl(220 50% 60%) → hsl(220 50% 90%) 화면에서는 간격이 시각적으로 균등하지 않게 보입니다.
지각 균일 램프에는 OKLCH 사용: oklch(0.30 0.10 220) → oklch(0.60 0.10 220) → oklch(0.90 0.10 220) 화면에서 간격이 균등하게 보입니다.
인쇄용으로 단순 CMYK를 신뢰하기
본 도구의 CMYK 출력은 sRGB에 표준 `K = 1 - max(R,G,B)` 교과서 공식을 적용한 결과입니다. 유용한 대략 값이지만, 실제 변환을 대체하지는 않습니다. 인쇄소는 특정 인쇄기, 잉크, 용지에 맞춘 ICC 프로파일(US Web Coated SWOP v2, Fogra39, Japan Color 2011 등)을 통해 파일을 처리합니다. ICC 변환된 CMYK는 단순 공식과 채널당 5-15% 차이가 날 수 있습니다. 원본 sRGB HEX를 인쇄소에 보내고 정식 변환을 그들에게 맡기십시오.
본 도구 CMYK 출력을 인쇄기에 직접 보내기: hex #FF6347 → cmyk(0%, 61%, 72%, 0%) 인쇄 결과가 탁하거나 과채도로 나올 수 있습니다.
원본 HEX를 인쇄 업체에 보내기: hex #FF6347 → 인쇄소가 자체 인쇄기에 대해 ICC 변환 인쇄 결과가 화면 색상과 훨씬 더 잘 일치합니다.
APCA Lc를 WCAG 2 호환 수치로 읽기
APCA Lc와 WCAG 2 비율은 서로 다른 것을 측정하는 서로 다른 척도입니다. WCAG 2는 1:1(명암 없음)부터 21:1(최대 명암)까지의 비율을 제공하며, 본문 텍스트의 법적 AA 하한은 4.5:1입니다. APCA는 Lc를 0부터 ±108까지 제공하며, 부호는 극성을 나타냅니다(밝은 배경의 어두운 텍스트는 양수, 어두운 배경의 밝은 텍스트는 음수). Lc 60은 WCAG 4.5:1로 매핑되지 않습니다. 관계는 비선형이며 방향에 의존적입니다. 두 지표를 나란히 쓰고 한쪽을 다른 쪽의 번역으로 쓰지 마십시오.
Lc 60 = WCAG 4.5:1로 가정: APCA Lc 60 → "이것이 AA를 통과합니다" 같은 쌍에 대한 WCAG 2 비율은 3.8:1일 수 있습니다 (AA 실패).
두 지표를 독립적으로 확인: AA 본문 텍스트 준수: WCAG 2 비율 ≥ 4.5:1, AND 실제 가독성: APCA |Lc| ≥ 75. 둘 다 통과해야 하며, 한쪽이 다른 쪽을 대신하지 못합니다.
디자인 시스템 셰이드에 HSL 사용
HSL의 L 채널을 단계 이동해 50/100/200/.../900 램프를 생성하면 HSL의 L이 지각적이지 않기 때문에 시각적으로 균등하지 않은 램프가 만들어집니다. 어두운 스탑은 너무 어둡게, 밝은 스탑은 너무 밝게 보이며 중간 스탑은 압축됩니다. 디자이너는 각 스탑을 손으로 조정해 이를 해결하는데, 브랜드 색상마다 몇 시간의 작업입니다. OKLCH는 구성상 문제를 해결합니다. 같은 L 단계가 같은 시각 단계로 보이므로, 램프가 처음부터 균등합니다.
셰이드를 위한 HSL L 단계 이동: hsl(220 50% 30%) / hsl(220 50% 60%) / hsl(220 50% 90%) 90%는 바랜 듯하고; 30%는 60%까지의 간격보다 훨씬 어두워 보입니다.
셰이드를 위한 OKLCH L 단계 이동: oklch(0.30 0.10 220) / oklch(0.60 0.10 220) / oklch(0.90 0.10 220) 각 단계가 같은 시각적 간격으로 보입니다.
HEX 복사 시 알파 빠뜨리기
8자리 HEX (`#RRGGBBAA`)와 4자리 축약 (`#RGBA`)은 마지막 쌍에 알파 투명도를 인코딩합니다. CSS는 둘 다 지원하지만, 구형 파서(일부 레거시 CSS 전처리기와 2018년 이전 디자인 도구 포함)는 6자리 HEX만 이해해 알파를 조용히 잘라 냅니다. 결과는 50% 투명할 것으로 기대한 색상이 완전 불투명으로 렌더링되는 일입니다. 알파를 포함한 값을 복사하기 전에 대상 구문이 8자리 HEX를 받아들이는지 항상 확인하고, 레거시 대상에는 `rgba()`로 폴백하십시오.
레거시 파서에 8자리 HEX 복사: #FF573380 → 파서가 잘라냄 → #FF5733 (알파 없음) 50% 투명도가 조용히 사라집니다.
대상이 8자리 HEX를 지원하는지 확인하거나 rgba() 사용: 최신 CSS: #FF573380 (8자리 HEX) 레거시 지원: rgba(255, 87, 51, 0.5) (항상 지원) 명시적 알파 구문은 조용한 절단을 피합니다.
Display P3를 고려하지 않고 sRGB로 snap
Snap to sRGB는 레거시 컨텍스트에 유용한 안전장치이지만, 무분별하게 적용하면 디자인 대상이 될 수 있는 광색역 디스플레이를 무위로 만듭니다. 2017년 이후 대부분의 Apple 기기는 Display P3를 네이티브로 렌더링하며, 많은 최신 Android 기기와 노트북 화면도 마찬가지입니다. sRGB를 초과하지만 P3에 들어맞는 광색역 OKLCH 색상은 snap된 sRGB 근사보다 P3 하드웨어에서 훨씬 더 채도가 살아 보입니다. P3 색역 배지를 먼저 확인하고, sRGB 전용 레거시 컨텍스트를 타기팅할 때만 snap하십시오.
기본으로 모든 OKLCH 색상을 sRGB로 snap: oklch(0.7 0.25 30) → snap → oklch(0.7 0.18 30) P3 디스플레이에서 이유 없이 30%+ 채도를 잃습니다.
Display P3 배지를 먼저 확인: P3에 들어맞으면: 광색역 값을 유지하고 @supports로 sRGB 폴백 추가 P3도 초과하면: sRGB로 snap 광색역 하드웨어가 제 역할을 하도록 두십시오.
누가 이 도구를 사용하나요
- Tailwind v4 OKLCH 토큰으로 이주하는 프런트엔드 개발자
- Tailwind v4는 2024년에 기본 팔레트를 OKLCH로 표준화했습니다. 오래된 HSL 또는 HEX 기반 디자인 시스템을 이주하려면 수백 개의 브랜드 색상을 OKLCH로 변환해야 합니다. HEX를 붙여넣고, OKLCH 출력을 복사하고, `@theme` 블록에 떨어뜨리십시오. 실시간 색역 배지가 sRGB를 초과하는 색상을 표시해 주므로, Display P3 디스플레이용 광색역 값을 유지할지 여부를 결정할 수 있습니다.
- Figma 색상을 iOS / Android로 옮기는 디자이너
- Figma는 기본으로 HEX를 내보내지만, iOS는 SwiftUI `Color(red:green:blue:)` 리터럴을 원하고 Android는 Jetpack Compose `Color(0xFF...)` 상수를 원합니다. Figma HEX를 한 번 붙여넣고, iOS 엔지니어용 SwiftUI 스니펫과 Android 엔지니어용 Compose 스니펫을 복사하십시오. 두 스니펫 모두 각 플랫폼이 기대하는 정확한 구문으로, 추적성을 위해 원본 HEX가 주석에 보존됩니다.
- 인쇄 시안을 준비하는 디자이너 (CMYK 근사)
- 브랜드 색상을 인쇄된 명함에 올려야 할 때, CMYK 근사는 정식 ICC 변환 전에 인쇄소와 공유할 수 있는 빠른 추정치를 제공합니다. 브랜드 HEX를 붙여넣고, CMYK 백분율을 복사해 빠른 견적을 위해 인쇄소에 보내십시오. 그리고 최종 색상 일치는 특정 인쇄기에 맞춘 인쇄소의 ICC 프로파일 인식 변환에 맡기십시오.
- WCAG와 APCA를 검증하는 접근성 엔지니어
- WCAG 2.1은 오늘의 규제 표준(ADA, EAA, Section 508)이며, APCA Lc는 WCAG 3의 후속 제안입니다. 두 지표를 나란히 표시하면 디자이너가 본문 텍스트 색상이 흰색 대비 WCAG 4.5:1을 통과하는지 확인하고, 동시에 APCA Lc 75도 넘는지 한 화면에서 정합성을 점검할 수 있습니다. 두 별도 계산기 사이를 왔다 갔다 할 필요가 없습니다.
- 색 공간 개념을 가르치는 교육자
- 동시 9-필드 뷰는 색 공간 사이의 관계를 시각적으로 드러냅니다. OKLCH 값을 입력하고 HSL이 어떻게 표류하는지 보십시오. 각 공간에서 L의 의미가 다르기 때문입니다. 색조 슬라이더를 드래그하면 HEX, RGB, CMYK가 모두 함께 움직입니다. chroma를 sRGB 너머로 밀어내면 색역 배지가 빨갛게 변하는 모습을 보여 주십시오. 대학 수준의 그래픽스나 HCI 수업에서 본 도구는 그 자체로 교실 데모가 됩니다.
- 가장 가까운 CSS 이름 있는 색상을 찾는 브랜드 매니저
- 마케팅 카피가 "토마토색 액센트"라고 말하지만 실제 브랜드 HEX가 `#FF6347`이라면, Named 필드는 `tomato (exact)`을 반환합니다. CSS 명세에서 `tomato`가 바로 그 값으로 해석되기 때문입니다. 근접한 HEX의 경우 필드는 OKLAB의 ΔE 거리와 함께 가장 가까운 이름 있는 색상을 반환합니다. 문서, 산문, 캐주얼한 색상 명명에 유용합니다.
- 레거시 HEX 팔레트를 OKLCH로 변환하는 웹 개발자
- 오래된 사이트는 CSS 사용자 정의 속성으로 정의된 50개 색상 브랜드 팔레트를 HEX로 가질 수 있습니다. OKLCH로 현대화하면 브랜드 팀이 같은 램프를 지각 균일 공간에서 표현할 수 있습니다. 각 HEX를 붙여넣고, OKLCH 출력을 복사해 변수 정의에 교체하십시오. 아래의 Tints/Shades 패널은 결과 램프가 출시 전에 시각적으로 균일한지 확인해 줍니다.
- 디자인 토큰을 문서화하는 오픈소스 메인테이너
- 디자인 토큰 문서화는 보통 같은 색상을 여러 구문으로 보여야 합니다. CSS 코드 블록용 HEX, 사양 표용 OKLCH, 산문 언급용 이름 있는 색상. 동시 필드 뷰는 메인테이너가 세 변환을 따로 실행하지 않고도 한 번에 각각을 복사할 수 있게 합니다. 공유 가능한 URL 해시는 또한 GitHub 이슈에서 논의 중인 정확한 색상에 기여자가 링크할 수 있게 해 줍니다.
색상 변환 수학과 알고리즘
- 내부 단일 사실 출처로서의 OKLCH
- 본 도구는 정규 색상 값을 내부적으로 OKLCH 트리플로 유지합니다. 모든 편집 가능한 필드는 키 입력마다 그 트리플로부터 표시 값을 파생하며, 모든 사용자 편집은 먼저 트리플을 업데이트한 뒤 다른 8개 필드의 재렌더링을 트리거합니다. HSL이나 sRGB를 축으로 삼아 변환을 경유하는 변환기를 괴롭히는 단계별 부동소수점 드리프트를 제거합니다. OKLCH를 OKLAB 대신 선택한 것은 의도적입니다. 극 형식이 색조(hue)를 안정적인 축으로 보존하므로, 색조 슬라이더를 드래그할 때 회색을 가로질러 페이드 인되는 일이 없습니다. Björn Ottosson의 2020년 논문에 따라 OKLAB의 지각 균일성은 최신 색상 수학의 공통어로 다룰 가장 강한 근거입니다.
- 행렬 출처 (W3C CSS Color 4 + Ottosson 2020)
- 코드베이스의 모든 변환 행렬은 1차 출처에 인용됩니다. sRGB ↔ 선형 sRGB의 조각별 감마 함수는 W3C CSS Color 4 §11.2 (`v <= 0.04045 ? v/12.92 : ((v+0.055)/1.055)^2.4`)입니다. 선형 sRGB ↔ CIE XYZ D65 3×3 행렬은 CSS Color 4 §15.1입니다. XYZ D65 ↔ LMS 행렬과 OKLAB의 세제곱근 단계는 Ottosson의 `https://bottosson.github.io/posts/oklab/` 참조 구현에서 발표된 그대로 가져왔습니다. 어떤 행렬도 재계산하거나 재유도하지 않습니다. 그대로 복사하면 출력이 명세의 참조 벡터와 동일하게 유지됩니다.
- 단순 CMYK 공식과 ICC 면책
- 본 도구의 CMYK 출력은 표준 교과서 공식을 사용합니다. `K = 1 - max(R, G, B); C = (1-R-K)/(1-K); M = (1-G-K)/(1-K); Y = (1-B-K)/(1-K)`. 정규화된 sRGB 값에 대해 동작합니다. 이는 의도된 근사입니다. 실제 인쇄 정확도는 특정 인쇄기, 잉크(예: US Web Coated SWOP v2, Fogra39, Japan Color 2011), 용지에 대한 ICC 프로파일 변환을 요구하며 채널이 5-15% 이동할 수 있습니다. 사용자가 본 도구 값을 인쇄기에 직접 보내지 않도록 CMYK 필드에 가시적 면책을 함께 표시합니다. 출력을 견적용 정합성 체크로 다루십시오. 납품물이 아닙니다.
- 채널 범위 확인을 통한 색역 감지
- 색상은 대상 공간(sRGB, Display P3, Rec2020)으로 변환했을 때 모든 채널이 `[-ε, 1 + ε]` 안에 떨어지면 해당 공간의 색역 안으로 간주됩니다. 여기서 `ε = 1e-7`은 경계 부근의 부동소수점 정밀도 잡음을 흡수합니다. 어떤 채널이든 범위를 벗어나면 해당 공간의 색역 배지가 빨갛게 변합니다. 흔한 경우를 잡아냅니다. `oklch(0.7 0.4 30)` 같은 광색역 OKLCH 색상은 sRGB 색역 외이지만 P3 안에 들어맞는 것으로 보고되어, 어떤 디스플레이가 그것을 정확히 렌더링할지 알려 줍니다. 검사는 키 입력마다 실행됩니다.
- chroma 축소 snap 알고리즘
- Snap to sRGB는 chroma 축에 대한 이진 탐색을 사용합니다. L과 H는 현재 값으로 고정하고, `[0, currentC]` 범위에서 sRGB 변환이 색역 안에 머무르는 가장 큰 C를 찾습니다. 탐색은 최대 30회 반복 (정밀도 약 10⁻⁹)으로 시각적 정확성에 충분합니다. CSS Color 4 §13에 설명된 정보용 색역 매핑 알고리즘과 일치합니다. 명도와 색조(hue)는 유지하면서 chroma만 줄이면 snap된 색상이 같은 색조 계열로 인식 가능하게 남습니다. RGB 채널을 직접 클립하지 않는 이유는, 그 방식이 색조를 눈에 띄게 왜곡하기 때문입니다(특히 파란색에서).
- Brettel + Machado CVD 행렬
- 색각 이상 시뮬레이션은 두 가지 공개된 행렬 계열을 사용합니다. 세 이색성(protanopia, deuteranopia, tritanopia)은 선형 RGB에서 동작하는 Brettel-Viénot-Mollon 1997 행렬을 사용합니다(감마 디코드 → 행렬 적용 → 감마 인코드). 세 변이 삼색성(protanomaly, deuteranomaly, tritanomaly)은 Machado-Oliveira-Fernandes 2009 행렬을 심도 0.66으로 사용합니다. 일반적인 변이 삼색성 환자에 해당하는 값입니다. Achromatopsia와 부분 achromatomaly는 회색조 투영을 위해 rec601 휘도 가중치(`0.299R + 0.587G + 0.114B`)를 사용합니다. 모든 8가지 시뮬레이션은 색상이 바뀔 때마다 렌더링됩니다.
- WCAG 2 vs APCA: 언제 무엇을 쓸지
- WCAG 2.x(현행 표준)는 상대 휘도로 대칭 명암비를 계산합니다. `(L1 + 0.05) / (L2 + 0.05)`. 일반 본문 텍스트는 4.5:1, AAA는 7:1을 목표로 합니다. 2026년 접근성 감사의 법적 준수 하한입니다. APCA(Accessible Perceptual Contrast Algorithm)는 WCAG 3의 후속 제안으로, 극성에 민감하며(어두운 배경의 밝은 텍스트와 밝은 배경의 어두운 텍스트의 점수가 다름) 사람이 지각하는 가독성과 더 잘 상관됩니다. 본문 텍스트 `|Lc| ≥ 75`를 목표로 합니다. 두 지표를 한 행에 보여 주면 디자이너가 두 별도 계산기를 오가지 않고 WCAG 2로 규정 준수를 맞추고 APCA로 실제 가독성을 확인할 수 있습니다.
색상 변환 모범 사례
- 디자인 시스템 토큰은 OKLCH 선호, 레거시는 HEX 유지
- 2025년 이후 출시되는 새 디자인 시스템에서는 브랜드 색상과 팔레트 램프를 OKLCH로 정의하십시오. L 축이 지각적으로 균일한 램프를 자동으로 제공하고, chroma 축은 HEX가 인코딩할 수 없는 광색역 색상을 표현할 수 있습니다. 구형 브라우저용 HEX 폴백은 `@supports not (color: oklch(0 0 0))` 또는 빌드 타임 PostCSS로 유지하되, 토큰 저장소의 정규 값은 OKLCH로 하십시오. 수천 개의 기존 HEX 변수를 가진 레거시 시스템은 계획된 마이그레이션 전까지 HEX로 남겨 두십시오. 의미 없이 변경하지 마십시오.
- CMYK 출력은 근사로 취급하고 인쇄 업체와 확인
- 본 도구가 노출하는 CMYK 숫자는 ICC 프로파일 변환이 아니라 단순 sRGB 기반 공식입니다. 대략적 견적과 사내 시안에 사용하십시오. 실제 인쇄 작업 전에는 CMYK 근사가 아니라 원본 HEX를 인쇄 업체에 보내고, 특정 인쇄기, 잉크, 용지에 대한 자체 ICC 변환을 수행하게 하십시오. 정식 변환에서 발생하는 5-15% 채널 이동은 근사를 직접 배포할 경우 선명한 빨강을 탁한 주황으로 쉽게 바꿀 수 있습니다.
- 미래 지향적 접근성을 위해 APCA Lc 활용
- WCAG 2.x는 앞으로도 몇 년 더 규제 하한선으로 남겠지만, APCA는 표준이 향하는 방향입니다. 새 디자인의 경우 WCAG 2.1 하한선과 함께 본문 텍스트 `|Lc| ≥ 75`, 큰 텍스트 `|Lc| ≥ 60`을 맞추십시오. APCA는 WCAG 2의 대칭 비율이 놓치는 가독성 문제, 특히 밝은 배경 위의 가는 획 텍스트(WCAG 비율은 괜찮아 보이지만 실제 읽기 거리에서 텍스트가 사라지는 경우)를 잡아냅니다.
- 광색역 색상은 Display P3 색역 검사로 확인
- 최신 Apple 하드웨어(2017년 이후 iPhone, iPad, MacBook)를 타기팅하거나 HDR을 의식한 콘텐츠를 배포한다면 브랜드 색상을 OKLCH로 정의하고 Display P3 배지로 sRGB를 초과하더라도 P3 안에 들어맞는지 검증하십시오. 광색역 색상은 P3 디스플레이에서 눈에 띄게 더 채도가 살아 보이며, sRGB 전용 화면에서는 브라우저가 적용하는 chroma 압축으로 우아하게 저하됩니다. 전체 사용자층이 레거시 디스플레이가 아니라면 미리 sRGB로 snap하지 마십시오.
- OKLCH 톤으로 지각 균일 셰이드 생성
- 브랜드 색상에 50/100/200/.../900 램프를 만들 때 Tones 패널을 사용하십시오. C와 H를 고정한 채 L을 균등 간격으로 단계 이동합니다. 결과는 지각적으로 균일한 램프로, 400과 500 사이의 시각적 간격이 500과 600 사이의 간격과 동일하게 보입니다. 같은 균일성을 위해 HSL 램프를 손으로 조정하는 작업은 색상마다 몇 시간이 걸리지만, OKLCH는 그것을 공짜로 제공합니다.
- 크로스 탭 색상 매칭에는 Eyedropper를 절제해 사용
- EyeDropper API(2026년 기준 Chromium 전용)는 브라우저 바깥을 포함해 화면 어디든 클릭해 그 픽셀의 색상을 샘플링할 수 있게 합니다. 스크린샷, 비디오 프레임, 다른 앱 UI에서 색상을 일치시킬 때 유용합니다. 결과는 출발점으로 다루고 최종 값으로 다루지 마십시오. 화면 렌더링은 원본 파일과 다른 색상 관리를 적용할 수 있습니다. 정식 브랜드 색상은 항상 디자인 출처(Figma, Sketch, 브랜드 가이드 PDF)에서 HEX를 가져오고, 스크린샷에서 eyedropper로 뽑지 마십시오.
- 공유 가능한 팔레트 결정에는 `#hex=...` URL 북마크
- 현재 색상은 자동으로 URL 해시에 `#hex=...` 또는 `#oklch=...` 형태로 인코딩됩니다. URL을 복사해 Slack 스레드나 GitHub 이슈에 붙여넣으면, 여는 사람은 정확히 같은 색상에 도착합니다. "브랜드 블루"가 하나의 특정 OKLCH 트리플을 의미해야 하는 디자인 리뷰 스레드에 유용합니다. 해시는 변경할 때마다 업데이트되므로 주소창의 URL은 항상 실시간 현재 색상입니다. 나중에 특정 팔레트로 돌아오기 위해 북마크하십시오.
자주 묻는 질문
HEX 코드를 RGB로 어떻게 변환하나요?
HEX는 RGB와 같은 것인가요?
HEX 색상 코드는 어떻게 읽나요?
HEX를 RGB로 변환하는 공식은 무엇인가요?
RGB 대신 HEX를 쓰는 이유는 무엇인가요?
HEX 코드에 알파/투명도를 포함할 수 있나요?
HEX는 몇 가지 색상을 표현할 수 있나요?
OKLCH 색상은 무엇인가요?
OKLCH는 HSL보다 나은가요?
어떤 브라우저가 oklch()를 지원하나요?
Tailwind v4에서 OKLCH를 사용하는 이유는 무엇인가요?
OKLCH는 지각적으로 균일한가요?
OKLCH 값은 어떻게 읽나요?
색역(gamut)과 색 공간(color space)의 차이는 무엇인가요?
내 OKLCH 색상이 왜 sRGB 색역 외인가요?
명암비는 WCAG 2와 APCA 중 어느 것을 써야 하나요?
HSV와 HWB의 차이는 무엇인가요?
관련 도구
모든 도구 보기 →진법 변환기 (Number Base Converter)
변환 도구
2진수, 16진수, 10진수, 8진수 및 임의 진법(2-36)을 즉시 변환합니다. 온라인에서 무료로 사용할 수 있으며 모든 처리는 브라우저에서 이루어집니다.
HEX CMYK 변환기
변환 도구
HEX 색상을 CMYK로 변환합니다. 인쇄 시안용 sRGB 기반 근사. 무료 온라인 도구, 색상은 페이지를 벗어나지 않습니다.
HEX HSL 변환기
변환 도구
HEX 색상을 HSL로 변환합니다. 3자리, 6자리, 알파 포함 8자리 모두 지원. 무료 온라인 도구, 즉시 변환.
HEX OKLCH 변환기
변환 도구
HEX를 Tailwind v4 디자인 토큰용 OKLCH로 변환합니다. 지각적으로 균일한 실시간 출력과 Display P3 색역 경고. 무료, 브라우저 전용.
HEX RGB 변환기
변환 도구
HEX 색상 코드를 RGB로 변환합니다. 3자리, 6자리, 알파 포함 8자리 모두 지원. 무료 온라인 도구, 즉시 변환.
이미지 압축기 · JPEG, PNG, WebP 온라인 압축
변환 도구
JPEG, PNG, WebP 이미지를 온라인에서 최대 80% 압축합니다. 브라우저 안에서만 처리되며 업로드 없이 20장 일괄 처리, 품질 조절, 전후 비교를 무료로 지원합니다.