Générez une couleur complémentaire depuis une valeur hex ou RGB
Une couleur complémentaire se situe exactement à l’opposé d’une couleur de base sur le cercle chromatique.
Lancer gratuitement
Ce générateur accepte une valeur hex ou RGB courante, conserve sa saturation et sa luminosité, fait pivoter sa teinte de 180 degrés et renvoie la base normalisée avec le complément produit. Vous pouvez l’employer pour établir une relation forte entre deux couleurs dans des interfaces, illustrations, graphiques, recherches de marque ou jetons de conception. Le calcul est déterministe : une même entrée valide donne toujours le même résultat, tandis qu’un format incorrect déclenche une erreur explicite.
Saisissez une couleur de base précise
Commencez par la couleur que vous connaissez déjà. Le générateur accepte une valeur hex à trois chiffres comme #369, à six chiffres comme #336699, ces six mêmes chiffres sans dièse, ou une fonction RGB comme rgb(51, 102, 153). Les lettres hex ne sont pas sensibles à la casse et la valeur renvoyée est normalisée en six chiffres majuscules. Les canaux RGB doivent être des entiers compris entre zéro et 255. Les formats ambigus, notamment les noms CSS, canaux alpha, pourcentages, chaînes hex incomplètes et valeurs hors limites, sont refusés plutôt qu’interprétés. Envoyez la valeur dans le champ color ; l’alias value est également accepté. La réponse répète la base normalisée afin que vous puissiez vérifier précisément l’interprétation du service avant d’utiliser le résultat généré.
Comprenez la rotation de teinte de 180 degrés
Le calcul convertit la couleur de base du modèle RGB vers HSL, ajoute 180 degrés à sa teinte, ramène le résultat dans le cercle de 360 degrés, puis le reconvertit en RGB. La saturation et la luminosité restent inchangées. Il s’agit d’un complément chromatique et non d’une simple inversion de chaque canal RGB. Le rouge évolue vers le cyan, le vert vers le magenta et le bleu vers le jaune. L’arrondi intervient uniquement lors du retour aux canaux RGB entiers. Les gris neutres ont une saturation nulle et aucune teinte visible ; la rotation ne change donc pas leur aspect. La réponse fournit le format hex ainsi que les canaux rouge, vert et bleu séparés pour la base et le complément. Cette structure convient à un usage visuel comme aux chaînes automatisées, sans imposer l’analyse d’une chaîne formatée.
Employez le résultat comme relation initiale
Les couleurs complémentaires créent une séparation marquée, mais la paire brute constitue un point de départ et non une garantie d’accessibilité ou d’harmonie. Deux compléments très saturés utilisés à parts égales peuvent vibrer visuellement ; de nombreuses interfaces choisissent donc une teinte dominante et réservent son complément à un accent, un état, une série de données ou un appel à l’action. Vous pouvez aussi produire des tons clairs et foncés à partir des deux couleurs. Pour le texte et les commandes, vérifiez le contraste sur le fond réel, car des positions opposées n’assurent pas une luminance égale. Le résultat déterministe aide un processus de build à dériver toujours le même accent d’une couleur de marque. Il convient aussi au prototypage, aux graphiques, aux thèmes et aux pipelines de ressources. Les appels API utilisent le tarif de base publié de $0.002, tandis que le navigateur exécute localement le même calcul pur.
Cas d’usage
Créez un accent d’interface
Produisez une teinte opposée pour les boutons, badges, surbrillances ou éléments de focus à partir d’une couleur de thème existante.
Composez une palette à deux séries
Dérivez une seconde teinte bien distincte de la première série, puis contrôlez le contraste dans le graphique final.
Automatisez les jetons de conception
Transformez une valeur hex de marque enregistrée en jeton complémentaire déterministe pendant un build ou la création d’un thème.
Questions fréquentes
Quels formats de couleur sont acceptés ?
Utilisez un hex à trois ou six chiffres, un hex à six chiffres sans dièse, ou rgb(r, g, b) avec des canaux entiers de 0 à 255.
Comment la couleur complémentaire est-elle calculée ?
La valeur RGB est convertie en HSL, sa teinte pivote de 180 degrés, puis le résultat est reconverti en RGB.
Est-ce identique à l’inversion des canaux RGB ?
Non. Le générateur fait pivoter la teinte en conservant saturation et luminosité HSL ; l’inversion RGB est une autre opération.
Que deviennent le gris, le blanc ou le noir ?
Les couleurs neutres n’ont pas de teinte visible ; une rotation de teinte ne modifie donc pas leur apparence.
Quel est le prix d’un appel API ?
Chaque appel applique le tarif de base publié de $0.002. Le même calcul déterministe est proposé dans l’expérience du navigateur.
Pour les développeurs — accès API
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.
Endpoint
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é.
Appeler depuis votre stack
curl -X POST https://api.kit.forhosting.com/color/complementary-generate \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"color":"#336699"}'const res = await fetch("https://api.kit.forhosting.com/color/complementary-generate", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"color": "#336699"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/color/complementary-generate",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"color": "#336699"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/color/complementary-generate", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"color":"#336699"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"color":"#336699"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/color/complementary-generate", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemple de requête
{
"color": "#336699"
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "color.complementary_generate",
"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.
Tarifs
Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.
Erreurs
| HTTP | Code | Signification |
|---|---|---|
401 | unauthorized | Clé API absente ou invalide : vérifiez l’en-tête Authorization. |
402 | insufficient_balance | Solde insuffisant : rechargez votre compte pour lancer cette tâche. |
404 | unknown_type | Type de tâche inconnu : vérifiez le champ type de votre requête. |
429 | rate_limited | Trop de requêtes : ralentissez la cadence, puis réessayez. |