Конвертер HEX в HSL — это небольшая утилита, которая превращает HEX-код цвета (`#3b82f6`) в цилиндрическую тройку Hue / Saturation / Lightness, кодирующую тот же цвет sRGB (`hsl(217 91% 60%)`). HEX-коды — это лаконичные строки по основанию 16, которые дизайнеры и разработчики вставляют между Figma, Sketch, Photoshop, PDF-брендбуками и CSS-таблицами стилей — три 8-битных канала, упакованных в 6-символьную форму `#RRGGBB`, привязанную к цветовому пространству sRGB, определённому IEC 61966-2-1 в 1996 году. HSL — это цилиндрическое преобразование того же цветового пространства на три более дружественные дизайнерам оси: угол оттенка на цветовом круге, процент хроматической насыщенности и процент светлоты. Разработчики постоянно конвертируют HEX → HSL: чтобы определить брендовый цвет как CSS-переменную, а затем составить более светлые или тёмные оттенки, корректируя только L, чтобы кормить UI пипетки, отображающий Hue и SL как отдельные элементы управления, чтобы генерировать шкалы светлых и тёмных оттенков для дизайн-системы или чтобы выполнить рантайм-математику CSS-переменных через `hsl(from var(--primary) h s calc(l + 10%))` для производных токенов темы. Этот инструмент выполняет конвертацию вживую по мере ввода, без кнопки «Convert», на которую нужно нажимать, и поднимает каждый другой распространённый формат цвета (RGB, OKLCH, OKLAB, HSV, HWB, CMYK, плюс 148 именованных CSS-цветов) рядом с выводом HSL бесплатно.
**Сам формат HSL заслуживает более пристального взгляда.** HSL = Hue (0–360°), Saturation (0–100%), Lightness (0–100%). Hue — это угловая позиция на цветовом круге — 0° красный, 60° жёлтый, 120° зелёный, 180° циан, 240° синий, 300° маджента, и 360° оборачивается обратно к красному. Saturation — это хроматическая интенсивность от 0% (ахроматический серый) до 100% (полностью хроматический, без серого содержания). Lightness — это яркость от 0% (чистый чёрный, независимо от hue или saturation) через 50% (чистый hue на полной chroma) до 100% (чистый белый, независимо от hue или saturation). Элви Рэй Смит опубликовал исходный вывод в 1978 году как часть раннего толчка компьютерной графики, чтобы дать дизайнерам координатные системы ближе к их когнитивной модели цвета, чем сырая адресация каналов RGB. Модель присутствует в CSS со времён CSS3 (2010) и поставляется в каждом браузере вплоть до IE 9. Исходный синтаксис CSS использовал запятые: `hsl(217, 91%, 60%)` для непрозрачного, `hsla(217, 91%, 60%, 0.5)` для цвета с альфой. CSS Color 4 (W3C Candidate Recommendation с 2022 года) добавил современную форму через пробел: `hsl(217 91% 60%)` и `hsl(217 91% 60% / 0.5)` с альфой через слэш — та же форма синтаксиса, что и у других функциональных нотаций CSS Color 4 (`rgb()`, `lab()`, `oklch()`, `color()`). Hue также можно выразить в turns (`hsl(0.6turn 91% 60%)`) или radians (`hsl(3.787rad 91% 60%)`), все эквивалентны канонической форме градусов. Каждый вечнозелёный браузер парсит каждую синтаксическую разновидность; инструмент по умолчанию выдаёт современную форму через пробел.
Математика конвертации идёт чисто в обоих направлениях. **HEX → HSL** — это двухшаговый конвейер. Сначала распарсите 6-значный HEX `#RRGGBB` как три 2-значных числа по основанию 16 через `parseInt(hex.slice(1, 3), 16)` и т. д., чтобы получить целые каналы RGB в 0–255. Во-вторых, нормализуйте каждый канал к 0–1 делением на 255, затем вычислите `max = Math.max(r, g, b)`, `min = Math.min(r, g, b)`, `delta = max - min`. Lightness — это среднее max и min: `L = (max + min) / 2`. Saturation условна по lightness: когда 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|)` (с S = 0, когда delta = 0). Hue — кусочно по тому, какой канал — 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 и закодированный в HEX.
**Почему HSL по-прежнему полезен.** Интуитивные слайдеры — корректировка L предсказуемо осветляет или затемняет без нарушения идентичности hue, тогда как корректировка канала RGB даёт менее предсказуемый сдвиг цвета. Рантайм-математика CSS — современные браузеры поддерживают `hsl(from var(--primary) h s calc(l + 10%))`, чтобы выводить токены темы во время рендера. Когниция дизайнеров — дизайнеры, выросшие на пипетках HSV, рассуждают о цвете в терминах hue + chroma, даже когда файл поставляется в HEX. **Проблема HSL** в том, что её ось Lightness не перцептивно равномерна — зелёный при L=50% выглядит видимо ярче, чем синий при L=50%, потому что HSL наследует гамма-причуды sRGB и обрабатывает каждый hue как эквивалентный по шкале L. Когда вам нужна перцептивная равномерность (генерация палитры, где каждый шаг должен выглядеть одинаково ярким, вычисление токенов тёмного режима, которое не сделает случайно синий текст труднее читаемым, чем зелёный), обращайтесь к OKLCH — тот же инструмент поднимает оба, поэтому выбор в одном взгляде.
Рабочий процесс HEX → HSL этого инструмента — это одно направление семейства из 5 спиц, которые все используют один и тот же базовый унифицированный конвертер цветов. Специализированный унифицированный конвертер цветов — это хаб: он показывает все 9 форматов одновременно редактируемыми и это правильный инструмент, когда вашему рабочему процессу нужно больше, чем HEX и HSL. Однонаправленные спицы целятся в конкретные поисковые интенты Google: конвертер HEX в RGB для направления canvas и аппаратуры, конвертер RGB в HEX для обратного, конвертер HEX в OKLCH для современных перцептивно-равномерных дизайн-систем (Tailwind v4 и shadcn оба сейчас по умолчанию используют OKLCH) и конвертер HEX в CMYK для приближений подготовки к печати. Все пять спиц и хаб используют один и тот же парсинговый движок и ту же математику конвертации, поэтому результаты гарантированно идентичны во всём семействе. Каждая конвертация выполняется локально в браузере — ваши HEX-коды никогда не загружаются, никогда не логируются и ноль сетевых запросов срабатывает по мере ввода. Проверьте в DevTools.