Skip to content

HEX HSL 변환기

HEX 색상을 HSL로 변환합니다. 3자리, 6자리, 알파 포함 8자리 모두 지원. 무료 온라인 도구, 즉시 변환.

트래킹 없음 브라우저 실행 무료
모든 색상 변환은 브라우저 안에서 로컬로 실행됩니다. 어떤 데이터도 서버로 전송되지 않습니다.
색역: sRGB Display P3 Rec2020
명암비 대비:
AA AA-Lg AAA AAA-Lg · APCA Lc
색각 이상 시뮬레이션 (8가지 유형)
Protanopia (적색맹)
Deuteranopia (녹색맹)
Tritanopia (청색맹)
Achromatopsia (전색맹)
Protanomaly (적색약)
Deuteranomaly (녹색약)
Tritanomaly (청색약)
Achromatomaly (부분 색각 이상)
Tints / Shades / Tones / Harmonies

틴트

셰이드

조화 색상

코드로 복사
자주 쓰는 색상 레퍼런스
CSS Color 4 §6.4 적합성, 3/4/6/8자리 HEX 형태 지원, 알파 쌍 디코딩 정확성, 그리고 0-360° 색조와 0-100% S/L 범위에 걸친 HEX와 HSL 사이의 왕복 안정성을 검토했습니다. — Go Tools Engineering Team · May 27, 2026

HEX HSL 변환기란 무엇인가요?

HEX HSL 변환기는 HEX 색상 코드(`#3b82f6`)를 동일한 sRGB 색상을 인코딩하는 원통형 Hue / Saturation / Lightness 트리플(`hsl(217 91% 60%)`)로 바꿔 주는 소형 유틸리티입니다. HEX 코드는 디자이너와 개발자가 Figma, Sketch, Photoshop, 브랜드 가이드라인 PDF, CSS 스타일시트 사이에서 붙여넣는 간결한 16진수 문자열입니다. 6글자의 `#RRGGBB` 형태로 묶인 세 개의 8비트 채널로, 1996년에 IEC 61966-2-1이 정의한 sRGB 색 공간에 고정되어 있습니다. HSL은 그 동일한 색 공간을 세 가지 더 디자이너 친화적인 축으로 재구성한 원통형 형식입니다. 색상환 위의 색조 각도, 색채감 있는 채도 백분율, 그리고 명도 백분율. 개발자들은 HEX → HSL을 끊임없이 변환합니다. 브랜드 색상을 CSS 변수로 정의한 뒤 L만 조정해 더 밝거나 어두운 셰이드를 합성하기 위해, 색조와 SL을 별도 컨트롤로 표시하는 색상 피커 UI를 위해, 디자인 시스템의 틴트와 셰이드 램프를 생성하기 위해, 또는 파생 테마 토큰을 위한 `hsl(from var(--primary) h s calc(l + 10%))` 런타임 CSS 변수 수학을 수행하기 위해. 본 도구는 입력하는 동안 변환을 실시간으로 실행하며 클릭할 "변환" 버튼이 없고, 다른 모든 흔한 색상 형식(RGB, OKLCH, OKLAB, HSV, HWB, CMYK, 그리고 148개의 CSS 이름 있는 색상)을 HSL 출력과 함께 무료로 노출합니다.

**HSL 형식 자체를 좀 더 자세히 볼 가치가 있습니다.** HSL = 색조(0-360°), 채도(0-100%), 명도(0-100%). 색조는 색상환 위의 각 위치입니다. 0°는 빨강, 60°는 노랑, 120°는 초록, 180°는 시안, 240°는 파랑, 300°는 마젠타이며, 360°는 다시 빨강으로 둘러싸입니다. 채도는 0%(무채색 회색)부터 100%(회색 함량 없이 완전히 채도가 높음)까지의 색채감입니다. 명도는 0%(색조나 채도와 관계없이 순수 검정)에서 50%(완전 채도의 순수 색조)를 거쳐 100%(색조나 채도와 관계없이 순수 흰색)까지의 밝기입니다. Alvy Ray Smith가 1978년에 디자이너에게 원시 RGB 채널 주소 지정보다 색상 인지 모델에 더 가까운 좌표계를 제공하려는 초기 컴퓨터 그래픽스의 일환으로 원본 유도를 발표했습니다. 모델은 2010년 CSS3 이후 CSS에 포함되어 IE 9까지 모든 브라우저에 탑재되어 있습니다. 원본 CSS 구문은 콤마를 사용했습니다. 불투명용 `hsl(217, 91%, 60%)`, 알파 포함용 `hsla(217, 91%, 60%, 0.5)`. CSS Color 4(2022년부터 W3C 후보 권고안)는 최신 공백 구분 형식을 추가했습니다. `hsl(217 91% 60%)`와 슬래시 접두 알파를 가진 `hsl(217 91% 60% / 0.5)` — CSS Color 4의 다른 함수형 표기법(`rgb()`, `lab()`, `oklch()`, `color()`)과 동일한 구문 모양입니다. 색조는 turn (`hsl(0.6turn 91% 60%)`) 또는 라디안 (`hsl(3.787rad 91% 60%)`)으로도 표현 가능하며, 모두 정규 도 형식과 동등합니다. 모든 에버그린 브라우저가 모든 구문 변형을 파싱하며, 본 도구는 기본적으로 최신 공백 구분 형식을 내보냅니다.

변환 수학은 양방향 모두 깔끔합니다. **HEX → HSL**은 두 단계 파이프라인입니다. 먼저 `parseInt(hex.slice(1, 3), 16)` 등을 통해 6자리 HEX `#RRGGBB`를 세 개의 2자리 16진수 숫자로 파싱해 0-255 범위의 정수 RGB 채널을 얻습니다. 그런 다음 각 채널을 255로 나눠 0-1로 정규화하고, `max = Math.max(r, g, b)`, `min = Math.min(r, g, b)`, `delta = max - min`을 계산합니다. 명도는 max와 min의 평균입니다. `L = (max + min) / 2`. 채도는 명도에 따라 조건적입니다. L ≤ 0.5일 때 `S = delta / (max + min)`이고, L > 0.5일 때 `S = delta / (2 - max - min)`입니다. CSS Color 4 §6.4 형식으로 동등하게 `S = delta / (1 - |2L - 1|)`입니다 (delta = 0일 때 S = 0). 색조는 어느 채널이 max인지에 따라 조각별입니다. R이 max일 때 `H = ((G - B) / delta) % 6`, G가 max일 때 `H = (B - R) / delta + 2`, B가 max일 때 `H = (R - G) / delta + 4`. 60을 곱해 도 단위로 스케일하고 음수이면 360을 더합니다. 역방향(HSL → HEX, RGB를 경유)은 헬퍼 `f(n) = L - a * max(-1, min(k-3, 9-k, 1))`를 사용하며, 여기서 `a = S * min(L, 1-L)`이고 `k = (n + H/30) mod 12`입니다. n = 0, 8, 4로 각각 R, G, B를 만든 뒤 0-255로 스케일하고 16진수로 인코딩합니다.

**HSL이 여전히 유용한 이유.** 직관적인 슬라이더 — L을 조정하면 색조 정체성을 깨지 않고 예측 가능하게 밝아지거나 어두워지지만, RGB 채널을 조정하면 덜 예측 가능한 색상 변화가 발생합니다. 런타임 CSS 수학 — 최신 브라우저는 `hsl(from var(--primary) h s calc(l + 10%))`를 지원해 렌더 시점에 테마 토큰을 파생합니다. 디자이너 인지 — HSV 색상 피커로 자란 디자이너는 파일이 HEX로 배포되더라도 색조 + 채도 측면에서 색상을 추론합니다. **HSL의 문제**는 명도 축이 지각적으로 균일하지 않다는 것입니다. L=50%의 초록이 L=50%의 파랑보다 시각적으로 더 밝아 보입니다. HSL이 sRGB의 감마 특이성을 상속하고 모든 색조를 L 척도에서 동등하게 취급하기 때문입니다. 지각 균일성이 필요할 때(모든 단계가 동등하게 밝아 보여야 하는 팔레트 생성, 파란 텍스트가 우연히 초록 텍스트보다 읽기 어려워지지 않도록 하는 다크 모드 토큰 계산)에는 대신 OKLCH를 사용하십시오. 동일한 도구가 둘 다 노출하므로 선택은 한눈 거리입니다.

본 도구의 HEX → HSL 작업 흐름은 동일한 기반 통합 색상 변환기를 공유하는 5개 스포크 패밀리의 한 방향입니다. 전용 통합 색상 변환기가 허브입니다. 9가지 형식을 동시에 편집 가능한 상태로 보여 주며, 작업 흐름이 단순한 HEX와 HSL 이상을 필요로 할 때 적절한 도구입니다. 단방향 스포크는 특정 Google 검색 의도를 겨냥합니다. canvas와 하드웨어 방향용 HEX RGB 변환기, 역방향용 RGB HEX 변환기, 최신 지각 균일 디자인 시스템용 HEX OKLCH 변환기(Tailwind v4와 shadcn 모두 이제 OKLCH를 기본값으로 둡니다), 그리고 인쇄 시안 근사용 HEX CMYK 변환기. 다섯 스포크와 허브 모두 동일한 파싱 엔진과 동일한 변환 수학을 공유하므로, 패밀리 전체에서 결과가 동일함이 보장됩니다. 모든 변환은 브라우저 안에서 로컬로 실행됩니다. HEX 코드는 결코 업로드되지도, 로그에 남지도, 입력 동안 어떤 네트워크 요청도 발사되지 않습니다. 개발자 도구에서 확인할 수 있습니다.

// Convert a hex color string to {h, s, l, alpha} per CSS Color 4 §6.4
// h in 0-360, s and l in 0-1, alpha in 0-1.
function hexToHsl(input) {
  let h = input.trim().replace(/^#/, '');
  if (h.length === 3 || h.length === 4) h = h.split('').map(c => c + c).join('');
  const r = parseInt(h.slice(0, 2), 16) / 255;
  const g = parseInt(h.slice(2, 4), 16) / 255;
  const b = parseInt(h.slice(4, 6), 16) / 255;
  const alpha = h.length === 8 ? parseInt(h.slice(6, 8), 16) / 255 : 1;
  const max = Math.max(r, g, b), min = Math.min(r, g, b), delta = max - min;
  const L = (max + min) / 2;
  const S = delta === 0 ? 0 : delta / (1 - Math.abs(2 * L - 1));
  let H = 0;
  if (delta !== 0) {
    if (max === r) H = ((g - b) / delta) % 6;
    else if (max === g) H = (b - r) / delta + 2;
    else H = (r - g) / delta + 4;
    H = (H * 60 + 360) % 360;
  }
  return { h: H, s: S, l: L, alpha };
}

console.log(hexToHsl('#3b82f6')); // { h: 217, s: 0.91, l: 0.60, alpha: 1 }

주요 기능

다섯 가지 HEX 형태를 동일하게 파싱

3자리 `#F73`, 4자리 알파 `#F738`, 6자리 `#3b82f6`, 8자리 알파 `#FF573380`, 그리고 각각의 `#` 없는 변형까지 모두. 파서는 HSL을 파생하기 전에 이들을 모두 동일한 내부 색상으로 정규화하므로, 어떤 형태든 소스가 사용하는 그대로 붙여넣을 수 있고 축약을 수작업으로 먼저 확장할 필요가 없습니다. 대소문자도 정규화됩니다. `#3b82f6`과 `#3B82F6`은 동일한 HSL 출력을 만들어 냅니다.

최신 공백 구분 구문의 HSL 출력

HSL 입력란은 값을 CSS Color 4의 최신 형식으로 노출합니다. 불투명 색상에는 `hsl(217 91% 60%)`, 알파가 포함된 색상에는 `hsl(217 91% 60% / 0.5)`. 두 형태 모두 모든 에버그린 브라우저에서 동작합니다 (Chrome 65+, Safari 13+, Firefox 52+). 타깃이 요구한다면 레거시 콤마 형식 `hsl(217, 91%, 60%)`은 기계적인 치환 한 번 거리입니다. 최신 구문이 CSS Color 4의 다른 함수형 구문과 정렬되기 때문에 새 코드에서 선호됩니다.

OKLCH 단일 사실 출처, HSL 피벗 아님

이 스포크가 HEX → HSL을 구체적으로 타기팅하더라도, 공유된 기반 변환기는 내부적으로 정규 색상을 OKLCH 트리플로 유지합니다. 덕분에 HEX → HSL → RGB → OKLAB → HEX 왕복이 단계별 부동소수점 드리프트 없이 이뤄집니다. HSL을 피벗으로 거치는 레거시 변환기는 반올림 오차를 누적하며 몇 번의 변환에 걸쳐 색조가 몇 도씩 드리프트할 수 있습니다. OKLCH 피벗은 다른 모든 형식을 동일한 출처점에 수학적으로 고정해 둡니다.

알파 채널을 깔끔하게 디코딩

알파 포함 8자리 및 4자리 HEX (`#RRGGBBAA`와 `#RGBA`)가 정확하게 파싱됩니다. 끝의 쌍은 0-1 알파 부동소수점에 매핑됩니다. `00` → 0, `80` → 0.502, `FF` → 1. 출력은 기본적으로 CSS Color 4의 슬래시 구문 (`hsl(217 91% 60% / 0.5)`)을 사용하며, 레거시 `hsla(217, 91%, 60%, 0.5)` 형식도 치환 한 번 거리입니다. 알파 값이 8자리 HEX 코드에 묻혀 있는 디자인 토큰 이주 작업에 유용합니다.

다른 여덟 가지 형식이 동시에 표시

붙여넣은 동일한 HEX가 RGB, HSV, HWB, OKLCH, OKLAB, CMYK, 그리고 가장 가까운 CSS 이름 있는 색상도 함께 채웁니다. 같은 페이지에서 한눈에 모두 보입니다. HEX → HSL 한 방향에 묶이지 않습니다. 팀원이 Tailwind v4 토큰용 OKLCH 트리플(지각 균일성이 HSL의 감마 특이적 L보다 더 중요한 곳), 문서 산문용 가장 가까운 이름 있는 색상, 또는 canvas 호출용 RGB 튜플을 필요로 한다면, 값들은 자체 복사 버튼과 함께 이미 거기에 있습니다.

WCAG + APCA 명암비 내장

HEX를 입력하면 명암비 행이 즉시 WCAG 2.1 (규제 하한선: 본문 텍스트 4.5:1, AAA 7:1)과 APCA Lc(WCAG 3의 후속 제안: 본문 텍스트 목표 `|Lc| ≥ 75`)를 사용해 흰색과 검은색에 대해 점수를 매깁니다. 브랜드 HEX를 HSL로 막 변환했고, 결과 색상(또는 명도가 조정된 변형)이 본문 텍스트 색상으로 실제로 읽기 쉬운지 출시 전에 확인하고 싶을 때 유용합니다.

CSS / Tailwind v4 / SwiftUI / Compose / Flutter로 복사

피커 아래의 코드로 복사 섹션은 현재 색상을 다섯 플랫폼용 즉시 붙여넣기 가능 스니펫으로 바꿔 줍니다. CSS 사용자 정의 속성 (`--color-brand: hsl(217 91% 60%)`), Tailwind v4 `@theme` 토큰, SwiftUI `Color(hue:saturation:brightness:)` 리터럴, Jetpack Compose `Color.hsl(217f, 0.91f, 0.60f)` 상수, Flutter `HSLColor.fromAHSL(...)`. 각 플랫폼이 기대하는 정확한 구문으로, iOS 에셋 카탈로그, Android 테마 파일, 또는 Flutter `ThemeData`에 바로 떨어뜨릴 수 있습니다.

100% 브라우저 내 실행 — 업로드 없음, 추적 없음

모든 HEX 파싱, HSL 변환, 명암비 점수 산출, 팔레트 생성이 브라우저 안에서 로컬로 실행됩니다. HEX 코드는 결코 전송되지도, 어떤 서버에 로그로 남지도, 분석되지도 않습니다. 입력하는 동안 네트워크 요청이 전혀 발생하지 않습니다. 개발자 도구에서 확인할 수 있습니다. 발표 전 브랜드 팔레트, 사내 디자인 토큰, NDA 하의 초안 목업, 그 외 기밀 색상 작업에 안전합니다.

정확한 색상을 위한 공유 가능 URL 해시

현재 색상은 변경 시마다 자동으로 URL 해시에 `#hex=3b82f6` 형태로 인코딩됩니다. URL을 복사해 Slack 스레드나 GitHub 이슈에 붙여넣으면, 그것을 여는 모든 사람이 동일한 HSL 트리플의 동일한 HEX에 도달합니다. 해시는 주소창 안에만 존재하고 서버로 전송되지 않으므로(브라우저는 URL 프래그먼트를 HTTP 요청에 담지 않습니다), 링크를 공유해도 어떤 제3자에게도 색상이 새지 않습니다.

HEX HSL 변환기 대안 비교

RapidTables Hex to HSL

브라우저 도구

"hex to hsl"에 대한 기본 Google 결과입니다. HEX 입력, HSL 출력의 단방향 폼이며 다른 형식은 표시되지 않습니다. 검색에서 도착해 일회성 조회에 유용합니다. OKLCH, 명암비 검사, 색역 감지, 알파 처리, 다중 형식 동시 뷰가 없습니다. 본 도구는 가장 단순한 단일 변환 사례를 제외한 모든 축에서 앞섭니다.

ColorHexa

브라우저 도구

오랫동안 운영된 색상별 SEO 페이지로, 어떤 HEX를 조회하든 변환·팔레트·조화·그래디언트 등 깊은 메타데이터를 제공합니다. UI가 오래되었고(2010년대 초), OKLCH 지원·APCA 명암비·광색역 처리가 없습니다. Google을 통한 특정 HEX의 SEO 발견에는 강하지만, 통합 입력란 UX로 입력하는 편이 더 빠른 적극적 변환 작업 흐름에서는 약합니다.

W3Schools HSL Calculator

브라우저 도구

교육 중심 페이지의 초보자 친화적 HEX/RGB/HSL 토글로, 검색 결과에 어디에나 등장합니다. OKLCH가 없고, hsla 너머의 알파 처리가 없으며, 고급 기능이 없습니다. W3Schools 해설 콘텐츠 옆의 레퍼런스로 유용합니다. 본 도구는 다른 모든 축에서 앞섭니다. 더 많은 형식, 지각 수학, 색역 + 명암비 + CVD 기능, Tailwind v4 / SwiftUI / Compose / Flutter용 최신 코드 내보내기.

브라우저 개발자 도구 색상 피커

내장 브라우저 기능

Chrome, Firefox, Safari 개발자 도구 모두 CSS 패널의 색상 스와치를 클릭하면 HEX, RGB, HSL 사이를 인라인으로 토글하는 색상 피커를 탑재합니다. 무료, 설치 불필요, 항상 사용 가능. OKLCH가 없고, 공유 가능한 URL이 없으며, 비웹 플랫폼(SwiftUI, Compose)용 코드 내보내기가 없습니다. 이미 CSS를 디버깅 중이라면 개발자 도구를, 크로스 플랫폼 출력이 필요하다면 본 도구를 잡으십시오.

Mothereff HSL Color Picker

브라우저 도구

실시간 색조/채도/명도 슬라이더와 HEX 출력이 있는 집중된 HSL 피커입니다. UI가 최소화되어 있어 빠른 HSL 탐색에 좋습니다. OKLCH와 더 넓은 형식 그리드가 없고, 명암비나 색역 기능이 없습니다. 집중된 HSL 전용 도구로 유용합니다. 본 도구는 동일한 작업 흐름에 더해 8가지 다른 형식 뷰와 지각 검사를 모두 다룹니다.

ConvertingColors

브라우저 도구

많은 공간(HEX, RGB, HSL, HSV, CMYK, XYZ, CIELAB)을 다루는 색상별 SEO 페이지입니다. 최신 OKLCH 지원과 통합 입력란 편집 UX가 없습니다. 자동 생성된 콘텐츠 페이지가 콘텐츠 팜 같은 느낌이지만 변환 데이터 자체는 정확합니다. Google을 통한 개별 색상 메타데이터 탐색에는 좋고, 본 도구는 적극적 작업 흐름에 더 빠릅니다.

HEX HSL 변환 예시

브랜드 색상을 위한 CSS 변수 정의

#3b82f6

HSL 출력: `hsl(217 91% 60%)`. HSL 기반 디자인 시스템의 정규 작업 흐름입니다. 브랜드를 `--primary: hsl(217 91% 60%)`로 한 번 정의한 뒤, L 백분율만 조정해 더 밝은 셰이드를 합성합니다. 호버 틴트에는 `hsl(217 91% 70%)`, 비활성 상태에는 `hsl(217 91% 80%)`, 은은한 배경 채움에는 `hsl(217 91% 90%)`. 색조와 채도는 잠겨 있으므로 패밀리가 일관된 램프로 읽힙니다. RGB 기반 스타일시트는 단계마다 세 채널을 함께 편집해야 하지만, HSL은 한 번이면 됩니다.

디자이너가 Figma 색상을 HSL 피커로 옮기기

#FF5733

HSL 출력: `hsl(11 100% 60%)`. 색상을 색조 + 채도 + 명도 측면에서 추론하는 디자이너(Munsell이 1905년에 형식화한 인지 모델)는 원본 파일이 HEX로 배포되더라도 종종 HSL 트리플을 원합니다. 색조 = 11°는 이 색상을 주황 영역의 빨강 쪽에 위치시키고, 채도 = 100%는 채널이 완전히 채도가 높음을 뜻하며, 명도 = 60%는 중간점보다 한 단계 위에 자리합니다. Figma HEX를 한 번 붙여넣으면 일치하는 HSL이 만들어져 색상환을 손으로 추측하지 않고도 디자이너의 인지 피커에 그대로 떨어뜨릴 준비가 됩니다.

팔레트를 위한 빠른 명도 스윕

#3b82f6

HSL 출력: `hsl(217 91% 60%)`. HSL 트리플을 손에 쥐면 틴트 램프 생성은 1차원 스윕입니다. L을 70%로 옮겨 `hsl(217 91% 70%)`, 80%로 `hsl(217 91% 80%)`, 90%로 `hsl(217 91% 90%)`로 흰색을 향해 올라가고, 50%, 40%, 30%로 떨어뜨려 더 어두운 셰이드를 만듭니다. 전체 9단계 램프가 숫자 하나만 바꿔서 만들어집니다. 색조와 채도가 일정하게 유지되므로 틴트와 셰이드가 톤 측면에서 서로 관련되어 보입니다. OKLCH가 지각 균일 램프를 저렴하게 생성 전, 레거시 디자인 시스템이 사용하던 기법입니다.

알파 포함 8자리 HEX → hsla()

#FF573380

HSL 출력: `hsl(11 100% 60% / 0.5)`. 마지막 쌍(`80`)은 `128/255 ≈ 0.502`로 디코딩되어 CSS Color 4의 슬래시 구문을 통해 알파 채널로 노출됩니다. 동등한 레거시 형식은 `hsla(11, 100%, 60%, 0.5)`이며, IE 9 이후 모든 브라우저에서 지원되어 왔고 구형 프리프로세서가 기대하는 형식입니다. 알파 포함 8자리 HEX는 2018년에 모든 에버그린 브라우저에 네이티브로 도입되었습니다. 그 이전에는 알파를 `hsla()` 함수로만 명시적으로 표현해야 했습니다.

자주 쓰이는 HEX → HSL 변환

가장 자주 변환되는 10개의 HEX 코드와 그 HSL 등가물의 레퍼런스 표입니다. 순수 원색, 순수 보색, 그리고 Tailwind 팔레트에서 가져온 실제 브랜드 색상 두 개를 포함합니다.

검정

#000000 hsl(0 0% 0%)

순수 검정. 명도 0% — 방출되는 빛이 없음. 색조와 채도는 회색에 대해 관례적으로 0입니다.

#000000 hsl(0 0% 0%)

화면에서 순수 검정은 좀처럼 적절한 디자인 선택이 되지 못합니다. 부드러운 본문 텍스트를 위해 `hsl(0 0% 7%)` 또는 OKLCH 명도 0.1-0.15를 시도해 보십시오.

대신 지각 균일 출력이 필요하다면? 전용 HEX OKLCH 변환기를 시도해 보십시오. HSL과 달리 모든 L 단계가 색조에 걸쳐 동등하게 밝아 보입니다.

흰색

#FFFFFF hsl(0 0% 100%)

순수 흰색. 명도 100% — 가능한 가장 밝은 sRGB 색상. 색조와 채도는 회색에 대해 관례적으로 0입니다.

#FFFFFF hsl(0 0% 100%)

순수 흰색 배경은 어두운 환경에서 눈의 피로를 유발할 수 있습니다. 더 따뜻한 대안으로 `hsl(0 0% 98%)` 또는 OKLCH 0.98을 시도해 보십시오.

대신 지각 균일 출력이 필요하다면? 전용 HEX OKLCH 변환기를 시도해 보십시오. HSL과 달리 모든 L 단계가 색조에 걸쳐 동등하게 밝아 보입니다.

빨강

#FF0000 hsl(0 100% 50%)

순수 빨강. 색조 0°(환의 시작 위치), 채도 완전히 채도 있음, 명도는 순수 색조가 자리하는 중간점.

#FF0000 hsl(0 100% 50%)

순수 빨강은 채도가 매우 높아 브랜드 팔레트에 잘 맞지 않습니다. 대부분의 "빨강" 브랜드 색상은 `hsl(0 73% 50%)`(#DC2626)에 더 가깝습니다.

대신 지각 균일 출력이 필요하다면? 전용 HEX OKLCH 변환기를 시도해 보십시오. HSL과 달리 모든 L 단계가 색조에 걸쳐 동등하게 밝아 보입니다.

초록

#00FF00 hsl(120 100% 50%)

순수 초록. 색조 120°(환의 1/3 위치), 채도 완전히 채도 있음, 명도 50%. CSS 이름 있는 색상 `lime`.

#00FF00 hsl(120 100% 50%)

CSS 키워드 `green`은 #008000(hsl(120 100% 25%))로 풀리며 #00FF00이 아닙니다 — 자주 발생하는 혼동의 원천입니다. 순수 hsl(120 100% 50%)에는 `lime`을 쓰십시오.

대신 지각 균일 출력이 필요하다면? 전용 HEX OKLCH 변환기를 시도해 보십시오. HSL과 달리 모든 L 단계가 색조에 걸쳐 동등하게 밝아 보입니다.

파랑

#0000FF hsl(240 100% 50%)

순수 파랑. 색조 240°(환의 2/3 위치), 채도 완전히 채도 있음, 명도는 중간점.

#0000FF hsl(240 100% 50%)

흰색 배경의 순수 파랑은 WCAG AA 명암비(3.7:1)를 통과하지 못합니다. 본문 텍스트에는 `hsl(224 76% 48%)`(Tailwind blue-700)를 고려하십시오.

대신 지각 균일 출력이 필요하다면? 전용 HEX OKLCH 변환기를 시도해 보십시오. HSL과 달리 모든 L 단계가 색조에 걸쳐 동등하게 밝아 보입니다.

시안

#00FFFF hsl(180 100% 50%)

시안. 색조 180°(환의 중간점, 빨강의 반대편), 채도 완전히 채도 있음, 명도는 순수 색조 중간점. CSS 이름 있는 색상 `cyan` 또는 `aqua`.

#00FFFF hsl(180 100% 50%)

시안은 환에서 빨강의 반대편(180°/0°)에 자리해, 빨강 계열 브랜드 색상의 자연스러운 보색 조화 파트너가 됩니다.

대신 지각 균일 출력이 필요하다면? 전용 HEX OKLCH 변환기를 시도해 보십시오. HSL과 달리 모든 L 단계가 색조에 걸쳐 동등하게 밝아 보입니다.

마젠타

#FF00FF hsl(300 100% 50%)

마젠타. 색조 300°(환의 5/6 위치), 채도 완전히 채도 있음, 명도는 순수 색조 중간점. CSS 이름 있는 색상 `magenta` 또는 `fuchsia`.

#FF00FF hsl(300 100% 50%)

마젠타는 환에서 초록의 반대편(300°/120°)에 자리해, 초록 계열 브랜드 색상의 자연스러운 보색 조화 파트너가 됩니다.

대신 지각 균일 출력이 필요하다면? 전용 HEX OKLCH 변환기를 시도해 보십시오. HSL과 달리 모든 L 단계가 색조에 걸쳐 동등하게 밝아 보입니다.

노랑

#FFFF00 hsl(60 100% 50%)

노랑. 색조 60°(환의 1/6 위치, 빨강과 초록 사이), 채도 완전히 채도 있음, 명도는 순수 색조 중간점.

#FFFF00 hsl(60 100% 50%)

hsl(60 100% 50%)의 노랑이 hsl(0 100% 50%)의 빨강보다 훨씬 더 밝아 보입니다 — HSL의 지각 비균일성의 생생한 예입니다. OKLCH는 이를 정규화합니다.

대신 지각 균일 출력이 필요하다면? 전용 HEX OKLCH 변환기를 시도해 보십시오. HSL과 달리 모든 L 단계가 색조에 걸쳐 동등하게 밝아 보입니다.

Tailwind blue-500

#3b82f6 hsl(217 91% 60%)

Tailwind CSS의 기본 blue-500 브랜드 색상 — 2020년대 중반의 정규 "웹 파랑"입니다. 수많은 대시보드, 마케팅 사이트, 관리 도구에서 사용됩니다.

#3b82f6 hsl(217 91% 60%)

Tailwind v4는 지각 균일 램프를 위해 blue-500을 OKLCH(`oklch(0.629 0.193 263.4)`)로 재정의합니다 — HSL은 v3 폴백입니다.

대신 지각 균일 출력이 필요하다면? 전용 HEX OKLCH 변환기를 시도해 보십시오. HSL과 달리 모든 L 단계가 색조에 걸쳐 동등하게 밝아 보입니다.

Tailwind rose-500

#f43f5e hsl(350 89% 60%)

Tailwind CSS의 기본 rose-500 — 액센트 버튼, 경고 상태, 브랜드 대비에 흔히 쓰이는 높은 채도의 분홍빛 빨강.

#f43f5e hsl(350 89% 60%)

Rose-500의 색조(350°)는 환에서 빨강(0°/360°) 바로 앞에 자리합니다 — 순수 빨강보다 더 따뜻하게 읽히는 약간의 분홍 시프트입니다.

대신 지각 균일 출력이 필요하다면? 전용 HEX OKLCH 변환기를 시도해 보십시오. HSL과 달리 모든 L 단계가 색조에 걸쳐 동등하게 밝아 보입니다.

HEX HSL 변환기 사용 방법

  1. 1

    HEX 입력란에 HEX 코드 붙여넣기

    어떤 HEX 값이든 HEX 입력란에 떨어뜨리십시오. 앞의 `#` 포함 여부, 3자리 축약 (`#F73`), 6자리 완전형 (`#3b82f6`), 4자리 알파 축약 (`#F738`), 또는 8자리 알파 완전형 (`#FF573380`) 모두 받아들입니다. 본 도구는 다섯 가지 입력 형태를 모두 내부적으로 동일한 정규 색상으로 정규화합니다. 대소문자는 무관합니다 (`#3b82f6`과 `#3B82F6`은 동일하게 파싱됩니다). 잘못된 문자나 자릿수는 조용한 인라인 오류를 발생시키고, 유효한 HEX는 HSL을 포함한 다른 모든 형식 입력란을 실시간으로 업데이트합니다.

  2. 2

    HSL 입력란에서 HSL 트리플 읽기

    HEX 입력란 아래의 HSL 입력란은 CSS Color 4의 최신 공백 구분 구문으로 일치하는 `hsl()` 값을 보여 줍니다. 불투명 색상에는 `hsl(217 91% 60%)`, 알파가 포함된 색상에는 `hsl(217 91% 60% / 0.5)`. 색조는 0-360 범위의 정수 도, 채도와 명도는 0-100 범위의 정수 백분율입니다. 값은 표시 가독성을 위해 반올림됩니다. 본 도구의 내부 OKLCH 단일 사실 출처 덕분에 기반 정밀도는 부동소수점이므로, HEX로 되돌리는 왕복이 안정적으로 유지됩니다.

  3. 3

    복사를 클릭해 HSL 문자열 가져오기

    각 형식 카드의 오른쪽에는 복사 버튼이 있습니다. 한 번 클릭하면 값이 클립보드로 들어가고, 버튼 레이블이 잠시 "복사되었습니다!"로 바뀌어 알려 줍니다. 복사된 문자열은 정규 CSS Color 4 구문 (`hsl(217 91% 60%)`)입니다. 타깃이 레거시 콤마 형식 (`hsl(217, 91%, 60%)`)을 요구한다면 변환은 기계적입니다. 플랫폼별 출력 (Tailwind v4, SwiftUI, Compose, Flutter)은 피커 아래의 코드로 복사 섹션을 사용하십시오. 해당 스니펫들은 각 플랫폼이 네이티브로 기대하는 형식을 내보냅니다.

  4. 4

    함께 표시되는 형식: RGB, OKLCH, OKLAB, HSV, HWB, CMYK, 이름 있는 색상

    붙여넣은 동일한 HEX가 다른 형식 입력란도 함께 채웁니다. canvas 호출과 하드웨어용 RGB, 지각 균일 디자인 시스템용 OKLCH와 OKLAB, 디자이너 색상 피커 작업 흐름용 HSV와 HWB, 인쇄 견적용 CMYK, 그리고 문서 산문용 가장 가까운 CSS 이름 있는 색상까지. HEX → HSL 한 방향에 묶이지 않습니다. Tailwind v4 `@theme` 블록(HSL의 감마 특이적 L보다 지각 명도가 더 중요한 곳)을 위한 OKLCH 트리플이 함께 필요하다면, OKLCH 입력란에 자체 복사 버튼과 함께 바로 노출되어 있습니다.

  5. 5

    피커를 사용해 명도를 시각적으로 스윕

    형식 그리드 아래에는 시각적 탐색용으로 SL 정사각형 + 색조 슬라이더 + 알파 슬라이더가 있습니다. SL 정사각형은 HSL의 채도 × 명도 평면에 직접 매핑됩니다. 수직으로 드래그하면 L이 0%에서 100%로 이동하는 동안 HSL 입력란이 실시간으로 업데이트되는 모습을 지켜볼 수 있습니다. 정확한 백분율을 확정하기 전에 시각적으로 틴트나 셰이드를 생성할 때 유용합니다. Chromium 기반 브라우저(Chrome, Edge, Brave)에서는 EyeDropper 버튼이 네이티브 `EyeDropper` API를 활성화해, 브라우저 바깥을 포함한 화면 위 어떤 픽셀이든 샘플링할 수 있습니다.

자주 발생하는 HEX / HSL 실수

HSL 명도가 지각적으로 균일하다고 가정

`hsl(120 100% 50%)`의 초록이 `hsl(240 100% 50%)`의 파랑보다 시각적으로 더 밝아 보입니다. 둘 다 L=50%인데도 그렇습니다. L을 스윕해 틴트 램프를 생성하면 색조에 걸쳐 고르지 않아 보이는 결과가 나옵니다. 초록 램프의 밝은 끝이 파랑 램프보다 더 빨리 올라갑니다. 이는 HSL이 sRGB의 감마 특이성을 상속하는 구조적 속성이지 코드 버그가 아닙니다. 지각 균일 램프를 위해서는 OKLCH로 전환하십시오.

✗ 오류
9단계 팔레트를 위해 HSL L 스윕:
hsl(120 100% 50%)과 hsl(240 100% 50%)이 동일 L에서
시각적으로 다른 밝기 — 팔레트가 고르지 않게 느껴짐.
✓ 정상
대신 OKLCH L 스윕:
oklch(0.7 0.2 130)과 oklch(0.7 0.2 250)
동등하게 밝아 보임 — 모든 색조에 걸쳐 일관된 팔레트로 읽힘.

색조가 360°에서 둘러싸인다는 것을 잊음

HSL 색조는 각도입니다. `hsl(370 91% 60%)`은 370° mod 360° = 10°이므로 `hsl(10 91% 60%)`으로 해석됩니다. 색조를 350°에서 380°로 애니메이션하면 360°/0°(빨강의 얇은 조각)를 통해 깨끗하게 둘러싸지만, H=350에서 H=10으로 잘못된 방향으로 선형 보간하면 시안, 초록, 노랑을 거치는 *긴* 경로를 갑니다 — 320°의 우회입니다. 짧은 경로를 고르려면 `Math.min(diff, 360 - diff)`를 쓰거나 색상 라이브러리의 내장 색조 보간을 사용하십시오.

✗ 오류
H=350에서 H=10으로의 선형 보간:
(350 + 10) / 2 = 180° (시안 중간점)
잘못됨 — 환을 긴 방향으로 돌아감.
✓ 정상
짧은 경로 색조 보간:
중간점 = ((350 + 10 + 360) / 2) % 360 = 0° (빨강 중간점)
환의 짧은 경로인 빨강을 통과.

HSL과 HSV 혼동

HSL과 HSV는 색조 축을 공유하지만 세 번째 축이 다릅니다. HSL의 명도는 대칭적입니다 — 0% 검정, 50% 순수 색조, 100% 흰색. HSV의 값(Value)은 비대칭적입니다 — 0% 검정, 100% 순수 색조, 흰색은 채도가 0으로 떨어질 때만. `hsl(0 100% 100%)`은 흰색이고, `hsv(0 100% 100%)`은 순수 빨강입니다. 많은 색상 라이브러리와 디자인 도구(Photoshop의 HSB 피커, Sketch의 컬러 패널)는 HSV를 사용합니다. 변환 없이 두 시스템 사이에서 값을 복사하면 완전히 다른 색상이 나옵니다.

✗ 오류
Photoshop의 HSV 값을 CSS hsl() 규칙에 붙여넣기:
Photoshop HSB 0, 100, 100 (순수 빨강)
CSS hsl(0 100% 100%)는 흰색으로 렌더 — 완전히 잘못된 색상.
✓ 정상
CSS에 붙여넣기 전 HSV → HSL 변환:
HSV 0, 100, 100 → HSL 0, 100%, 50%
CSS hsl(0 100% 50%)는 순수 빨강으로 렌더 — 정확함.

HSL에서 백분율 부호 빠뜨리기

HSL의 S와 L 축은 CSS에서 `%` 접미사를 필요로 합니다. `hsl(217 91 60)`은 모든 브라우저에서 파싱 오류이며, 올바른 형식은 `hsl(217 91% 60%)`입니다. 색조만 무차원입니다(단위는 도이지만 접미사는 선택). 많은 임시 변환기가 HSL 출력에서 백분율 부호를 내보내는 것을 잊고, 붙여넣었을 때 조용히 실패하는 잘못된 CSS를 만들어 냅니다. 본 도구는 HSL 입력란에 항상 백분율 부호를 내보냅니다.

✗ 오류
백분율 부호 없이 HSL 내보내기:
hsl(217 91 60)
CSS 파싱 오류 — 모든 브라우저가 전체 규칙을 무시.
✓ 정상
S와 L에 백분율 부호를 붙여 HSL 내보내기:
hsl(217 91% 60%)
유효한 CSS — 모든 에버그린 브라우저와 IE 9+에서 동작.

누가 HEX HSL을 사용하나요

HSL CSS 변수를 정의하는 프런트엔드 개발자
Figma HEX로부터 `--primary: hsl(217 91% 60%)`를 한 번 정의한 뒤, L 숫자만 조정해 `--primary-hover: hsl(217 91% 70%)`, `--primary-active: hsl(217 91% 50%)`, `--primary-bg: hsl(217 91% 95%)`를 합성합니다. HEX를 한 번 붙여넣고, HSL 트리플을 읽고, CSS 사용자 정의 속성 블록에 떨어뜨리십시오. OKLCH 기반 램프가 우위를 차지하기 전, 레거시 디자인 시스템이 틴트와 셰이드를 톤 측면에서 일관되게 유지하기 위해 사용한 패턴입니다.
HEX를 HSL 피커로 옮기는 디자이너
색조 + 채도 + 값 피커(Adobe, Sketch, Figma의 HSB 모드)로 자란 디자이너는 원본 파일이 HEX로 배포되더라도 종종 HSL 트리플을 원합니다. HEX를 한 번 붙여넣으면 일치하는 HSL이 만들어져 손으로 추측하지 않고도 디자이너의 인지 색상환 위치로 읽어들일 준비가 됩니다. 브랜드 색상 사양을 검토하면서 패밀리 안의 다른 브랜드 색상에 대해 그것이 색조 환 어디에 자리하는지 알고 싶을 때 유용합니다.
다크 모드 토큰을 계산하는 테마 시스템 작성자
다크 모드 테마는 종종 H와 S를 유지한 채 L을 반전합니다. 라이트 모드 `hsl(217 91% 60%)` 기본 색상이 다크 모드 `hsl(217 91% 40%)`(또는 유사)에 매핑됩니다. 라이트 모드 HEX를 붙여넣고, HSL을 읽고, 다크 모드 L을 계산하고, 새 HSL을 다크 테마 토큰에 다시 작성하십시오. HSL 트리플을 갖고 있을 때는 패턴이 기계적이지만, 원시 RGB 채널로는 훨씬 까다롭습니다.
틴트와 셰이드 램프를 생성하는 디자인 시스템 작성자
L을 스윕해 9단계 틴트/셰이드 램프를 생성하십시오. `hsl(217 91% 95%)`(가장 밝음), 85%, 75%, 65%, 55%, 45%, 35%, 25%, `hsl(217 91% 15%)`(가장 어두움). 기본 HEX를 붙여넣고, HSL을 읽고, 머릿속이나 코드에서 L을 10% 단계로 스윕하십시오. (모든 단계가 동등하게 밝아 보여야 하는 지각 균일 램프를 위해서는 옆에 있는 OKLCH 입력란으로 전환하십시오. HSL 램프는 L이 지각적으로 균일하지 않기 때문에 색조마다 고르지 않게 보입니다.)
런타임 hsl(from ...) 수학을 사용하는 CSS 작성자
최신 CSS는 `color-function-from` 구문을 지원합니다. `hsl(from var(--primary) h s calc(l + 10%))`는 렌더 시점에 `--primary`의 더 밝은 변형을 파생하며, 모든 단계를 미리 계산할 필요가 없습니다. 브랜드 HEX를 붙여넣고, HSL 트리플을 확인하고, 기본 값을 CSS 변수에 떨어뜨리고, 파생 토큰에 런타임 수학을 사용하십시오. Chrome 119+, Safari 17.2+, Firefox 128+에 탑재되어 있습니다.
Tailwind v3 HSL 토큰 세트를 구축하는 프런트엔드 개발자
Tailwind v3는 CSS 변수에 공백 구분 HSL 트리플(`--primary: 217 91% 60%`)로 테마 색상을 저장하고, `tailwind.config.js`에서 `hsl(var(--primary))`를 통해 합성했습니다. 브랜드 HEX를 붙여넣고, HSL을 읽고, 세 숫자(`hsl(...)` 래퍼 없이)를 변수 정의에 떨어뜨리십시오. Tailwind v4는 이후 OKLCH 우선으로 전환했지만, v3 코드베이스는 여전히 HSL 패턴을 사용하며 앞으로 수년간 그럴 것입니다.
HEX를 HSL 컨트롤에 매핑하는 색상 피커 UI 작성자
색조 / 채도 / 명도를 세 개의 별도 슬라이더로 노출하는 색상 피커(고전적인 Adobe 스타일 UI)를 구축한다는 것은 들어오는 HEX를 피커의 세 컨트롤로 매핑한다는 뜻입니다. 여기에 HEX를 붙여넣고, HSL 트리플을 읽고, 세 슬라이더를 프로그램으로 배치하십시오. 변환은 피커가 내부적으로 실행할 것과 동일하며, 본 도구는 디버깅을 위해 중간 값들을 노출합니다.
명암비를 위해 브랜드 색상 명도를 조정하는 접근성 엔지니어
브랜드 색상이 배경에 대해 WCAG 명암비를 통과하지 못할 때, 저렴한 해결책은 비율이 통과할 때까지 L을 끌어올리는 것입니다. H와 S를 바꾸지 않으므로 색상은 여전히 동일한 브랜드 정체성으로 읽힙니다. 브랜드 HEX를 붙여넣고, 명암비 배지를 지켜보고, WCAG와 APCA가 모두 통과할 때까지 머릿속이나 피커의 L 축으로 L을 조정하십시오. HSL 입력란은 사양 문서용 새 L 백분율을 노출하고, HEX 입력란은 스타일시트용 일치하는 코드를 노출합니다.

HEX HSL 수학과 파싱

HEX → RGB → HSL은 두 단계 파이프라인
변환은 RGB를 중간 단계로 거칩니다. 1단계: 채널당 `parseInt(hex.slice(1, 3), 16)`을 통해 HEX를 RGB 정수로 파싱. 2단계: RGB를 0-1로 정규화하고 `max`/`min`/`delta`를 계산한 뒤 CSS Color 4 §6.4 조각별 삼각 공식을 적용. `L = (max + min) / 2`, `S = delta / (1 - |2L - 1|)`, `H = 조각별 * 60`. 두 단계 구조는 본 도구가 중간 RGB 튜플도 함께 노출하는 이유입니다. 표시 비용이 없고 디버깅에 유용합니다.
CSS Color 4 §6.4가 참조 알고리즘 정의
W3C CSS Color 4 명세 §6.4 (`rgb()`에서 `hsl()`로의 알고리즘)는 정규 조각별 수학을 정의합니다. 명도는 max와 min의 중간점, 채도는 `delta / (1 - |2L - 1|)` (delta = 0일 때 S = 0으로 회색에서 0으로 나누기를 피함), 색조는 어느 채널이 max인지에 따른 단계당 60도 삼각 공식입니다. 명세는 또한 가장자리 사례도 처리합니다. 순수 검정(`#000`)은 임의의 0° 색조와 함께 `hsl(0 0% 0%)`을 만들고, 순수 흰색(`#FFF`)은 유사하게 `hsl(0 0% 100%)`을, 순수 회색은 `hsl(0 0% 50%)`을 만듭니다.
색조는 360°에서 둘러싸이고, S와 L은 백분율
HSL의 세 축은 단위가 다릅니다. 색조는 둘러싸기를 가진 0-360 범위의 각 도입니다. `hsl(370 ...)`은 각 위치가 둘러싸이므로 `hsl(10 ...)`으로 해석됩니다. 채도와 명도는 0%에서 100%까지의 백분율로, 둘러싸기가 없습니다. 범위 밖 값은 클립됩니다. CSS Color 4는 turn (`hsl(0.6turn ...)`) 또는 라디안 (`hsl(3.787rad ...)`)으로 표현된 색조도 받아들입니다. 본 도구의 출력은 도 단위를 사용합니다. 디자인 도구 UI와 브랜드 사양 문서에서 가장 흔한 형식이기 때문입니다.
HSL 명도는 지각적으로 균일하지 *않음*
`hsl(120 100% 50%)`의 초록이 `hsl(240 100% 50%)`의 파랑보다 시각적으로 더 밝아 보입니다. 둘 다 명목상 명도가 같지만 그렇습니다. HSL이 sRGB의 감마 특이성을 상속하고 모든 색조에 걸쳐 동일한 L 척도를 사용하기 때문입니다. 이것이 HSL 기반 틴트 램프가 고르지 않게 보이는 이유입니다 (초록 램프의 밝은 끝이 파랑 램프의 밝은 끝보다 더 빨리 올라갑니다). 또한 디자인 시스템들이 램프 생성에 OKLCH로 대거 이주한 이유이기도 합니다. 본 도구는 HSL과 OKLCH를 모두 노출해 선택이 한눈 거리에 있게 합니다.
왕복 안정성을 위한 OKLCH 내부 단일 사실 출처
이 스포크가 HEX → HSL을 구체적으로 타기팅하더라도, 공유된 기반 변환기는 내부적으로 정규 색상을 OKLCH 트리플로 유지합니다. HEX → HSL → RGB → OKLAB → HEX 왕복이 비트 안정적으로 유지됩니다. 레거시 HSL 피벗 변환기는 반올림 오차를 누적하며 몇 번의 변환에 걸쳐 색조가 몇 도씩 드리프트할 수 있습니다. OKLCH 피벗은 또한 색조(hue)를 안정적인 축으로 보존하므로 색조 슬라이더를 드래그해도 회색을 통과해 크로스페이드되는 일이 없습니다. Björn Ottosson의 2020년 OKLAB 논문에 따른 것입니다.
채널 인코딩: 8비트 부호 없음, sRGB 감마 인코딩
HEX 코드는 IEC 61966-2-1(1996)이 정의한 sRGB 색 공간에 8비트 부호 없는 RGB 채널(0-255)을 인코딩합니다. 값은 *감마 인코딩되어* 있습니다. 채널 값과 지각 밝기의 관계가 비선형이며 조각별 sRGB 전송 함수(0 근처의 작은 선형 구간을 가진 대략 2.4 지수)를 따릅니다. HSL은 선형화 단계 없이 이 감마 인코딩된 RGB 값에서 직접 파생됩니다. 이것이 HSL의 지각 균일성 문제의 근본 원인입니다. OKLCH는 먼저 선형화한 뒤 지각 균일 공간으로 다시 매핑합니다. HSL은 그렇지 않습니다.

HEX / HSL 작업 모범 사례

새 코드에는 최신 공백 구분 HSL 구문 사용
CSS Color 4의 `hsl(217 91% 60%)`(공백 구분)과 `hsl(217 91% 60% / 0.5)`(알파용 슬래시)는 2025년 이후 배포되는 코드의 정규 구문입니다. 레거시 콤마 형식 `hsl(217, 91%, 60%)`과 `hsla(217, 91%, 60%, 0.5)`는 여전히 모든 곳에서 지원되지만 CSS Color 4에서는 스타일적으로 권장되지 않습니다. 새 스타일시트에서는 최신 구문을 쓰십시오. `hsla()`는 진정으로 레거시 지원이 필요한 IE 9-11 폴백 컨텍스트용으로만 남겨 두십시오.
HSL이 아닌 OKLCH로 램프 생성
HSL의 명도 축은 지각적으로 균일하지 않습니다. 9단계 L 스윕은 모든 L 값에서 초록 단계가 파랑 단계보다 더 밝아 보이는 램프를 만듭니다. 모든 단계가 동등하게 밝아 보여야 하는 램프(디자인 시스템의 기본 요구)에는 OKLCH에서 생성하십시오. `oklch(0.7 0.15 217)`, `oklch(0.6 0.15 217)` 등. 본 도구는 동일한 HEX에 대해 HSL과 OKLCH를 모두 노출하므로 둘 사이를 전환하는 데 복사 클릭 한 번 거리입니다.
색조와 채도를 잠그고 명도를 스윕
HSL을 틴트/셰이드 작업에 사용할 때는 L 숫자만 바꾸십시오. 램프 전체에서 H와 S는 동일하게 유지하십시오. 색조 드리프트(5°만 되어도)는 램프를 어수선해 보이게 만듭니다. 채도 드리프트는 밝은 끝을 바랜 듯하고 어두운 끝을 탁해 보이게 합니다. 한 번에 한 축이라는 규율이 HSL의 디자이너 친화적 명성을 만들어 줍니다. 그것을 버리면 두 세계의 최악을 얻게 됩니다.
원본 토큰은 HEX, 계산된 변형은 HSL 선호
디자인 토큰 사양을 작성할 때는 HEX(또는 OKLCH)를 정규 형식으로 선호하십시오. 더 간결하고 JSON 또는 YAML에 깔끔하게 들어맞습니다. HSL은 단일 사실 출처 형식보다는 *파생* 토큰의 런타임용으로 더 유용합니다 (`hsl(from var(--primary) h s calc(l + 10%))`). 두 형식은 동일한 색상을 기술합니다. 선택은 토큰이 시스템에서 어떤 역할을 하느냐에 관한 것입니다.
HSL 변형은 기본 HEX와 함께 문서화
`--primary-light: hsl(217 91% 70%)` 같은 CSS 변수를 배포할 때는 기본 HEX를 가리키는 주석을 포함하십시오. `/* base: #3b82f6 → hsl(217 91% 60%), light variant +10% L */`. 여섯 달 뒤 누군가 `--primary-lighter`를 파생하려 할 때, 계산할 기본 색상이 필요한데 HSL 단독으로는 그것을 노출하지 못합니다. HEX + HSL이 함께 있으면 완전한 출처가 보존됩니다.
실시간 색상 결정 공유에 URL 해시 사용
모든 색상 변경은 URL 해시를 `#hex=3b82f6` 형태로 자동 업데이트합니다. URL을 Slack 스레드나 GitHub 이슈에 복사하면, 그것을 여는 모든 사람이 동일한 HSL 트리플의 동일한 색상에 도달합니다. 채팅에 HSL 문자열을 붙여넣는 것보다 더 안정적이며(수신자가 값을 수작업으로 입력할 때 가끔 도를 잘못 치거나 백분율 부호를 빠뜨립니다), 디자인 리뷰 스레드가 "화요일에 논의한 그 파랑"이 아니라 정확한 색상을 참조할 수 있게 해 줍니다. 해시는 서버로 전송되지 않습니다.

자주 묻는 질문

HEX를 HSL로 어떻게 변환하나요?
먼저 `parseInt(hex, 16)`을 통해 HEX를 RGB 정수로 변환하고, 각 채널을 255로 나눠 0-1 범위로 정규화한 뒤, 세 채널에 걸쳐 `max`/`min`/`delta`를 계산하고 CSS Color 4 §6.4의 조각별 삼각 공식을 적용합니다. 명도 = `(max + min) / 2`, 채도 = `delta / (1 - |2L - 1|)`(delta가 0일 때는 0), 색조는 어느 채널이 max인지에 따라 조각별로 계산(색상환 주위 단계당 60°). `#3b82f6`은 `rgb(59 130 246)`으로 파싱된 뒤 `hsl(217 91% 60%)`로 변환됩니다. 본 도구는 입력하는 동안 전체 파이프라인을 실시간으로 실행합니다.
HSL 색상은 무엇인가요?
HSL은 sRGB 색 공간을 세 개의 지각적으로 의미 있는 축으로 재구성한 원통형 형식입니다. 색조(0-360°, 색상환 위의 각 위치 — 0° 빨강, 120° 초록, 240° 파랑), 채도(0-100%, 색채감 — 0% 회색, 100% 완전히 채도 있음), 명도(0-100%, 밝기 — 0% 검정, 50% 순수 색조, 100% 흰색). Alvy Ray Smith가 1978년에 디자이너에게 원시 RGB 채널 주소 지정보다 색상 사고에 더 가까운 좌표계를 제공하기 위해 유도를 발표했습니다. HSL은 2010년 CSS3 이후 CSS에 포함되어 모든 브라우저에 탑재되어 있습니다.
HSL과 HSV의 차이는 무엇인가요?
둘 다 sRGB의 원통형 재구성이며 색조 축은 동일하지만, 세 번째 축을 다르게 다룹니다. HSL의 명도는 0%의 검정에서 50%의 순수 색조를 거쳐 100%의 흰색까지 — 대칭적이라 `hsl(0 100% 50%)`이 순수 빨강이고 `hsl(0 100% 100%)`이 흰색입니다. HSV의 값(Value)은 0%의 검정에서 100%의 순수 색조까지 — 비대칭적이라 `hsv(0 100% 100%)`이 순수 빨강이고 흰색은 채도가 0으로 떨어질 때만 나타납니다. HSL은 디자인 시스템 틴트/셰이드 램프에 더 유용합니다. 50% 중간점이 순수 색상 기준점을 표시하기 때문입니다. HSV는 채도/값 정사각형이 SV 피커 UI에 깔끔하게 매핑되므로 색상 피커에 더 유용합니다.
왜 RGB 대신 HSL을 쓰나요?
세 가지 이유가 있습니다. 첫째, 직관적인 슬라이더 — L을 60%에서 70%로 옮기면 같은 색상의 더 밝은 셰이드가 예측 가능하게 만들어지지만, R을 130에서 150으로 옮기면 덜 예측 가능한 색상 변화가 발생합니다. 둘째, 팔레트 생성 — `hsl(217 91% 60%)`, `hsl(217 91% 70%)`, `hsl(217 91% 80%)`는 숫자 하나만 바꿔 생성한 톤 측면에서 일관된 틴트 램프입니다. RGB로는 세 채널을 함께 편집해야 합니다. 셋째, 런타임 CSS 수학 — 최신 CSS는 `hsl(from var(--primary) h s calc(l + 10%))`을 계산해 기본 토큰으로부터 더 밝은 변형을 파생할 수 있게 해 줍니다. 모든 단계를 미리 계산할 필요 없이 가능합니다. RGB에는 그런 원통형 축 편의가 없습니다.
HSL 값은 어떻게 읽나요?
HSL은 순서대로 세 부분이 있습니다. 색조, 채도, 명도. `hsl(217 91% 60%)`는 색조 = 217°(240° 순수 파랑 영역을 지나 시안 쪽으로 돌아온 깔끔한 파랑), 채도 = 91%(매우 채도가 높으며 거의 회색이 없음), 명도 = 60%(순수 색조 중간점보다 한 단계 밝음)을 뜻합니다. 색조는 도 단위로 표현되므로 백분율 접미사가 없는 유일한 축입니다 — 값은 360°에서 둘러싸이므로 `hsl(370 ...)`는 `hsl(10 ...)`과 동일합니다. 끝의 슬래시 접두 값(있다면)은 0-1 범위의 알파입니다. `hsl(217 91% 60% / 0.5)`는 50% 불투명도의 동일한 색상입니다.
CSS는 HSL을 지원하나요?
네 — HSL은 2010년 CSS3 이후 CSS에 포함되어 IE 9를 포함한 모든 브라우저에 탑재되어 있습니다. 원래 구문은 콤마를 사용했습니다. 불투명용 `hsl(217, 91%, 60%)`, 알파 포함용 `hsla(217, 91%, 60%, 0.5)`. CSS Color 4(2022년부터 W3C 후보 권고안)는 최신 공백 구분 형식을 추가했습니다. `hsl(217 91% 60%)`와 슬래시 접두 알파를 가진 `hsl(217 91% 60% / 0.5)`. 색조는 turn 또는 라디안으로도 표현할 수 있습니다(`hsl(0.6turn 91% 60%)`는 `hsl(217 91% 60%)`과 동일합니다). 레거시와 최신 구문 모두 모든 에버그린 브라우저에서 서로 교환 가능합니다.
HSL의 L은 무엇을 의미하나요?
Lightness(명도)입니다. 색상이 얼마나 밝게 보이는지를 제어하는 0-100% 축으로, 0%는 순수 검정, 100%는 순수 흰색에 매핑됩니다. 중간점(50%)은 순수 색조가 자리하는 곳입니다. `hsl(0 100% 50%)`는 순수 빨강이고, `hsl(0 100% 25%)`는 더 어두운 빨강, `hsl(0 100% 75%)`는 더 밝은 분홍입니다. 명도는 HSV의 비대칭적 값(Value)의 대칭적 대응물입니다. 다만 HSL 명도는 *지각적으로 균일하지 않습니다*. HSL이 sRGB의 감마 특이성을 상속하기 때문에 L=50%의 초록이 L=50%의 파랑보다 시각적으로 더 밝아 보입니다. 지각 균일성을 위해서는 대신 OKLCH를 사용하십시오.
HEX HSL 변환은 얼마나 정확한가요?
HEX → RGB 단계는 비트 단위로 정확합니다(`parseInt(hex, 16)`은 부동소수점 개입 없이 정수를 반환합니다). RGB → HSL 단계는 삼각 함수와 나눗셈을 포함하므로 출력은 부동소수점이며, 본 도구는 표시를 위해 정수 도와 정수 백분율로 반올림합니다. HEX → HSL → HEX 왕복은 채널 단위 하나 이내로 원본 HEX를 복원합니다(H를 정수 도로 표시할 때의 반올림 오차). 무손실 작업을 위해서는 OKLCH가 더 나은 내부 형식입니다. 본 도구는 실제로 내부적으로 OKLCH를 단일 사실 출처로 유지하고 표시 시에 HSL을 파생하므로, 순진하게 HSL을 피벗으로 사용하는 변환기보다 왕복 안정성이 더 좋습니다.