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.