Color Converter

Конвертируйте цвета между форматами HEX, RGB, HSL и HSV с визуальным выбором цвета

Попробовать пример

Нажмите на образец, чтобы открыть выбор цвета

Или отредактируйте любое значение ниже

HEX
RGB
HSL
HSV

Что такое конвертация цветов?

Конвертер цветов переводит значение цвета из одного формата в другой — например, из HEX-триплета (#6366F1) в RGB-кортеж (99, 102, 241) или тройку HSL (239, 84%, 67%). Тот же цвет можно выразить и как тройку HSV (239, 59%, 95%). Каждый формат кодирует один и тот же визуальный цвет с помощью разной математической модели; различные инструменты, языки и API ожидают разные форматы в зависимости от контекста.

HEX и RGB описывают цвет как смесь красного, зелёного и синего света. HEX — это компактное шестнадцатеричное представление тех же трёх каналов 0–255, которые RGB записывает в десятичном виде. HSL (оттенок, насыщенность, светлота) и HSV (оттенок, насыщенность, значение) переставляют ту же информацию в цилиндрическую систему координат, где оттенок — угол на цветовом колесе (0–360 градусов), а насыщенность и светлота или яркость выражаются в процентах. Это делает HSL и HSV более интуитивными для задач вроде создания более светлых или тёмных оттенков одного цвета.

Преобразование между этими форматами требует чётко определённой математики. Спецификация W3C CSS Color Module Level 4 описывает алгоритмы, которые браузеры используют для приведения любого CSS-цвета к триплету sRGB. Формулы детерминированы: заданный ввод всегда даёт одинаковый результат, поэтому конвертация является безопасной, пока значения не округляются и не обрезаются. Большинство выбирателей цвета и инструментов дизайна используют эти же формулы под капотом.

Зачем использовать этот конвертер цветов?

Инструменты дизайна экспортируют цвета в одном формате, CSS требует другой, а вызываемый API ожидает третий. Вместо того чтобы писать код конвертации или искать нужную формулу, вставьте значение и получите все форматы сразу.

Мгновенная конвертация в реальном времени
Введите или выберите цвет — HEX, RGB, HSL и HSV обновятся мгновенно. Никакой кнопки «Отправить», никаких обращений к серверу.
🔒
Обработка без передачи данных
Вся математика конвертации выполняется в вашем браузере. Никакие значения цветов, данные об использовании и куки никуда не отправляются.
🔀
Все четыре формата сразу
Один ввод даёт HEX, RGB, HSL и HSV одновременно. Скопируйте нужный формат одним кликом.
📋
Без регистрации
Откройте страницу и начните конвертацию. Никакой регистрации, никакой почты, никаких ограничений по количеству запросов. Работает офлайн после первой загрузки.

Сценарии использования конвертера цветов

CSS-разработка
Дизайнер передаёт вам HEX-значение из Figma, но ваша библиотека компонентов использует HSL для тем. Конвертируйте значение и вставьте его в CSS custom properties или конфигурацию Tailwind.
Интеграция с backend API
Ваш эндпоинт принимает цвета как RGB-массивы для генерации диаграмм. Конвертируйте HEX-коды бренда из руководства по стилю в целочисленные триплеты, которые ожидает API.
Поддержка дизайн-системы
При документировании дизайн-системы нужно перечислить каждый цветовой токен в HEX для быстрого справочника, RGB для рендеринга на Canvas и HSL для программной генерации оттенков.
QA и визуальное тестирование
Сравнение цвета пикселя на скриншоте (обычно в RGB из DevTools браузера) с ожидаемым HEX-значением из спецификации Figma. Быстрая конвертация подтверждает или выявляет несоответствия.
Визуализация данных
Библиотеки диаграмм D3.js и Chart.js принимают цвета в разных форматах в зависимости от метода. Сконвертируйте один раз и сохраняйте единообразный формат записи во всей конфигурации набора данных.
Изучение теории цвета
Студенты, изучающие компьютерную графику или веб-дизайн, могут увидеть, как один и тот же цвет отображается в HEX, RGB, HSL и HSV. Изменение одного канала и наблюдение за изменением остальных формирует интуицию в понимании связи между цветовыми моделями.

Справочник по форматам цветов

В таблице ниже перечислены пять наиболее распространённых форматов цветов, один и тот же цвет индиго (#6366F1) показан в каждой нотации. HEX и RGB наиболее широко поддерживаются в CSS и JavaScript. HSL предпочтителен для тем, поскольку управлять светлотой и насыщенностью просто. HSV — модель, используемая большинством выбирателей цвета в программах для графического дизайна.

ФорматПример (индиго)КаналыТипичное применение
HEX#6366F16 (or 3/8)CSS, design tools, brand guides
RGBrgb(99, 102, 241)3 (0–255 each)CSS, Canvas API, image processing
HSLhsl(239, 84%, 67%)3 (deg, %, %)CSS, color theming, accessibility tuning
HSVhsv(239, 59%, 95%)3 (deg, %, %)Color pickers, Photoshop, Figma
CMYKcmyk(59%, 58%, 0%, 5%)4 (0–100% each)Print design, prepress workflows

HEX vs RGB vs HSL

Все три формата описывают одно и то же цветовое пространство sRGB. Разница в том, как они представляют данные, что влияет на читаемость и удобство манипулирования в разных контекстах.

HEX
Шестизначная шестнадцатеричная строка (или трёхзначное сокращение). Компактный и универсальный формат в CSS, инструментах дизайна и фирменных руководствах. Сложно читать с первого взгляда: #6366F1 не говорит вам об оттенке. Поддерживает восьмизначную форму (#6366F180) для задания прозрачности.
RGB
Три целых числа от 0 до 255 для каналов красного, зелёного и синего. Нативный формат для Canvas 2D, WebGL и большинства библиотек обработки изображений. Легко манипулировать каналами по отдельности, но для регулировки воспринимаемой яркости нужно менять все три значения одновременно.
HSL
Оттенок (0–360 градусов), насыщенность (0–100%) и светлота (0–100%). Разработан для удобочитаемости человеком. Чтобы сделать цвет светлее, увеличьте L. Чтобы убрать насыщенность, уменьшите S. CSS нативно поддерживает нотацию hsl(), а современные функции CSS color-mix() и синтаксис относительных цветов основаны на ней.

Примеры кода

Конвертация цветов между HEX, RGB и HSL на распространённых языках и в типичных окружениях. В каждом примере используется один и тот же цвет индиго (#6366F1) для удобства сравнения.

JavaScript
// HEX → RGB
function hexToRgb(hex) {
  const n = parseInt(hex.replace('#', ''), 16)
  return [(n >> 16) & 255, (n >> 8) & 255, n & 255]
}
hexToRgb('#6366f1') // → [99, 102, 241]

// RGB → HSL
function rgbToHsl(r, g, b) {
  r /= 255; g /= 255; b /= 255
  const max = Math.max(r, g, b), min = Math.min(r, g, b)
  const l = (max + min) / 2
  if (max === min) return [0, 0, Math.round(l * 100)]
  const d = max - min
  const s = l > 0.5 ? d / (2 - max - min) : d / (max + min)
  let h = 0
  if (max === r) h = ((g - b) / d + (g < b ? 6 : 0)) / 6
  else if (max === g) h = ((b - r) / d + 2) / 6
  else h = ((r - g) / d + 4) / 6
  return [Math.round(h * 360), Math.round(s * 100), Math.round(l * 100)]
}
rgbToHsl(99, 102, 241) // → [239, 84, 67]
Python
import colorsys

# HEX → RGB
def hex_to_rgb(hex_str: str) -> tuple[int, int, int]:
    h = hex_str.lstrip('#')
    return tuple(int(h[i:i+2], 16) for i in (0, 2, 4))

hex_to_rgb('#6366f1')  # → (99, 102, 241)

# RGB → HSL (colorsys uses HLS order)
r, g, b = 99 / 255, 102 / 255, 241 / 255
h, l, s = colorsys.rgb_to_hls(r, g, b)
print(f"hsl({h * 360:.0f}, {s * 100:.0f}%, {l * 100:.0f}%)")
# → hsl(239, 84%, 67%)

# RGB → HSV
h, s, v = colorsys.rgb_to_hsv(r, g, b)
print(f"hsv({h * 360:.0f}, {s * 100:.0f}%, {v * 100:.0f}%)")
# → hsv(239, 59%, 95%)
Go
package main

import (
	"fmt"
	"math"
)

func hexToRGB(hex string) (int, int, int) {
	var r, g, b int
	fmt.Sscanf(hex, "#%02x%02x%02x", &r, &g, &b)
	return r, g, b
}

func rgbToHSL(r, g, b int) (int, int, int) {
	rf, gf, bf := float64(r)/255, float64(g)/255, float64(b)/255
	max := math.Max(rf, math.Max(gf, bf))
	min := math.Min(rf, math.Min(gf, bf))
	l := (max + min) / 2
	if max == min {
		return 0, 0, int(math.Round(l * 100))
	}
	d := max - min
	s := d / (2 - max - min)
	if l <= 0.5 {
		s = d / (max + min)
	}
	var h float64
	switch max {
	case rf: h = (gf - bf) / d; if gf < bf { h += 6 }
	case gf: h = (bf - rf) / d + 2
	case bf: h = (rf - gf) / d + 4
	}
	return int(math.Round(h / 6 * 360)), int(math.Round(s * 100)), int(math.Round(l * 100))
}

func main() {
	r, g, b := hexToRGB("#6366f1")
	fmt.Println(r, g, b)         // → 99 102 241
	fmt.Println(rgbToHSL(r, g, b)) // → 239 84 67
}
CSS
/* Modern CSS supports multiple color formats natively */

/* HEX notation */
.button { color: #6366f1; }

/* RGB functional notation */
.button { color: rgb(99 102 241); }

/* HSL — easier to adjust lightness and saturation */
.button { color: hsl(239 84% 67%); }

/* CSS Color Level 4: relative color syntax (Chrome 119+) */
.button-light { color: hsl(from #6366f1 h s calc(l + 20%)); }

/* color-mix() for tinting without manual conversion */
.button-muted { color: color-mix(in srgb, #6366f1 70%, white); }

Часто задаваемые вопросы

В чём разница между HSL и HSV?
Оба формата используют оттенок и насыщенность, но по-разному определяют яркость. HSL использует светлоту, где 50% — это чистый цвет, 0% — чёрный, 100% — белый. HSV использует значение (яркость), где 100% — чистый цвет, 0% — чёрный. В HSV нет прямой точки белого. На практике HSL применяется в CSS и веб-разработке, тогда как HSV лежит в основе большинства выбирателей цвета в программах для дизайна — Photoshop и Figma.
Как конвертировать HEX в RGB на JavaScript?
Разберите HEX-строку в целое число с помощью parseInt(hex, 16), затем извлеките каждый канал побитовым сдвигом: (n >> 16) & 255 для красного, (n >> 8) & 255 для зелёного и n & 255 для синего. Это работает для любой шестизначной HEX-строки с символом # или без него. Для трёхзначного сокращения вроде #F0F сначала раскройте каждую цифру (FF00FF), а затем выполняйте разбор.
Можно ли использовать HSL напрямую в CSS?
Да. Все современные браузеры поддерживают hsl() и hsla() в CSS. Начиная с CSS Color Level 4 синтаксис выглядит как hsl(239 84% 67%) с пространственно-разделёнными значениями (запятые по-прежнему допустимы). Можно также добавить прозрачность четвёртым параметром: hsl(239 84% 67% / 0.5). Safari, Chrome, Firefox и Edge поддерживают этот синтаксис.
Является ли конвертация цветов потерями?
Математически — нет. HEX, RGB, HSL и HSV описывают одно и то же цветовое пространство sRGB, и конвертации обратимы. На практике могут возникать небольшие погрешности округления, поскольку HEX ограничен 256 шагами на канал, а проценты HSL обычно округляются до целых чисел. Многократная конвертация туда и обратно может накапливать погрешности в 1–2 единицы.
Что такое восьмизначный HEX-формат?
Восьмизначный HEX-формат добавляет два цифры для задания прозрачности к стандартному шестизначному HEX-цвету. Например, #6366F180 означает тот же цвет индиго с прозрачностью 50% (0x80 = 128, примерно 50% от 255). CSS поддерживает эту нотацию во всех современных браузерах. Краткая форма — 4 цифры, например #63F8.
Почему цвет выглядит иначе на другом мониторе?
Отображение цвета зависит от цветового профиля монитора, яркости и калибровки гаммы. Два экрана могут по-разному отображать одно и то же значение sRGB (#6366F1), если их цветовые профили расходятся. Инструменты конвертации цветов работают в определённом цветовом пространстве (обычно sRGB) и выдают математически корректный результат. Воспринимаемые различия — это проблема калибровки дисплея, а не ошибка конвертации.
Как выбрать более светлый или тёмный оттенок цвета?
Конвертируйте цвет в HSL и отрегулируйте канал L (светлота). Увеличение L к 100% даёт более светлые оттенки; уменьшение к 0% — более тёмные. Оттенок и насыщенность при этом не меняются. В CSS это можно сделать напрямую: hsl(239 84% 80%) — более светлая версия hsl(239 84% 67%). Современный CSS также предлагает color-mix(in srgb, #6366F1, white 30%) для того же эффекта без ручной конвертации.