Skip to content

Convertisseur HEX vers HSL

Convertissez n'importe quelle couleur hex en HSL dans votre navigateur — hex à 3, 6 et 8 chiffres avec alpha pris en charge. Gratuit, instantané, sans inscription, vos couleurs ne quittent jamais la page.

Sans pistage Fonctionne dans le navigateur Gratuit
Toute la conversion de couleurs se fait localement dans votre navigateur. Aucune donnée n'est envoyée à un serveur.
Gamut chromatique: sRGB Display P3 Rec2020
Contraste contre:
AA AA-Lg AAA AAA-Lg · APCA Lc
Simulation de daltonisme (8 types)
Protanopie (aveugle au rouge)
Deutéranopie (aveugle au vert)
Tritanopie (aveugle au bleu)
Achromatopsie (totale)
Protanomalie (faible au rouge)
Deutéranomalie (faible au vert)
Tritanomalie (faible au bleu)
Achromatomalie (partielle)
Teintes claires / Teintes foncées / Tons / Harmonies

Teintes claires

Teintes foncées

Tons

Harmonies

Copier comme code
Référence des couleurs courantes
Revu pour la conformité à CSS Color 4 §6.4, la prise en charge des formes hex à 3/4/6/8 chiffres, l'exactitude du décodage de paire alpha et la stabilité des allers-retours entre HEX et HSL sur les plages de teinte 0-360° et S/L 0-100 %. — Équipe d'ingénierie Go Tools · 27 mai 2026

Qu'est-ce qu'un convertisseur HEX vers HSL ?

Un convertisseur hex vers HSL est un petit utilitaire qui transforme un code couleur hex (`#3b82f6`) en le triplet cylindrique Hue / Saturation / Lightness (teinte / saturation / clarté perceptuelle) qui encode la même couleur sRGB (`hsl(217 91% 60%)`). Les codes hex sont la chaîne base-16 laconique que designers et développeurs copient-collent entre Figma, Sketch, Photoshop, les PDF de chartes de marque et les feuilles de style CSS — trois canaux 8 bits empaquetés dans une forme `#RRGGBB` de 6 caractères, ancrée à l'espace colorimétrique sRGB défini par IEC 61966-2-1 en 1996. HSL est une refonte cylindrique de ce même espace colorimétrique sur trois axes plus amicaux pour le designer : un angle de teinte sur la roue chromatique, un pourcentage de saturation chromatique et un pourcentage de clarté perceptuelle. Les développeurs convertissent HEX → HSL constamment : pour définir une couleur de marque comme variable CSS puis composer des teintes claires ou foncées en ajustant uniquement L, pour alimenter une UI de sélecteur de couleur qui affiche Teinte et SL comme contrôles séparés, pour générer des rampes de teintes claires et foncées pour un système de design, ou pour effectuer des mathématiques de variables CSS au moment de l'exécution via `hsl(from var(--primary) h s calc(l + 10%))` pour des jetons de thème dérivés. Cet outil exécute la conversion en direct au fil de la saisie, sans bouton « Convertir » à cliquer, et expose tous les autres formats de couleur courants (RGB, OKLCH, OKLAB, HSV, HWB, CMYK, plus les 148 couleurs CSS nommées) aux côtés de la sortie HSL gratuitement.

**Le format HSL lui-même mérite un examen plus attentif.** HSL = Teinte (0-360°), Saturation (0-100 %), Clarté perceptuelle (0-100 %). La teinte est la position angulaire sur la roue chromatique — 0° est rouge, 60° jaune, 120° vert, 180° cyan, 240° bleu, 300° magenta, et 360° boucle au rouge. La saturation est l'intensité chromatique de 0 % (gris achromatique) à 100 % (entièrement chromatique sans contenu gris). La clarté perceptuelle est la luminosité de 0 % (noir pur, quelle que soit la teinte ou la saturation) à travers 50 % (la teinte pure à plein chroma) jusqu'à 100 % (blanc pur, quelle que soit la teinte ou la saturation). Alvy Ray Smith a publié la dérivation originale en 1978 dans le cadre des premiers efforts en infographie pour donner aux designers des systèmes de coordonnées plus proches de leur modèle cognitif de la couleur que l'adressage RGB brut par canal. Le modèle est dans CSS depuis CSS3 (2010) et est livré dans tous les navigateurs jusqu'à IE 9. La syntaxe CSS originale utilisait des virgules : `hsl(217, 91%, 60%)` pour les couleurs opaques, `hsla(217, 91%, 60%, 0.5)` pour celles portant de l'alpha. CSS Color 4 (Candidate Recommendation du W3C depuis 2022) a ajouté une forme moderne séparée par espaces : `hsl(217 91% 60%)` et `hsl(217 91% 60% / 0.5)` avec alpha préfixé par barre oblique — même forme syntaxique que les autres notations fonctionnelles de CSS Color 4 (`rgb()`, `lab()`, `oklch()`, `color()`). La teinte peut aussi s'exprimer en tours (`hsl(0.6turn 91% 60%)`) ou en radians (`hsl(3.787rad 91% 60%)`), toutes équivalentes à la forme canonique en degrés. Chaque navigateur evergreen analyse chaque variante syntaxique ; l'outil émet la forme moderne séparée par espaces par défaut.

Les mathématiques de conversion fonctionnent proprement dans les deux directions. **HEX → HSL** est un pipeline en deux étapes. Premièrement, analysez le hex à 6 chiffres `#RRGGBB` comme trois nombres base-16 à 2 chiffres via `parseInt(hex.slice(1, 3), 16)` etc. pour obtenir des canaux RGB entiers dans 0-255. Deuxièmement, normalisez chaque canal à 0-1 en divisant par 255, puis calculez `max = Math.max(r, g, b)`, `min = Math.min(r, g, b)`, `delta = max - min`. La clarté perceptuelle est la moyenne de max et min : `L = (max + min) / 2`. La saturation est conditionnelle à la clarté perceptuelle : quand L ≤ 0,5, `S = delta / (max + min)` ; quand L > 0,5, `S = delta / (2 - max - min)`. De manière équivalente sous la forme CSS Color 4 §6.4, `S = delta / (1 - |2L - 1|)` (avec S = 0 quand delta = 0). La teinte est par morceaux selon quel canal est max : quand R est max, `H = ((G - B) / delta) % 6` ; quand G est max, `H = (B - R) / delta + 2` ; quand B est max, `H = (R - G) / delta + 4` ; multipliez par 60 pour passer en degrés, ajoutez 360 si négatif. L'inverse (HSL → HEX, via RGB) utilise l'auxiliaire `f(n) = L - a * max(-1, min(k-3, 9-k, 1))` où `a = S * min(L, 1-L)` et `k = (n + H/30) mod 12`, appliqué avec n = 0, 8, 4 pour produire R, G, B respectivement, puis mis à l'échelle 0-255 et encodé en hex.

**Pourquoi HSL est toujours utile.** Curseurs intuitifs — ajuster L éclaircit ou assombrit prévisiblement sans casser l'identité de teinte, tandis qu'ajuster un canal RGB produit un décalage de couleur moins prévisible. Mathématiques CSS au moment de l'exécution — les navigateurs modernes prennent en charge `hsl(from var(--primary) h s calc(l + 10%))` pour dériver des jetons de thème au moment du rendu. Cognition designer — les designers élevés aux sélecteurs de couleur HSV raisonnent sur la couleur en termes de teinte + chroma même quand le fichier livre du hex. **Le problème de HSL** est que son axe de clarté perceptuelle n'est pas perceptuellement uniforme — un vert à L=50 % paraît visiblement plus lumineux qu'un bleu à L=50 % parce que HSL hérite des bizarreries gamma de sRGB et traite chaque teinte comme équivalente sur l'échelle L. Lorsque vous avez besoin d'uniformité perceptuelle (génération de palette où chaque palier doit paraître également lumineux, calcul de jetons de mode sombre qui ne rend pas accidentellement le texte bleu plus difficile à lire que le vert), tournez-vous plutôt vers OKLCH — le même outil expose les deux, donc le choix est à un coup d'œil près.

Le flux HEX → HSL de cet outil est une direction d'une famille de 5 branches qui partagent toutes le même convertisseur de couleurs unifié sous-jacent. Le convertisseur de couleurs unifié dédié est le hub — il affiche les 9 formats simultanément modifiables et c'est le bon outil quand votre flux a besoin de plus que hex et HSL. Les branches à sens unique ciblent des intentions de recherche Google spécifiques : le convertisseur hex vers RGB pour la direction canvas-et-matériel, le convertisseur RGB vers hex pour l'inverse, le convertisseur hex vers OKLCH pour les systèmes de design modernes perceptuellement uniformes (Tailwind v4 et shadcn utilisent désormais OKLCH par défaut), et le convertisseur hex vers CMYK pour les approximations de préparation à l'impression. Les cinq branches et le hub partagent le même moteur de parsing et les mêmes mathématiques de conversion, donc les résultats sont garantis identiques sur toute la famille. Chaque conversion s'exécute localement dans votre navigateur — vos codes hex ne sont jamais téléversés, jamais journalisés, et zéro requête réseau ne se déclenche pendant que vous saisissez. Vérifiez dans DevTools.

// 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 }

Fonctionnalités clés

Les cinq formes de hex analysées à l'identique

3 chiffres `#F73`, alpha à 4 chiffres `#F738`, 6 chiffres `#3b82f6`, alpha à 8 chiffres `#FF573380`, plus la variante sans `#` pour chacune. Le parseur les normalise toutes vers la même couleur interne avant de dériver HSL, donc vous pouvez coller la forme qu'utilise votre source sans développer manuellement le raccourci d'abord. La casse est également normalisée — `#3b82f6` et `#3B82F6` produisent une sortie HSL identique.

Sortie HSL en syntaxe moderne séparée par espaces

Le champ HSL expose la valeur dans la forme moderne de CSS Color 4 : `hsl(217 91% 60%)` pour les couleurs opaques, `hsl(217 91% 60% / 0.5)` pour celles portant de l'alpha. Les deux formes fonctionnent dans tous les navigateurs evergreen (Chrome 65+, Safari 13+, Firefox 52+). La forme à virgules héritée `hsl(217, 91%, 60%)` est à un remplacement mécanique près si votre cible en a besoin ; la syntaxe moderne est préférée dans le nouveau code parce qu'elle s'aligne avec les autres syntaxes fonctionnelles de CSS Color 4.

Source de vérité OKLCH, pas pivot HSL

Bien que cette branche cible spécifiquement HEX → HSL, le convertisseur sous-jacent partagé conserve la couleur canonique sous forme de triplet OKLCH en interne. Cela signifie que les allers-retours HEX → HSL → RGB → OKLAB → HEX se font sans dérive en virgule flottante par étape ; les convertisseurs hérités qui routent via HSL comme pivot accumulent une erreur d'arrondi et peuvent faire dériver la teinte de plusieurs degrés sur quelques conversions. Le pivot OKLCH garde tous les autres formats mathématiquement ancrés au même point source.

Canal alpha décodé proprement

Le hex à 8 et 4 chiffres avec alpha (`#RRGGBBAA` et `#RGBA`) sont analysés correctement. La paire de fin correspond à un flottant alpha 0-1 : `00` → 0, `80` → 0,502, `FF` → 1. La sortie utilise par défaut la syntaxe à barre oblique de CSS Color 4 (`hsl(217 91% 60% / 0.5)`) ; la forme héritée `hsla(217, 91%, 60%, 0.5)` est à un remplacement près. Utile pour la migration de jetons de design où les valeurs alpha peuvent avoir été enfouies dans des codes hex à 8 chiffres.

Huit autres formats visibles simultanément

Le même hex que vous collez pilote aussi RGB, HSV, HWB, OKLCH, OKLAB, CMYK et la couleur CSS nommée la plus proche — tous visibles d'un coup d'œil sur la même page. Vous n'êtes jamais enfermé dans hex → HSL seulement. Si un coéquipier a besoin du triplet OKLCH pour un jeton Tailwind v4 (où l'uniformité perceptuelle compte plus que le L à gamma capricieux de HSL), du nom de couleur le plus proche pour la prose de documentation ou du tuple RGB pour un appel canvas, les valeurs sont déjà là avec leurs propres boutons Copier.

Contraste WCAG + APCA intégré

Passez un hex et la ligne de contraste le note immédiatement contre le blanc et le noir en utilisant WCAG 2.1 (plancher réglementaire : 4,5:1 pour le texte courant, 7:1 pour AAA) et APCA Lc (successeur proposé pour WCAG 3 : cible `|Lc| ≥ 75` pour le texte courant). Utile quand vous venez de convertir un hex de marque en HSL et voulez vérifier que la couleur résultante (ou une variante ajustée en clarté) est effectivement lisible comme couleur de texte courant avant de la livrer.

Copier en CSS / Tailwind v4 / SwiftUI / Compose / Flutter

Sous le sélecteur, la section Copier comme code transforme la couleur actuelle en extraits prêts à coller pour cinq plateformes : propriété personnalisée CSS (`--color-brand: hsl(217 91% 60%)`), jeton `@theme` Tailwind v4, littéral SwiftUI `Color(hue:saturation:brightness:)`, constante Jetpack Compose `Color.hsl(217f, 0.91f, 0.60f)`, Flutter `HSLColor.fromAHSL(...)`. La syntaxe exacte qu'attend chaque plateforme, prête à déposer dans un catalogue d'asset iOS, un fichier de thème Android ou un `ThemeData` Flutter.

100 % dans le navigateur — pas de téléversement, pas de pistage

Tout le parsing hex, la conversion HSL, le scoring de contraste et la génération de palette s'exécutent localement dans votre navigateur. Vos codes hex ne sont jamais transmis, jamais journalisés sur un serveur, jamais analysés. Zéro requête réseau pendant que vous saisissez — vérifiez dans DevTools. Sûr pour les palettes de marque non annoncées, les jetons de design internes, les maquettes en brouillon sous NDA et tout autre travail de couleur confidentiel.

Hash d'URL partageable pour la couleur exacte

La couleur actuelle s'encode automatiquement dans le hash d'URL sous la forme `#hex=3b82f6` à chaque changement. Copiez l'URL, collez-la dans un fil Slack ou un ticket GitHub, et quiconque l'ouvre atterrit sur le même hex avec le même triplet HSL. Le hash ne vit que dans votre barre d'adresse et n'est jamais transmis au serveur (les navigateurs n'incluent pas les fragments d'URL dans les requêtes HTTP), donc même partager le lien ne fuite pas la couleur vers un tiers.

Alternatives au convertisseur HEX vers HSL

RapidTables Hex to HSL

outil navigateur

Le résultat Google par défaut pour « hex to hsl » — un formulaire à sens unique avec hex en entrée, HSL en sortie, aucun autre format visible. Utile pour des recherches ponctuelles quand vous arrivez depuis la recherche. Manque OKLCH, vérification de contraste, détection de gamut chromatique, gestion de l'alpha et la vue multi-format simultanée. Cet outil l'emporte sur chaque axe sauf le cas de conversion unique minimaliste.

ColorHexa

outil navigateur

Pages SEO par couleur de longue date avec métadonnées approfondies : conversions, palettes, harmonies, dégradés pour chaque hex que vous interrogez. L'UI est datée (début des années 2010), pas de prise en charge OKLCH, pas de contraste APCA, pas de gestion gamut chromatique large. Forte pour la découverte SEO d'un hex spécifique via Google ; plus faible pour les flux de conversion actifs où saisir dans une UX à champs unifiés est plus rapide.

Calculateur HSL W3Schools

outil navigateur

Bascule HEX/RGB/HSL accessible aux débutants sur une page axée enseignement, omniprésente dans les résultats de recherche. Pas d'OKLCH, pas de gestion de l'alpha au-delà de hsla, pas de fonctionnalités avancées. Utile comme référence à côté du contenu explicatif de W3Schools. Cet outil l'emporte sur chaque autre axe : plus de formats, mathématiques perceptuelles, fonctionnalités gamut chromatique + contraste + CVD, export de code moderne pour Tailwind v4 / SwiftUI / Compose / Flutter.

Sélecteur de couleur DevTools du navigateur

fonctionnalité navigateur intégrée

Les DevTools de Chrome, Firefox et Safari livrent tous un sélecteur de couleur qui bascule entre HEX, RGB et HSL en ligne quand vous cliquez sur un échantillon de couleur dans le panneau CSS. Gratuit, sans installation, toujours disponible. Manque OKLCH, manque les URL partageables, manque l'export de code pour les plateformes non web (SwiftUI, Compose). Tournez-vous vers les DevTools quand vous déboguez déjà du CSS ; tournez-vous vers cet outil quand vous avez besoin d'une sortie inter-plateforme.

HSL Color Picker par Mothereff

outil navigateur

Un sélecteur HSL ciblé avec curseurs teinte/saturation/clarté perceptuelle en direct et une sortie hex. UI minimale, bon pour l'exploration HSL rapide. Manque OKLCH et la grille de formats plus large ; pas de fonctionnalités de contraste ou de gamut chromatique. Utile comme outil ciblé HSL uniquement ; cet outil couvre le même flux plus 8 autres vues de format et les vérifications perceptuelles.

ConvertingColors

outil navigateur

Pages SEO par couleur couvrant de nombreux espaces (HEX, RGB, HSL, HSV, CMYK, XYZ, CIELAB). Manque la prise en charge OKLCH moderne et l'UX d'édition à champs unifiés. Les pages de contenu auto-générées ressemblent à des fermes de contenu mais les données de conversion sont correctes. Bon pour fouiller les métadonnées de couleurs individuelles via Google ; cet outil est plus rapide pour les flux actifs.

Exemples HEX vers HSL

Définition de variable CSS pour une couleur de marque

#3b82f6

Sortie HSL : `hsl(217 91% 60%)`. Le flux canonique pour un système de design bâti sur HSL : définissez la marque comme `--primary: hsl(217 91% 60%)` une fois, puis composez des teintes claires en ajustant uniquement le pourcentage L — `hsl(217 91% 70%)` pour une teinte claire de survol, `hsl(217 91% 80%)` pour un état désactivé, `hsl(217 91% 90%)` pour un remplissage de fond subtil. La teinte et la saturation restent verrouillées, donc la famille se lit comme une rampe cohérente. Les feuilles de style basées sur RGB exigent trois modifications de canal coordonnées par palier ; HSL n'en exige qu'une.

Designer traduisant une couleur Figma vers un sélecteur HSL

#FF5733

Sortie HSL : `hsl(11 100% 60%)`. Les designers qui raisonnent sur la couleur en termes de teinte + saturation + clarté perceptuelle (le modèle cognitif que Munsell a formalisé en 1905) veulent souvent le triplet HSL même quand le fichier source de vérité livre du hex. Teinte = 11° place cette couleur du côté rouge du quartier orange ; saturation = 100 % signifie que le canal est entièrement chromatique ; clarté perceptuelle = 60 % se situe un cran au-dessus du point médian. Coller le hex Figma une fois produit le HSL correspondant, prêt à déposer dans le sélecteur mental du designer sans devinette manuelle sur la roue chromatique.

Balayage rapide de clarté pour une palette

#3b82f6

Sortie HSL : `hsl(217 91% 60%)`. Avec le triplet HSL en main, générer une rampe de teintes claires est un balayage à une dimension : faites pivoter L à 70 % pour `hsl(217 91% 70%)`, 80 % pour `hsl(217 91% 80%)`, 90 % pour `hsl(217 91% 90%)` pour grimper vers le blanc ; baissez à 50 %, 40 %, 30 % pour des teintes foncées. La rampe complète de 9 paliers émerge en changeant un seul nombre. Les teintes claires et foncées restent tonalement apparentées parce que la teinte et la saturation restent constantes — l'astuce que les anciens systèmes de design utilisaient avant qu'OKLCH ne rende les rampes perceptuellement uniformes bon marché.

Hex à 8 chiffres avec alpha → hsla()

#FF573380

Sortie HSL : `hsl(11 100% 60% / 0.5)`. La dernière paire (`80`) se décode comme `128/255 ≈ 0,502`, exposée comme canal alpha via la syntaxe à barre oblique de CSS Color 4. La forme héritée équivalente est `hsla(11, 100%, 60%, 0.5)`, prise en charge dans tous les navigateurs depuis IE 9 et attendue par les anciens préprocesseurs. Le hex à 8 chiffres avec alpha est arrivé nativement dans tous les navigateurs evergreen en 2018 ; auparavant, l'alpha devait passer explicitement par la fonction `hsla()`.

Conversions HEX → HSL courantes

Table de référence des 10 codes hex les plus convertis et leurs équivalents HSL — primaires pures, secondaires pures et deux couleurs de marque réelles de la palette Tailwind.

Noir

#000000 hsl(0 0% 0%)

Noir pur. Clarté perceptuelle à 0 % — l'absence de lumière émise. La teinte et la saturation sont conventionnellement à 0 pour les gris.

#000000 hsl(0 0% 0%)

Le noir pur à l'écran est rarement le bon choix de design — essayez `hsl(0 0% 7%)` ou une clarté perceptuelle OKLCH de 0,1-0,15 pour un texte courant plus doux.

Besoin d'une sortie perceptuellement uniforme à la place ? Essayez le convertisseur hex vers OKLCH dédié — chaque palier L paraît également lumineux sur toutes les teintes, contrairement à HSL.

Blanc

#FFFFFF hsl(0 0% 100%)

Blanc pur. Clarté perceptuelle à 100 % — la couleur sRGB la plus lumineuse possible. La teinte et la saturation sont conventionnellement à 0 pour les gris.

#FFFFFF hsl(0 0% 100%)

Les fonds blancs purs peuvent produire de la fatigue oculaire dans des environnements sombres — essayez `hsl(0 0% 98%)` ou OKLCH 0,98 pour des alternatives plus chaudes.

Besoin d'une sortie perceptuellement uniforme à la place ? Essayez le convertisseur hex vers OKLCH dédié — chaque palier L paraît également lumineux sur toutes les teintes, contrairement à HSL.

Rouge

#FF0000 hsl(0 100% 50%)

Rouge pur. Teinte à 0° (la position de départ de la roue), saturation entièrement chromatique, clarté perceptuelle au point médian où vivent les teintes pures.

#FF0000 hsl(0 100% 50%)

Le rouge pur est très saturé et tient rarement dans une palette de marque — la plupart des couleurs de marque « rouge » sont plus proches de `hsl(0 73% 50%)` (#DC2626).

Besoin d'une sortie perceptuellement uniforme à la place ? Essayez le convertisseur hex vers OKLCH dédié — chaque palier L paraît également lumineux sur toutes les teintes, contrairement à HSL.

Vert

#00FF00 hsl(120 100% 50%)

Vert pur. Teinte à 120° (un tiers du tour de la roue), saturation entièrement chromatique, clarté perceptuelle à 50 %. Couleur CSS nommée `lime`.

#00FF00 hsl(120 100% 50%)

Le mot-clé CSS `green` se résout à #008000 (hsl(120 100% 25%)), pas à #00FF00 — source de confusion fréquente. Utilisez `lime` pour le hsl(120 100% 50%) pur.

Besoin d'une sortie perceptuellement uniforme à la place ? Essayez le convertisseur hex vers OKLCH dédié — chaque palier L paraît également lumineux sur toutes les teintes, contrairement à HSL.

Bleu

#0000FF hsl(240 100% 50%)

Bleu pur. Teinte à 240° (deux tiers du tour de la roue), saturation entièrement chromatique, clarté perceptuelle au point médian.

#0000FF hsl(240 100% 50%)

Le bleu pur sur fond blanc échoue au contraste WCAG AA (3,7:1) — considérez `hsl(224 76% 48%)` (Tailwind blue-700) pour le texte courant.

Besoin d'une sortie perceptuellement uniforme à la place ? Essayez le convertisseur hex vers OKLCH dédié — chaque palier L paraît également lumineux sur toutes les teintes, contrairement à HSL.

Cyan

#00FFFF hsl(180 100% 50%)

Cyan. Teinte à 180° (le point médian de la roue, opposé au rouge), saturation entièrement chromatique, clarté perceptuelle au point médian de teinte pure. Couleur CSS nommée `cyan` ou `aqua`.

#00FFFF hsl(180 100% 50%)

Le cyan se situe à l'opposé du rouge sur la roue (180°/0°), ce qui en fait le partenaire d'harmonie complémentaire naturel pour toute couleur de marque de la famille rouge.

Besoin d'une sortie perceptuellement uniforme à la place ? Essayez le convertisseur hex vers OKLCH dédié — chaque palier L paraît également lumineux sur toutes les teintes, contrairement à HSL.

Magenta

#FF00FF hsl(300 100% 50%)

Magenta. Teinte à 300° (cinq sixièmes du tour de la roue), saturation entièrement chromatique, clarté perceptuelle au point médian de teinte pure. Couleur CSS nommée `magenta` ou `fuchsia`.

#FF00FF hsl(300 100% 50%)

Le magenta se situe à l'opposé du vert sur la roue (300°/120°), ce qui en fait le partenaire d'harmonie complémentaire naturel pour toute couleur de marque de la famille verte.

Besoin d'une sortie perceptuellement uniforme à la place ? Essayez le convertisseur hex vers OKLCH dédié — chaque palier L paraît également lumineux sur toutes les teintes, contrairement à HSL.

Jaune

#FFFF00 hsl(60 100% 50%)

Jaune. Teinte à 60° (un sixième du tour de la roue, entre rouge et vert), saturation entièrement chromatique, clarté perceptuelle au point médian de teinte pure.

#FFFF00 hsl(60 100% 50%)

Le jaune à hsl(60 100% 50%) paraît bien plus lumineux que le rouge à hsl(0 100% 50%) — un exemple vif de la non-uniformité perceptuelle de HSL. OKLCH normalise cela.

Besoin d'une sortie perceptuellement uniforme à la place ? Essayez le convertisseur hex vers OKLCH dédié — chaque palier L paraît également lumineux sur toutes les teintes, contrairement à HSL.

Tailwind blue-500

#3b82f6 hsl(217 91% 60%)

La couleur de marque blue-500 par défaut de Tailwind CSS — le « bleu web » canonique du milieu des années 2020. Utilisée dans d'innombrables tableaux de bord, sites marketing et outils d'administration.

#3b82f6 hsl(217 91% 60%)

Tailwind v4 redéfinit blue-500 en OKLCH (`oklch(0.629 0.193 263.4)`) pour des rampes perceptuellement uniformes — HSL est le repli v3.

Besoin d'une sortie perceptuellement uniforme à la place ? Essayez le convertisseur hex vers OKLCH dédié — chaque palier L paraît également lumineux sur toutes les teintes, contrairement à HSL.

Tailwind rose-500

#f43f5e hsl(350 89% 60%)

La couleur rose-500 par défaut de Tailwind CSS — un rose-rouge à haute saturation couramment utilisé pour les boutons d'accent, les états d'alerte et le contraste de marque.

#f43f5e hsl(350 89% 60%)

La teinte de rose-500 (350°) se situe juste avant le rouge (0°/360°) sur la roue — un léger décalage rose qui se lit plus chaud que le rouge pur.

Besoin d'une sortie perceptuellement uniforme à la place ? Essayez le convertisseur hex vers OKLCH dédié — chaque palier L paraît également lumineux sur toutes les teintes, contrairement à HSL.

Comment utiliser le convertisseur HEX vers HSL

  1. 1

    Collez un code hex dans le champ HEX

    Déposez n'importe quelle valeur hex dans l'entrée HEX — avec ou sans `#` initial, en raccourci à 3 chiffres (`#F73`), en forme pleine à 6 chiffres (`#3b82f6`), en raccourci alpha à 4 chiffres (`#F738`) ou en forme pleine alpha à 8 chiffres (`#FF573380`). L'outil normalise les cinq formes d'entrée vers la même couleur canonique en interne. La casse n'a pas d'importance (`#3b82f6` et `#3B82F6` s'analysent à l'identique). Les caractères invalides ou un nombre de chiffres incorrect produisent une discrète erreur en ligne ; un hex valide met à jour chaque autre champ de format en temps réel, y compris HSL.

  2. 2

    Lisez le triplet HSL dans le champ HSL

    Le champ HSL sous le champ HEX affiche la valeur `hsl()` correspondante dans la syntaxe moderne séparée par espaces de CSS Color 4 : `hsl(217 91% 60%)` pour une couleur opaque, `hsl(217 91% 60% / 0.5)` pour une couleur portant de l'alpha. La teinte est un degré entier de 0 à 360 ; la saturation et la clarté perceptuelle sont des pourcentages entiers de 0 à 100. Les valeurs sont arrondies pour la lisibilité d'affichage — la source de vérité OKLCH interne de l'outil signifie que la précision sous-jacente est en flottant, donc les allers-retours vers hex restent stables.

  3. 3

    Cliquez sur Copier pour saisir la chaîne HSL

    Chaque carte de format possède un bouton Copier à droite. Un clic et la valeur arrive dans votre presse-papiers — le label du bouton bascule brièvement sur « Copié ! » pour vous le signaler. La chaîne copiée est la syntaxe canonique CSS Color 4 (`hsl(217 91% 60%)`) ; si votre cible a besoin de la forme à virgules héritée (`hsl(217, 91%, 60%)`), la conversion est mécanique. Pour une sortie spécifique à une plateforme (Tailwind v4, SwiftUI, Compose, Flutter), utilisez la section Copier comme code sous le sélecteur — ces extraits émettent le format qu'attend nativement chaque plateforme.

  4. 4

    Aussi visibles : RGB, OKLCH, OKLAB, HSV, HWB, CMYK, couleur nommée

    Le même hex que vous collez illumine également les autres champs de format — RGB pour les appels canvas et le matériel, OKLCH et OKLAB pour les systèmes de design perceptuellement uniformes, HSV et HWB pour les flux de sélecteur de couleur designer, CMYK pour les estimations d'impression et la couleur CSS nommée la plus proche pour la prose de documentation. Vous n'êtes jamais enfermé dans hex → HSL seulement. Si vous avez aussi besoin du triplet OKLCH pour un bloc `@theme` Tailwind v4 (où la clarté perceptuelle compte plus que le L à gamma capricieux de HSL), il est juste là dans le champ OKLCH avec son propre bouton Copier.

  5. 5

    Utilisez le sélecteur pour balayer la clarté visuellement

    Sous la grille de formats se trouvent un carré SL + curseur de teinte + curseur alpha pour l'exploration visuelle. Le carré SL se mappe directement sur le plan Saturation × Clarté perceptuelle de HSL : faites glisser verticalement pour parcourir L de 0 % à 100 % tout en regardant le champ HSL se mettre à jour en temps réel. Utile pour générer une teinte claire ou foncée visuellement avant de verrouiller le pourcentage exact. Sur les navigateurs basés sur Chromium (Chrome, Edge, Brave), le bouton EyeDropper active l'API native `EyeDropper` pour échantillonner n'importe quel pixel à l'écran, y compris hors du navigateur.

Erreurs courantes HEX / HSL

Supposer que la clarté perceptuelle de HSL est perceptuellement uniforme

Un vert à `hsl(120 100% 50%)` paraît visiblement plus lumineux qu'un bleu à `hsl(240 100% 50%)`, même si tous deux sont à L=50 %. Générer des rampes de teintes claires en balayant L produit des résultats d'apparence inégale sur les teintes — l'extrémité claire de la rampe verte grimpe plus vite que celle de la rampe bleue. C'est une propriété structurelle de l'héritage par HSL des bizarreries gamma de sRGB, pas un bogue dans votre code. Pour des rampes perceptuellement uniformes, basculez vers OKLCH.

✗ Incorrect
Balayer L de HSL pour une palette de 9 paliers :
hsl(120 100% 50%) et hsl(240 100% 50%) à la même L
Paraissent visiblement différents en luminosité — la palette paraît inégale.
✓ Correct
Balayer L d'OKLCH à la place :
oklch(0.7 0.2 130) et oklch(0.7 0.2 250)
Paraissent également lumineux ; la palette se lit cohérente sur toutes les teintes.

Oublier que la teinte boucle à 360°

La teinte HSL est angulaire — `hsl(370 91% 60%)` est interprété comme `hsl(10 91% 60%)` parce que 370° mod 360° = 10°. Animer la teinte de 350° à 380° boucle proprement à travers 360°/0° (un fin sliver de rouge), mais interpoler linéairement de H=350 à H=10 dans le mauvais sens prend le *long* chemin à travers le cyan, le vert, le jaune — 320° de détour. Utilisez `Math.min(diff, 360 - diff)` pour choisir le court chemin, ou utilisez l'interpolation de teinte intégrée d'une bibliothèque de couleurs.

✗ Incorrect
Interpolation linéaire de H=350 à H=10 :
(350 + 10) / 2 = 180° (point médian cyan)
Incorrect — fait le long chemin autour de la roue.
✓ Correct
Interpolation de teinte par court chemin :
point médian = ((350 + 10 + 360) / 2) % 360 = 0° (point médian rouge)
Passe par le rouge, le court chemin autour de la roue.

Confondre HSL avec HSV

HSL et HSV partagent l'axe de teinte mais diffèrent sur leur troisième axe. La Clarté perceptuelle de HSL est symétrique — 0 % noir, 50 % teinte pure, 100 % blanc. La Value de HSV est asymétrique — 0 % noir, 100 % teinte pure, blanc seulement quand la Saturation tombe à 0. `hsl(0 100% 100%)` est blanc ; `hsv(0 100% 100%)` est rouge pur. Beaucoup de bibliothèques de couleurs et d'outils de design (le sélecteur HSB de Photoshop, le panneau de couleur de Sketch) utilisent HSV — copier des valeurs entre les deux systèmes sans convertir produit des couleurs sauvagement différentes.

✗ Incorrect
Coller des valeurs HSV depuis Photoshop dans une règle CSS hsl() :
Photoshop HSB 0, 100, 100 (rouge pur)
CSS hsl(0 100% 100%) rend en blanc — mauvaise couleur entièrement.
✓ Correct
Convertir HSV → HSL avant de coller dans CSS :
HSV 0, 100, 100 → HSL 0, 100 %, 50 %
CSS hsl(0 100% 50%) rend en rouge pur — correct.

Laisser tomber les signes pourcentage dans HSL

Les axes S et L de HSL exigent le suffixe `%` en CSS — `hsl(217 91 60)` est une erreur de parsing dans tous les navigateurs ; la forme correcte est `hsl(217 91% 60%)`. Seule la teinte est sans dimension (son unité est le degré, mais le suffixe est optionnel). Beaucoup de convertisseurs ad hoc oublient d'émettre les signes pourcentage dans leur sortie HSL, produisant un CSS invalide qui échoue silencieusement quand collé. L'outil émet toujours les signes pourcentage dans le champ HSL.

✗ Incorrect
Émettre HSL sans signes pourcentage :
hsl(217 91 60)
Erreur de parsing CSS — chaque navigateur ignore la règle entière.
✓ Correct
Émettre HSL avec signes pourcentage sur S et L :
hsl(217 91% 60%)
CSS valide — fonctionne dans chaque navigateur evergreen et IE 9+.

Qui utilise HEX vers HSL

Développeurs front-end définissant des variables CSS HSL
Définissez `--primary: hsl(217 91% 60%)` une fois à partir du hex Figma, puis composez `--primary-hover: hsl(217 91% 70%)`, `--primary-active: hsl(217 91% 50%)`, `--primary-bg: hsl(217 91% 95%)` en ajustant uniquement le nombre L. Collez le hex une fois, lisez le triplet HSL, déposez dans le bloc de propriétés personnalisées CSS. Le motif que les anciens systèmes de design utilisaient pour garder les teintes claires et foncées tonalement cohérentes avant que les rampes basées sur OKLCH ne prennent le relais.
Designers traduisant hex vers sélecteur HSL
Les designers élevés aux sélecteurs teinte + saturation + value (Adobe, Sketch, mode HSB de Figma) veulent souvent le triplet HSL même quand le fichier source livre du hex. Coller le hex une fois produit le HSL correspondant, prêt à être lu dans la position mentale du designer sur la roue chromatique sans devinette manuelle. Utile lors de la revue d'une spec de couleur de marque et de la volonté de savoir où elle se situe sur la roue de teintes par rapport aux autres couleurs de marque de la famille.
Auteurs de systèmes de thèmes calculant des jetons de mode sombre
Le thématisage en mode sombre inverse souvent L tout en gardant H et S — une couleur primaire en mode clair `hsl(217 91% 60%)` se mappe à `hsl(217 91% 40%)` (ou similaire) en mode sombre. Collez le hex du mode clair, lisez le HSL, calculez le L du mode sombre, réécrivez le nouveau HSL dans le jeton du thème sombre. Le motif est mécanique quand vous avez le triplet HSL ; c'est bien plus fastidieux à faire avec des canaux RGB bruts.
Auteurs de systèmes de design générant des rampes de teintes claires et foncées
Générez une rampe de teintes claires/foncées de 9 paliers en balayant L : `hsl(217 91% 95%)` (le plus clair), 85 %, 75 %, 65 %, 55 %, 45 %, 35 %, 25 %, `hsl(217 91% 15%)` (le plus foncé). Collez le hex de base, lisez le HSL, balayez L par pas de 10 % mentalement ou en code. (Pour les rampes perceptuellement uniformes où chaque palier paraît également lumineux, basculez sur le champ OKLCH à côté — les rampes HSL paraissent inégales sur les teintes parce que L n'est pas perceptuellement uniforme.)
Auteurs CSS utilisant les mathématiques hsl(from ...) au moment de l'exécution
Le CSS moderne prend en charge la syntaxe `color-function-from` : `hsl(from var(--primary) h s calc(l + 10%))` dérive une variante plus claire de `--primary` au moment du rendu, sans précalculer chaque palier. Collez le hex de marque, confirmez le triplet HSL, déposez la base dans une variable CSS, et utilisez les mathématiques au moment de l'exécution pour les jetons dérivés. Livré dans Chrome 119+, Safari 17.2+, Firefox 128+.
Développeurs front-end construisant des jeux de jetons HSL Tailwind v3
Tailwind v3 stockait les couleurs de thème comme triplets HSL séparés par espaces dans des variables CSS (`--primary: 217 91% 60%`), composées via `hsl(var(--primary))` dans `tailwind.config.js`. Collez le hex de marque, lisez le HSL, déposez les trois nombres (sans le wrapper `hsl(...)`) dans la définition de variable. Tailwind v4 a depuis pivoté vers OKLCH-first, mais les bases de code v3 utilisent toujours le motif HSL et continueront pendant des années.
Auteurs d'UI de sélecteur de couleur mappant hex vers contrôles HSL
Construire un sélecteur de couleur qui expose teinte / saturation / clarté perceptuelle en trois curseurs séparés (l'UI classique de style Adobe) signifie mapper un hex entrant sur les trois contrôles du sélecteur. Collez le hex ici, lisez le triplet HSL, positionnez les trois curseurs programmatiquement. La conversion est la même que celle qu'exécuterait votre sélecteur en interne ; cet outil expose les valeurs intermédiaires pour le débogage.
Ingénieurs d'accessibilité ajustant la clarté de la couleur de marque pour le contraste
Quand une couleur de marque échoue au contraste WCAG contre un fond, le correctif bon marché est de bumper L jusqu'à ce que le ratio passe — sans changer H ou S, la couleur se lit toujours comme la même identité de marque. Collez le hex de marque, regardez les badges de contraste, ajustez mentalement L (ou utilisez l'axe L du sélecteur) jusqu'à ce que WCAG et APCA passent tous deux. Le champ HSL expose le nouveau pourcentage L pour le document de spec ; le champ hex expose le code correspondant pour la feuille de style.

Mathématiques et parsing HEX vers HSL

HEX → RGB → HSL est un pipeline en deux étapes
La conversion passe par RGB comme intermédiaire. Étape un : analyser le hex en entiers RGB via `parseInt(hex.slice(1, 3), 16)` par canal. Étape deux : normaliser RGB à 0-1, calculer `max`/`min`/`delta`, appliquer la trigonométrie par morceaux de CSS Color 4 §6.4 : `L = (max + min) / 2`, `S = delta / (1 - |2L - 1|)`, `H = par morceaux * 60`. La structure en deux étapes est la raison pour laquelle l'outil expose aussi le tuple RGB intermédiaire — c'est gratuit à afficher et utile pour le débogage.
CSS Color 4 §6.4 définit l'algorithme de référence
La spécification W3C CSS Color 4 §6.4 (algorithme `rgb()` vers `hsl()`) définit les mathématiques canoniques par morceaux : la clarté perceptuelle comme point médian de max et min, la saturation comme `delta / (1 - |2L - 1|)` (avec S = 0 quand delta = 0, pour éviter la division par zéro sur les gris), la teinte comme trigonométrie à 60-degrés-par-pas selon quel canal est max. La spec gère aussi les cas limites : le noir pur (`#000`) donne `hsl(0 0% 0%)` avec une teinte arbitraire à 0° ; le blanc pur (`#FFF`) donne `hsl(0 0% 100%)` similairement ; le gris pur donne `hsl(0 0% 50%)`.
La teinte boucle à 360°, S et L sont des pourcentages
Les trois axes de HSL ont des unités différentes. La teinte est un degré angulaire de 0 à 360 avec bouclage — `hsl(370 ...)` est interprété comme `hsl(10 ...)` parce que les positions angulaires bouclent. La saturation et la clarté perceptuelle sont des pourcentages de 0 % à 100 %, sans bouclage ; les valeurs hors plage sont écrêtées. CSS Color 4 accepte aussi la teinte en tours (`hsl(0.6turn ...)`) ou en radians (`hsl(3.787rad ...)`) ; la sortie de l'outil utilise les degrés parce que c'est la forme la plus courante dans les UI d'outils de design et les documents de spec de marque.
La clarté perceptuelle de HSL n'est PAS perceptuellement uniforme
Un vert à `hsl(120 100% 50%)` paraît visiblement plus lumineux qu'un bleu à `hsl(240 100% 50%)`, même si tous deux ont la même clarté perceptuelle nominale — parce que HSL hérite des bizarreries gamma de sRGB et utilise la même échelle L sur chaque teinte. C'est pourquoi les rampes de teintes claires basées sur HSL paraissent inégales (l'extrémité claire de la rampe verte grimpe plus vite que l'extrémité claire de la rampe bleue) et pourquoi les systèmes de design ont en grande partie migré vers OKLCH pour la génération de rampes. L'outil expose à la fois HSL et OKLCH pour que le choix soit à un coup d'œil près.
Source de vérité interne OKLCH pour la stabilité des allers-retours
Bien que cette branche cible spécifiquement HEX → HSL, le convertisseur sous-jacent partagé conserve la couleur canonique sous forme de triplet OKLCH en interne. Les allers-retours HEX → HSL → RGB → OKLAB → HEX restent stables au bit près ; les convertisseurs hérités à pivot HSL accumulent une erreur d'arrondi et peuvent faire dériver la teinte de plusieurs degrés sur quelques conversions. Le pivot OKLCH préserve aussi la teinte comme axe stable, donc faire glisser le curseur de teinte ne traverse pas accidentellement le gris. Selon l'article OKLAB de Björn Ottosson de 2020.
Encodage de canal : non signé 8 bits, sRGB gamma-encodé
Les codes hex encodent des canaux RGB non signés 8 bits (0-255) dans l'espace colorimétrique sRGB défini par IEC 61966-2-1 (1996). Les valeurs sont *gamma-encodées* — la relation entre la valeur de canal et la luminosité perçue est non linéaire, suivant la fonction de transfert sRGB par morceaux (à peu près un exposant 2,4 avec un petit segment linéaire près de zéro). HSL est dérivé directement de ces valeurs RGB gamma-encodées sans étape de linéarisation, ce qui est la cause racine du problème d'uniformité perceptuelle de HSL. OKLCH linéarise d'abord puis re-mappe vers un espace perceptuellement uniforme ; HSL ne le fait pas.

Bonnes pratiques pour les flux HEX / HSL

Utilisez la syntaxe HSL moderne séparée par espaces dans le nouveau code
Les `hsl(217 91% 60%)` (séparé par espaces) et `hsl(217 91% 60% / 0.5)` (barre oblique pour alpha) de CSS Color 4 sont les syntaxes canoniques pour le code livré en 2025 et au-delà. Les formes à virgules héritées `hsl(217, 91%, 60%)` et `hsla(217, 91%, 60%, 0.5)` restent prises en charge partout mais sont stylistiquement dépréciées dans CSS Color 4. Utilisez la syntaxe moderne dans les nouvelles feuilles de style ; ne gardez `hsla()` que pour les contextes de repli IE 9-11 où vous avez réellement besoin du support hérité.
Générez les rampes en OKLCH, pas en HSL
L'axe de clarté perceptuelle de HSL n'est pas perceptuellement uniforme — un balayage L sur 9 paliers produit une rampe où les paliers verts paraissent plus lumineux que les paliers bleus à chaque valeur L. Pour les rampes où chaque palier doit paraître également lumineux (la demande par défaut d'un système de design), générez plutôt en OKLCH : `oklch(0.7 0.15 217)`, `oklch(0.6 0.15 217)`, etc. L'outil expose à la fois HSL et OKLCH pour le même hex, donc basculer entre les deux est à un clic Copier près.
Verrouillez la teinte et la saturation, balayez la clarté perceptuelle
Lorsque vous utilisez HSL pour le travail de teintes claires/foncées, ne changez que le nombre L — gardez H et S identiques sur toute la rampe. Une dérive de teinte (même de 5°) fait paraître une rampe désorganisée. Une dérive de saturation rend l'extrémité claire délavée et l'extrémité foncée boueuse. La discipline d'un-axe-à-la-fois est ce qui donne à HSL sa réputation amicale pour le design ; l'abandonner vous donne le pire des deux mondes.
Préférez hex pour les jetons source de vérité, HSL pour les variantes calculées
Lorsque vous rédigez une spec de jeton de design, préférez hex (ou OKLCH) comme forme canonique — ils sont plus concis et tiennent proprement dans du JSON ou YAML. HSL est plus utile pour les jetons *dérivés* au moment de l'exécution (`hsl(from var(--primary) h s calc(l + 10%))`) qu'en tant que format source de vérité. Les deux formats décrivent la même couleur ; le choix porte sur le rôle que joue le jeton dans le système.
Documentez les variantes HSL avec le hex de base
Lorsque vous livrez une variable CSS comme `--primary-light: hsl(217 91% 70%)`, incluez un commentaire pointant vers le hex de base : `/* base : #3b82f6 → hsl(217 91% 60%), variante claire +10 % L */`. Six mois plus tard, quand quelqu'un voudra dériver `--primary-lighter`, il aura besoin de la couleur de base pour calculer — et HSL seul n'expose pas cela. Le hex + HSL ensemble préservent la traçabilité complète.
Utilisez le hash d'URL pour partager des décisions de couleur en direct
Chaque changement de couleur met à jour le hash d'URL sous la forme `#hex=3b82f6` automatiquement. Copiez l'URL dans un fil Slack ou un ticket GitHub et quiconque l'ouvre atterrit sur la même couleur avec le même triplet HSL. C'est plus fiable que de coller une chaîne HSL dans le chat — les destinataires font parfois des fautes de frappe sur le degré ou laissent tomber un signe pourcentage en saisissant la valeur manuellement — et permet à un fil de revue de design de référencer une couleur exacte plutôt que « le bleu dont on a parlé mardi ». Le hash n'est jamais transmis au serveur.

Questions fréquemment posées

Comment convertir un hex en HSL ?
Convertissez d'abord le hex en entiers RGB via `parseInt(hex, 16)`, puis normalisez chaque canal à 0-1 en divisant par 255, puis calculez `max`/`min`/`delta` sur les trois canaux et appliquez la trigonométrie par morceaux de CSS Color 4 §6.4 : clarté perceptuelle = `(max + min) / 2`, saturation = `delta / (1 - |2L - 1|)` (zéro quand delta est zéro), teinte = par morceaux selon quel canal est max (60° par pas autour de la roue). `#3b82f6` s'analyse en `rgb(59 130 246)` puis se convertit en `hsl(217 91% 60%)`. Cet outil exécute le pipeline complet en direct au fil de la saisie.
Qu'est-ce qu'une couleur HSL ?
HSL est une refonte cylindrique de l'espace colorimétrique sRGB en trois axes perceptuellement significatifs : Teinte (0-360°, position angulaire sur la roue chromatique — 0° rouge, 120° vert, 240° bleu), Saturation (0-100 %, intensité chromatique — 0 % gris, 100 % entièrement chromatique) et Clarté perceptuelle (0-100 %, luminosité — 0 % noir, 50 % teinte pure, 100 % blanc). Alvy Ray Smith a publié la dérivation en 1978 pour donner aux designers un système de coordonnées plus proche de leur manière de penser la couleur que l'adressage RGB brut par canal. HSL est dans CSS depuis 2010 (CSS3) et est livré dans tous les navigateurs.
Quelle est la différence entre HSL et HSV ?
Les deux sont des refontes cylindriques de sRGB avec des axes de teinte identiques, mais ils traitent le troisième axe différemment. La Clarté perceptuelle de HSL va du noir à 0 % à la teinte pure à 50 % au blanc à 100 % — symétrique, donc `hsl(0 100% 50%)` est rouge pur et `hsl(0 100% 100%)` est blanc. La Value de HSV va du noir à 0 % à la teinte pure à 100 % — asymétrique, donc `hsv(0 100% 100%)` est rouge pur et le blanc n'apparaît que lorsque la saturation tombe à 0. HSL est plus utile pour les rampes de teintes claires/foncées d'un système de design parce que le point médian à 50 % marque la référence de couleur pure ; HSV est plus utile pour les sélecteurs de couleur parce que le carré saturation/value se mappe proprement sur une UI de sélecteur SV.
Pourquoi utiliser HSL plutôt que RGB ?
Trois raisons. Premièrement, des curseurs intuitifs — faire passer L de 60 % à 70 % produit prévisiblement une teinte claire de la même couleur ; faire passer R de 130 à 150 produit un décalage de couleur moins prévisible. Deuxièmement, la génération de palette — `hsl(217 91% 60%)`, `hsl(217 91% 70%)`, `hsl(217 91% 80%)` est une rampe de teintes claires tonalement cohérente générée en changeant un seul nombre ; la même chose en RGB exige trois modifications coordonnées. Troisièmement, des mathématiques CSS au moment de l'exécution — le CSS moderne permet de calculer `hsl(from var(--primary) h s calc(l + 10%))` pour dériver une variante plus claire d'un jeton de base sans précalculer chaque palier. RGB n'a pas une telle commodité d'axe cylindrique.
Comment lit-on une valeur HSL ?
HSL comporte trois parties dans l'ordre : Teinte, Saturation, Clarté perceptuelle. `hsl(217 91% 60%)` signifie teinte = 217° (un bleu net, juste après le territoire de bleu pur à 240° et revenant vers le cyan), saturation = 91 % (très chromatique, presque pas de gris), clarté perceptuelle = 60 % (un cran plus lumineux que le point médian de teinte pure). La teinte est le seul axe sans suffixe pourcentage parce qu'elle s'exprime en degrés — les valeurs bouclent à 360°, donc `hsl(370 ...)` est identique à `hsl(10 ...)`. La valeur préfixée par barre oblique à la fin (si présente) est l'alpha dans la plage 0-1 : `hsl(217 91% 60% / 0.5)` est la même couleur à 50 % d'opacité.
CSS prend-il en charge HSL ?
Oui — HSL est dans CSS depuis CSS3 en 2010 et est livré dans tous les navigateurs, y compris IE 9. La syntaxe originale utilisait des virgules : `hsl(217, 91%, 60%)` pour les couleurs opaques et `hsla(217, 91%, 60%, 0.5)` pour celles portant de l'alpha. CSS Color 4 (Candidate Recommendation du W3C depuis 2022) a ajouté la forme moderne séparée par espaces : `hsl(217 91% 60%)` et `hsl(217 91% 60% / 0.5)` avec alpha préfixé par barre oblique. La teinte peut aussi s'exprimer en tours ou en radians (`hsl(0.6turn 91% 60%)` est identique à `hsl(217 91% 60%)`). Les syntaxes héritées et modernes sont interchangeables dans tous les navigateurs evergreen.
Que signifie le L dans HSL ?
Lightness (clarté perceptuelle). L'axe 0-100 % qui contrôle la luminosité apparente de la couleur, 0 % correspondant au noir pur et 100 % au blanc pur. Le point médian (50 %) est là où vit la teinte pure — `hsl(0 100% 50%)` est rouge pur, tandis que `hsl(0 100% 25%)` est un rouge plus foncé et `hsl(0 100% 75%)` un rose plus clair. La Clarté perceptuelle est la contrepartie symétrique de la Value asymétrique de HSV. Notez que la clarté perceptuelle de HSL n'est *pas* perceptuellement uniforme — un vert à L=50 % paraît visiblement plus lumineux qu'un bleu à L=50 % parce que HSL hérite des bizarreries gamma de sRGB ; pour l'uniformité perceptuelle, tournez-vous plutôt vers OKLCH.
Quelle est la précision de la conversion hex vers HSL ?
L'étape HEX → RGB est exacte au bit près (`parseInt(hex, 16)` renvoie des entiers sans implication de flottant). L'étape RGB → HSL implique de la trigonométrie et de la division, donc la sortie est un flottant que l'outil arrondit en degrés entiers et en pourcentages entiers pour l'affichage. Un aller-retour HEX → HSL → HEX récupère le hex original à 1 unité de canal près (l'erreur d'arrondi due à l'affichage de H en degré entier). Pour un travail sans perte, OKLCH est un meilleur format interne — cet outil conserve d'ailleurs OKLCH comme source de vérité en interne, puis dérive HSL à l'affichage, donc la stabilité des allers-retours est meilleure que les convertisseurs naïfs à pivot HSL.