Code couleur HTML, HEX, valeurs RGB et HSL - Palettes de couleurs
HEX #9D3171
RGB 157,49,113
HSL 324, 52%, 40%
Choisir une couleur
Saturation 69 %, luminosité 62 %. Au clavier, les flèches déplacent le curseur.
Palette de couleurs
Qu'est-ce qu'un code couleur ?
Un code couleur est une succession de chiffres et de lettres, qui permet d'identifier une couleur sur le Web. Il existe trois codes couleurs distincts : le hex, le rgb et le hsl. Chacun permettant d'identifier l'intégralité des couleurs du web.
Palettes de couleurs et sélecteurs de couleurs
A l'aide de nos différents outils vous avez la possibilité de choisir votre code couleur. Cela comprend l'intégralité des couleurs disponibles sur le web.
Les 3 codes couleurs connus sont le hex qui est écrit sous une forme #000000 pour la couleur noire par exemple. Il y a d'autre part le rgb qui est donné en mélangeant les couleurs primaires qui sont le rouge(r), le vert(g) et bleu(b), et qui permet d'obtenir les couleurs du web. Et en dernier il existe le code HSL qui offre lui aussi une large palette de différentes couleurs.
HEX, RGB, HSL : lequel utiliser ?
Les trois notations désignent exactement les mêmes couleurs, avec la même précision ; elles ne racontent simplement pas la même chose. HEX et RGB décrivent un mélange de lumières : combien de rouge, combien de vert, combien de bleu. HSL décrit une impression visuelle : quelle teinte, quelle intensité, quelle clarté.
Cette différence décide de l'usage. L'hexadécimal est court et se copie sans risque d'erreur : c'est la notation des maquettes et des feuilles de style. Le RGB donne trois nombres décimaux directement manipulables, commodes dès qu'un programme calcule sur les canaux ou lit les pixels d'une image. Le HSL est le seul à se laisser lire : devant hsl(210, 100%, 56%), on sait déjà qu'il s'agit d'un bleu franc et plutôt clair, alors que #1E90FF ne dit rien tant qu'on ne l'a pas décodé.
| Notation | La même couleur | Ce que décrivent les valeurs | Lisible sans outil | Cas d'usage |
|---|---|---|---|---|
| HEX | #1E90FF | Trois octets : rouge, vert, bleu en base 16 | Difficilement | Copier-coller, feuilles CSS, maquettes |
| RGB | rgb(30, 144, 255) | Les mêmes trois canaux, en base 10 | En partie | Calcul, scripts, traitement d'image |
| HSL | hsl(210, 100%, 56%) | Teinte en degrés, saturation, luminosité | Oui | Décliner une teinte, construire un thème |
En pratique, on écrit ses couleurs en hexadécimal et on bascule en HSL pour construire une gamme : décliner un bouton en version survolée puis désactivée revient alors à ne bouger que la luminosité, sans toucher à la teinte.
Comment lire un code hexadécimal
Un code #RRGGBB est la juxtaposition de trois octets : deux chiffres pour le rouge, deux pour le vert, deux pour le bleu. Chaque paire s'écrit en base 16, où les chiffres vont de 0 à 9 puis se poursuivent par les lettres A à F valant 10 à 15. Une paire couvre donc les valeurs 00 à FF, soit 0 à 255 en décimal.
La lecture se fait chiffre par chiffre : dans la paire 1E, le 1 pèse seize fois et le E vaut 14, d'où 1 × 16 + 14 = 30 ; le maximum FF vaut 15 × 16 + 15 = 255. Trois paires à 00 donnent du noir, trois paires à FF du blanc, et trois paires identiques un gris neutre, les trois lumières étant émises en quantité égale.
La forme courte à trois chiffres double simplement chaque chiffre pour reconstituer la forme longue : #F0A équivaut à #FF00AA, et #FFF à #FFFFFF. Elle n'atteint que 4 096 couleurs sur les 16 777 216 disponibles.
Rien de tout cela n'est propre aux couleurs : un code couleur est de l'hexadécimal ordinaire, celui-là même qui sert à écrire un code ascii en hexadécimal ou un point de code Unicode. La base 16 s'impose partout pour la même raison : un chiffre hexadécimal vaut exactement quatre bits, donc un octet s'écrit toujours avec deux chiffres.
Convertir entre les trois notations
De HEX vers RGB, découpez le code en trois paires et convertissez chacune en décimal. Pour #1E90FF : 1E donne 30, 90 donne 9 × 16 + 0 = 144, FF donne 255, soit rgb(30, 144, 255).
De RGB vers HEX, le trajet inverse se fait canal par canal : on divise par 16, le quotient donne le premier chiffre, le reste le second, et l'on complète par un zéro à gauche sous 16. Pour rgb(237, 0, 140) : 237 = 14 × 16 + 13, soit ED ; 0 s'écrit 00 ; 140 = 8 × 16 + 12, soit 8C. Le code est #ED008C. Nos convertisseurs décimal et hexadécimal font ce calcul dans les deux sens.
De RGB vers HSL, le principe se comprend sans dérouler la formule. On ramène les trois canaux entre 0 et 1, puis on ne retient que le plus fort et le plus faible. La luminosité est leur moyenne. La saturation se déduit de leur écart : plus les canaux sont proches, plus la couleur tire vers le gris. La teinte dépend du canal dominant, chacun occupant une portion du cercle chromatique — le rouge vers 0°, le vert vers 120°, le bleu vers 240°.
Sur rgb(30, 144, 255) : le maximum vaut 255 ÷ 255 = 1, le minimum 30 ÷ 255 ≈ 0,118, et leur moyenne donne une luminosité de 55,9 %, arrondie à 56 %. La saturation vaut 100 %, ce qui est toujours le cas lorsque le canal dominant est poussé à son maximum, ici le bleu à 255 ; la teinte se situe donc du côté de 240°, et le calcul la ramène à 209,6°, soit 210°. On retrouve bien hsl(210, 100%, 56%). Ces arrondis expliquent qu'un aller-retour ne redonne pas toujours l'octet de départ : gardez l'hexadécimal comme référence.
Les couleurs nommées du HTML
Le CSS accepte aussi des mots-clés : écrire color: tomato revient exactement à écrire color: #FF6347. La liste historique compte 147 noms, hérités du format SVG, auxquels s'est ajouté rebeccapurple (#663399), ce qui porte le total à 148. Neuf de ces noms sont de simples synonymes — aqua et cyan, fuchsia et magenta, ainsi que sept variantes en gray/grey — si bien que les 148 mots-clés ne désignent en réalité que 139 couleurs distinctes.
| Nom CSS | Hexadécimal | RGB |
|---|---|---|
| black | #000000 | rgb(0, 0, 0) |
| white | #FFFFFF | rgb(255, 255, 255) |
| red | #FF0000 | rgb(255, 0, 0) |
| lime | #00FF00 | rgb(0, 255, 0) |
| blue | #0000FF | rgb(0, 0, 255) |
| green | #008000 | rgb(0, 128, 0) |
| teal | #008080 | rgb(0, 128, 128) |
| gray | #808080 | rgb(128, 128, 128) |
| silver | #C0C0C0 | rgb(192, 192, 192) |
| orange | #FFA500 | rgb(255, 165, 0) |
| gold | #FFD700 | rgb(255, 215, 0) |
| tomato | #FF6347 | rgb(255, 99, 71) |
Ces noms rendent service pour une maquette rapide ou un exemple de cours, parce qu'ils se retiennent et se relisent. Ils atteignent leur limite dès qu'un projet a une charte : un nom ne s'ajuste pas, alors qu'un code hexadécimal se règle au canal près.
Trois pièges méritent d'être connus. Les graphies gray et grey sont toutes deux valides et interchangeables, mais seulement pour les sept noms concernés. Certains noms trompent : green ne vaut pas #00FF00 mais #008000, un vert sombre, le vert pur s'appelant lime. Et darkgray (#A9A9A9) est en réalité plus clair que gray (#808080), séquelle de la fusion de deux listes bâties séparément.
Transparence : RGBA, HSLA et le hexadécimal à 8 chiffres
Une quatrième valeur, l'alpha, indique le degré d'opacité : 0 rend la couleur totalement transparente, 1 totalement opaque. Elle s'écrit historiquement avec les fonctions rgba() et hsla(), par exemple rgba(237, 0, 140, 0.5). Le CSS moderne l'accepte aussi dans rgb() et hsl(), derrière une barre oblique : rgb(237 0 140 / 50%).
L'hexadécimal a suivi avec une forme à huit chiffres, #RRGGBBAA, où les deux derniers caractères codent l'alpha comme un canal ordinaire, de 00 à FF : #ED008C80 est le rose précédent à moitié transparent. Une forme abrégée à quatre chiffres, #RGBA, existe sur le même principe de doublement.
| Opacité visée | Valeur alpha | Suffixe hexadécimal | Opacité réelle |
|---|---|---|---|
| 100 % | 1 | FF | 100 % |
| 80 % | 0.8 | CC | 80 % |
| 60 % | 0.6 | 99 | 60 % |
| 50 % | 0.5 | 80 | 50,2 % |
| 40 % | 0.4 | 66 | 40 % |
| 20 % | 0.2 | 33 | 20 % |
| 0 % | 0 | 00 | 0 % |
La dernière colonne signale un décalage : l'alpha hexadécimal ne dispose que de 256 marches, si bien que le « 50 % » usuel s'écrit 80 et vaut en réalité 128 ÷ 255, soit 50,2 %. L'écart est invisible à l'œil, mais il explique qu'une conversion renvoie parfois 0.502 plutôt que 0.5. Les formes à quatre et huit chiffres sont reconnues par tous les navigateurs actuels ; rgba() et hsla() restent la valeur sûre pour les environnements anciens. À ne pas confondre, enfin, avec la propriété opacity : l'alpha ne rend translucide que la couleur concernée, tandis qu'opacity agit sur l'élément entier, texte et bordures compris.
Contraste et lisibilité
Choisir deux couleurs qui vont bien ensemble ne suffit pas : encore faut-il que le texte reste lisible par-dessus le fond. Une couleur claire sur un fond clair peut être parfaitement harmonieuse et malgré tout illisible, sur un écran de téléphone en plein soleil comme pour une personne dont la vision des contrastes est réduite.
Cette lisibilité se mesure. Le ratio de contraste des règles d'accessibilité WCAG compare la luminance relative des deux couleurs et produit un nombre allant de 1:1, deux couleurs identiques, à 21:1, du noir pur sur du blanc pur. Les seuils à retenir : 4,5:1 au minimum pour le texte courant et 3:1 pour le texte large, c'est-à-dire à partir d'environ 24 px, ou 19 px en gras. Ce même 3:1 vaut pour les éléments d'interface qu'il faut pouvoir distinguer, comme la bordure d'un champ.
| Couleur du texte | Sur fond blanc | Verdict |
|---|---|---|
| #000000 (black) | 21:1 | Le maximum atteignable |
| #595959 | 7:1 | Confortable, y compris en petit corps |
| #767676 | 4,54:1 | Passe le seuil de 4,5:1 de justesse |
| #808080 (gray) | 3,95:1 | Refusé en texte courant, accepté en grand |
| #FFA500 (orange) | 1,97:1 | Insuffisant, même en très gros |
| #FFFF00 (yellow) | 1,07:1 | Pratiquement invisible |
Deux enseignements se dégagent de ces chiffres. Le gris clair des maquettes échoue presque toujours : sur fond blanc, #767676 est la teinte neutre la plus claire à atteindre encore 4,5:1. Et le ratio ne suit pas l'intuition colorée — l'orange et le jaune, pourtant vifs, sont catastrophiques sur blanc, parce que le calcul repose sur la luminance et non sur la saturation.
Deux réflexes limitent les erreurs. Ne jamais faire porter une information par la seule couleur : un message d'erreur en rouge doit aussi comporter un mot ou une icône. Et vérifier chaque couple texte / fond avant de le valider, les outils de développement des navigateurs affichant le ratio directement dans leur sélecteur de couleur.
Questions fréquentes
Combien de couleurs peut-on écrire avec un code hexadécimal ?
16 777 216. Chacun des trois canaux occupe un octet, donc 256 valeurs de 00 à FF, ce qui donne 256 × 256 × 256 combinaisons, soit 224. C'est ce que l'on désigne par « couleurs 24 bits » ou true color. Ajouter la transparence ne crée aucune teinte supplémentaire : elle superpose seulement 256 niveaux d'opacité à chacune de ces couleurs.
Pourquoi les composantes RGB vont-elles de 0 à 255 et non jusqu'à 256 ?
Parce que le décompte commence à zéro. Un octet distingue bien 256 états, mais le premier porte le numéro 0, donc le dernier porte le numéro 255. La plage hexadécimale correspondante va de 00 à FF, FF valant 15 × 16 + 15 = 255. Une valeur écrite hors de cette plage n'ouvre rien de plus : le navigateur la ramène à la borne la plus proche.
Comment obtenir le code couleur d'une image ?
Avec une pipette. Les outils de développement de Chrome et de Firefox en intègrent une, qui renvoie directement le code hexadécimal du pixel visé. Windows en propose une dans PowerToys, macOS dans l'utilitaire Numériseur de couleur, et tous les éditeurs d'image en ont une. Prélevez de préférence au centre d'une zone unie : la compression JPEG et le lissage des contours font varier les pixels voisins de plusieurs unités.
Quelle différence entre RGB et CMJN ?
Le RGB est une synthèse additive : un écran émet de la lumière, et superposer rouge, vert et bleu au maximum produit du blanc. Le CMJN (cyan, magenta, jaune, noir) est une synthèse soustractive : l'encre absorbe la lumière que renvoie un papier blanc, et l'absence d'encre laisse donc du blanc. Le premier s'emploie pour l'écran, le second pour l'impression. Leurs gammes de couleurs ne se recouvrent pas : les verts et les bleus très saturés d'un écran n'ont pas d'équivalent en encre et ressortent plus ternes. Un code hexadécimal n'a donc aucun sens pour une imprimante tant qu'il n'est pas converti via un profil colorimétrique.
Pourquoi ma couleur ne s'affiche-t-elle pas pareil sur mon téléphone ?
Le code est le même, l'écran ne l'est pas. Une valeur comme #1E90FF n'impose pas une couleur physique : elle indique une intensité par canal, que chaque dalle restitue selon sa propre gamme de couleurs, son calibrage et sa luminosité. S'y ajoutent le profil colorimétrique — un même rouge paraît plus saturé sur un écran large gamme que sur un écran sRVB — et les réglages logiciels comme le mode nuit, qui réchauffe volontairement le point blanc. La lumière ambiante fait le reste. Seul un écran calibré, associé à un profil correctement déclaré, réduit vraiment cet écart.

