ForHosting KIT · Images

Couleur claire ou sombre

Le blanc #ffffff obtient une luminosité de 255, au-dessus du seuil de 128 : il est donc clair et appelle un texte noir (#000000). Choisissez ainsi la couleur des libellés de vos boutons, badges et pastilles. Gratuit dans votre navigateur.

  • Gratuit
  • Fonctionne dans votre navigateur
  • Sans inscription
  • Vos données restent sur votre appareil
Utilisez-le depuis WebAPIE-mailTelegramApp bientôt
Si vous saisissez
Couleur
#ffffff
Vous obtenez
Hex saisi
#ffffff
RVB d'entrée
255, 255, 255
Résistance (Ω)
255
G
255

Choisir un libellé noir ou blanc sur un bouton coloré est un problème classique d'accessibilité et de marque : le blanc pur sur un jaune pâle échoue au contraste, et le noir pur sur un bleu marine peut paraître faux lorsque le fond est presque noir. Ce classifieur clair ou sombre prend une couleur hex opaque, calcule une luminosité perçue déterministe avec les coefficients ITU-R BT.601 qui pondèrent le vert plus que le rouge et le bleu, compare cette luminosité à un seuil configurable (par défaut cent vingt-huit sur l'échelle de zéro à deux cent cinquante-cinq) et renvoie si l'échantillon est clair ou sombre plus une couleur de texte superposé recommandée. Les designers qui branchent des jetons de thème, les développeurs qui choisissent la couleur d'icônes sur des badges dynamiques et les tests automatisés qui figent les décisions clair versus sombre ont besoin de la même arithmétique à chaque fois.

Pourquoi la luminosité perçue, et non la moyenne brute des canaux

Une règle naïve de gris moyen qui moyenne le rouge, le vert et le bleu traite le bleu pur et le jaune pur comme également brillants, ce qui ne correspond pas à la façon dont la vision humaine et la plupart des bibliothèques d'interface décident du clair versus sombre.

La luminosité perçue de cette page suit les coefficients de luma de style BT.601 utilisés de longue date en vidéo et dans les outils web : la luminosité vaut zéro virgule deux neuf neuf fois le rouge plus zéro virgule cinq huit sept fois le vert plus zéro virgule un un quatre fois le bleu, chaque canal étant un entier de zéro à deux cent cinquante-cinq. Le vert domine la somme car l'œil y est le plus sensible ; le bleu contribue le moins.

Après le calcul, l'outil compare la luminosité à un seuil. Le seuil par défaut est cent vingt-huit, le milieu de l'échelle huit bits, aligné sur de nombreux helpers isLight open source qui traitent une luminosité supérieure ou égale à cette coupure comme claire. Vous pouvez passer un seuil personnalisé lorsque votre système de design veut classer plus de couleurs comme sombres (augmentez le seuil) ou plus comme claires (abaissez-le).

La classification est inclusive du côté clair : luminosité supérieure ou égale au seuil donne clair, et tout ce qui est strictement en dessous donne sombre. Cette recommandation est un défaut pratique pour badges et puces ; les produits en production qui doivent respecter des ratios de contraste WCAG doivent encore mesurer la paire finale avec un vérificateur de contraste, car le noir sur gris moyen peut passer la classification par luminosité et pourtant échouer AA pour le petit texte.

Cette page répond volontairement à l'intention de recherche couleur claire ou sombre et classifieur hex clair sombre, plutôt qu'au calcul d'un ratio de contraste complet entre deux couleurs.

Conseils pratiques, limites et recherches associées

En écrivant des tests unitaires, couvrez au moins un fond quasi blanc qui doit être clair, un remplissage quasi noir qui doit être sombre, une couleur de marque saturée à mi-teinte près du seuil par défaut, un raccourci à trois chiffres, un seuil personnalisé qui inverse une couleur limite, et un hex invalide volontaire pour que les régressions de validation ne passent pas.

Souvenez-vous que ce classifieur répond clair versus sombre pour un seul échantillon ; il ne calcule pas le contraste WCAG entre premier plan et arrière-plan, ne renvoie pas la luminance relative sur une échelle sRGB linéarisée de zéro à un comme score principal (il rapporte la luminosité de canal BT.601) et n'ajuste ni pour l'alpha ni pour la taille du texte. Ne passez pas de formes alpha comme #RRGGBBAA — cette page ne classe que l'hex opaque.

Les noms CSS et les chaînes rgb() doivent d'abord être résolus en hex, puis passés ici, afin que la surface de validation reste une seule chaîne de couleur bien spécifiée. Cette page vise les recherches couleur claire ou sombre, vérificateur hex clair sombre, luminosité perçue pour texte superposé, ou classer hex clair sombre gratuitement en ligne ; ce n'est pas un générateur de palette complet, ni un mélangeur d'assombrissement ou d'éclaircissement, ni un convertisseur multi-espaces.

Préférez cette capacité lorsque vous avez déjà un jeton hex et n'avez besoin que d'une étiquette déterministe clair ou sombre plus une recommandation par défaut de superposition noire ou blanche ; si votre pipeline a besoin de ratios de contraste ou d'indicateurs AA entre deux couleurs, utilisez un vérificateur de contraste dédié après avoir choisi des candidats.

Libellés dynamiques de badges et de puces

Choisissez un texte de libellé noir ou blanc sur des couleurs de badge choisies par l'utilisateur afin que les interfaces produit restent lisibles sans régler à la main chaque hex de marque.

Automatisation des jetons de thème

Classez les jetons de surface du design system en clairs ou sombres pour que les jeux d'icônes et les bordures fines basculent automatiquement en CI.

Quelle couleur de texte superposé recommande-t-il ?

Texte sombre (#000000) sur fonds clairs et texte clair (#ffffff) sur fonds sombres. Vérifiez toujours le contraste WCAG pour le petit texte en production.

Quels formats de couleur sont acceptés ?

Hex #RGB ou #RRGGBB avec # optionnel, insensible à la casse. L'hex alpha, les noms CSS et les chaînes rgb() ne sont pas acceptés sur cette page.

Puis-je modifier le seuil de luminosité ?

Oui. Passez threshold comme nombre fini de 0 à 255. Des valeurs plus hautes classent plus de couleurs en sombres ; plus basses, en claires. La valeur par défaut est 128.

Le classifieur couleur claire ou sombre est-il gratuit ?

L'outil navigateur est gratuit et s'exécute en local.

Pourquoi le jaune est-il clair et le bleu sombre alors que ce sont deux couleurs pures ?

La luminosité perçue donne le plus de poids au vert et le moins au bleu : 0.299 fois le rouge, plus 0.587 fois le vert, plus 0.114 fois le bleu. Le jaune contient le vert au maximum et obtient un score élevé ; le bleu pur pèse très peu.

Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.

POSThttps://api.kit.forhosting.com/color/is-light-or-dark

Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.

curl -X POST https://api.kit.forhosting.com/color/is-light-or-dark \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"color":"#3b82f6"}'
{
  "color": "#3b82f6"
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "color.is_light_or_dark",
  "status": "queued",
  "_links": {
    "result": "/tasks/tsk_…/result"
  }
}

L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.

par requête$0.002

Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.

HTTPCodeSignification
401unauthorizedClé API absente ou invalide : vérifiez l’en-tête Authorization.
402insufficient_balanceSolde insuffisant : rechargez votre compte pour lancer cette tâche.
404unknown_typeType de tâche inconnu : vérifiez le champ type de votre requête.
429rate_limitedTrop de requêtes : ralentissez la cadence, puis réessayez.

Collez des jetons de marque comme #3b82f6, #f8fafc ou le raccourci à trois chiffres #abc ; les chaînes hex invalides échouent avec invalid_input au lieu d'inventer une étiquette. Le chemin est un parse déterministe pur — pas de réseau, pas de graines aléatoires, pas d'horloge — de sorte que l'exécuteur gratuit du navigateur et l'API prépayée renvoient le même JSON à chaque appel.

Pourquoi la luminosité perçue, et non la moyenne brute des canaux

La réponse répète toujours la luminosité numérique, le seuil utilisé, les booléens is_light et is_dark, une chaîne de classification et une couleur de texte superposé recommandée : sombre avec hex #000000 sur fonds clairs ou clair avec hex #ffffff sur fonds sombres.

Contrat d'entrée, forme de la réponse et erreurs

Exemples valides : #3b82f6, 3b82f6, #abc et ABC. Les espaces autour sont retirés, les lettres peuvent être en majuscules ou minuscules, et le dièse initial est optionnel. Seuls les corps hexadécimaux de trois ou six chiffres sont acceptés ; l'hex alpha à huit chiffres, les noms CSS comme rebeccapurple, les chaînes de fonction rgb() et les champs numériques de canaux séparés sont hors périmètre et rejetés pour que vous le remarquez plutôt que de perdre l'alpha en silence. Le threshold optionnel est un nombre fini de zéro à deux cent cinquante-cinq inclus ; omettez-le pour utiliser cent vingt-huit. Envoyez un corps JSON avec une chaîne color obligatoire. Le champ color accepte les alias hex, value, text, input et code. En succès la réponse renvoie input_hex et input_rgb de la source résolue, les canaux entiers r g b avec alias red green blue, source comme hex3 ou hex6, brightness sur l'échelle de zéro à deux cent cinquante-cinq avec précision d'affichage fixe, brightness_0_1 comme luminosité divisée par deux cent cinquante-cinq, threshold, classification comme light ou dark, les booléens is_light et is_dark, recommended_text comme dark ou light, recommended_text_hex comme #000000 ou #ffffff, formula rappelant la somme pondérée BT.601, method égal à perceived_brightness_bt601, message comme court résumé en anglais et steps comme lignes de substitution ordonnées pour l'enseignement ou le débogage. Une validation échouée — color manquant, chaîne vide, mauvaise longueur hex, caractères non hex, préfixe de programmation 0x ou seuil hors plage — renvoie invalid_input et n'est jamais facturée. Le tarif est un $0.002 forfaitaire par requête réussie avec unité item. Préférez envoyer le jeton exact exporté par votre outil de design ; la réponse normalise toujours la source en un input_hex à six chiffres en minuscules pour que les diffs en aval restent stables.

Conseils pratiques, limites et recherches associées

Les tâches en échec qui renvoient invalid_input ne consomment pas le solde prépayé, ce qui garde bon marché les scripts d'exploration et la validation de formulaires lorsque l'on colle des valeurs imparfaites du presse-papiers. Épinglez classification, brightness et recommended_text_hex dans les tests automatisés pour qu'un futur changement de seuils par défaut ou d'arrondi ne passe pas en silence, et documentez que method est perceived_brightness_bt601 lorsque vous stockez des résultats à côté d'autres systèmes de luminance.

Tests unitaires des décisions de superposition

Figez des classifications clair/sombre connues à partir de fixtures hex pour que les moteurs de thème détectent les régressions lorsque l'arithmétique de luminosité change.

Comment le classifieur décide-t-il si la couleur est claire ou sombre ?

Il calcule la luminosité perçue BT.601 = 0.299×R + 0.587×G + 0.114×B sur des canaux 8 bits, puis compare à un seuil (par défaut 128). brightness ≥ threshold → light ; sinon dark.

Consulter la documentation complète du KIT →