Scurisci un colore hex in percentuale
Ottenga una tonalità più profonda di un colore esadecimale senza andare a occhio: #4A90D9 scurito del 20 % diventa #2873C0, con la stessa tonalità e saturazione e meno luminosità. Con 0 % il colore non cambia; con 100 % diventa nero. Gratis nel Suo browser.
- Gratis
- Funziona nel suo browser
- Senza registrazione
- I suoi dati restano sul dispositivo
Esegui gratis nel browser
Esempio risolto
- Colore
- #4A90D9
- Quantità
- 20
- Originale
- #4A90D9
- Hex
- #2873C0
Designer, sviluppatori front-end e autori di design system hanno costantemente bisogno di tonalità più scure di un colore del brand per stati hover, bordi, ombre e testo accessibile su sfondi chiari. Indovinare un nuovo hex a occhio è lento e incoerente tra gli strumenti. Questa capacità accetta un colore hex e una percentuale di scurimento da zero a cento, converte il colore in HSL, moltiplica la luminosità per uno meno quella percentuale e restituisce l'hex più scuro con le scomposizioni in RGB e HSL. Zero percento mantiene il colore originale; cento percento produce il nero.
Cosa significa scurire in percentuale in HSL
I colori sul web sono spesso memorizzati come hex o RGB, ma i passi percettivi di tonalità sono più semplici in HSL: la tinta (hue) conserva il colore, la saturazione la purezza e la luminosità quanto il campione è vicino al nero o al bianco. Scurire di una percentuale significa ridurre la luminosità mantenendo fisse tinta e saturazione, così un blu del brand resta blu, solo più profondo. Questo strumento moltiplica la luminosità attuale per uno meno quantità su cento.
A zero percento la luminosità è invariata, quindi l'output coincide con l'hex di input normalizzato. A cinquanta percento la luminosità è dimezzata. A cento percento la luminosità diventa zero e il risultato è nero puro indipendentemente dalla tinta di partenza.
Questo modello relativo rispecchia il modo in cui molti token di design scalano gli stati interattivi: un unico token base più un fattore di scurimento per hover o pressed. La sottrazione assoluta di punti di luminosità può eccedere su colori già scuri; la scala relativa resta sempre nell'intervallo e non inventa mai una luminosità negativa.
Contratto d'ingresso: colori hex e la quantità 0–100
Passi il colore come stringa hex in forma breve o lunga: #RGB o #RRGGBB, con o senza il cancelletto iniziale. Le forme brevi si espandono canale per canale, quindi #F0A diventa #FF00AA prima della conversione. Il campo quantità è obbligatorio e deve essere un numero finito tra zero e cento inclusi.
Valori come meno dieci, centouno o testo non numerico vengono rifiutati; la validazione fallita non viene fatturata. In caso di successo la risposta include original come hex a sei cifre maiuscolo normalizzato, hex come risultato scurito, la quantità numerica inviata, rgb con canali interi da zero a duecentocinquantacinque, e hsl con tinta in gradi e saturazione e luminosità su scala da zero a cento dopo il passo di scurimento. L'arrotondamento è deterministico, così rieseguire la stessa coppia non produce derive.
Usi quantità zero per normalizzare ed espandere l'hex breve senza cambiare tonalità, oppure quantità cento quando Le serve un vero nero d'ancoraggio derivato dallo stesso percorso di codice degli scurimenti parziali.
Per una prova veloce o una palette intera
Per un controllo una tantum — confermare che un blu primario si scurisca in modo pulito per l'hover di un pulsante, o che un passo del venti percento rispetti ancora gli obiettivi di contrasto sul bianco — usi lo strumento gratuito nel browser in questa pagina. Non c'è alcuna chiamata di rete all'interno della trasformazione, nessun modello e nessuna dipendenza dall'orologio, quindi i risultati sono sicuri sul margine e memorizzabili in cache.
Quando converte già i formati con un convertitore di colori a parte, lo tenga per i round-trip HEX–RGB–HSL; usi questo scurificatore quando l'intento di ricerca è specificamente una tonalità più scura in percentuale. Abbini entrambi in una pipeline se Le serve l'esportazione CMYK dopo lo scurimento, ma il passo di scurimento in sé richiede solo hex in ingresso e colore strutturato in uscita.
Casi d'uso
Stati hover e pressed dell'interfaccia
Ricava tonalità più scure di pulsanti e link da un unico hex del brand, così gli stili hover e attivi restano coerenti tra i componenti senza scegliere a mano ogni campione.
Accenti del brand per email e PDF
Precalcola hex di accento più scuri per bordi e intestazioni nei template che accettano solo colori statici e non possono calcolare l'HSL al momento del rendering.
Domande frequenti
Quali input accetta lo scurificatore di colori?
Un colore hex (#RGB o #RRGGBB, # facoltativo) e una percentuale da 0 a 100.
Come si calcola il colore più scuro?
L'hex viene convertito in HSL, la luminosità è moltiplicata per (1 − quantità/100), poi riconvertita in hex, RGB e HSL. Tinta e saturazione restano invariate; quantità 100 produce il nero.
Cosa contiene una risposta riuscita?
original (hex di input normalizzato), hex (risultato scurito), amount, rgb {r,g,b} e hsl {h,s,l} dopo lo scurimento.
È lo stesso di un convertitore di formato colore?
No. Un convertitore cambia la rappresentazione (HEX, RGB, HSL) senza spostare la tonalità. Questo strumento scurisce specificamente abbassando la luminosità di una percentuale.
Che cosa fa uno scurimento del 20 % su #4A90D9?
La luminosità cala di un quinto mentre tonalità e saturazione restano ferme, quindi il risultato è #2873C0, cioè RGB 40, 115, 192. Il blu resta lo stesso blu, solo più profondo.
Strumenti correlati
Per sviluppatori — accesso via API
Tutto quello che vedi in questa pagina è disponibile anche via API. Questa sezione è per i team che vogliono integrarlo nei propri sistemi; chi non ne ha bisogno può semplicemente usare lo strumento qui sopra.
Endpoint
Autenticazione con Bearer token: un POST mette in coda l'attività e il risultato arriva via webhook o link firmato.
Chiamala dal tuo stack
curl -X POST https://api.kit.forhosting.com/color/darken \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"color":"#4A90D9","amount":20}'const res = await fetch("https://api.kit.forhosting.com/color/darken", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"color": "#4A90D9",
"amount": 20
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/color/darken",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"color": "#4A90D9",
"amount": 20
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/color/darken", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"color":"#4A90D9","amount":20}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"color":"#4A90D9","amount":20}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/color/darken", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Esempio di richiesta
{
"color": "#4A90D9",
"amount": 20
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "color.darken",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L'API è asincrona: ricevi subito un task_id e puoi fare polling fino a 1 richiesta al secondo.
Prezzi
Prezzo pubblicato, senza token né crediti. Se l'attività fallisce, non paghi.
Errori
| HTTP | Codice | Significato |
|---|---|---|
401 | unauthorized | Chiave API mancante o non valida: controlla l'header Authorization. |
402 | insufficient_balance | Credito esaurito: ricarica per continuare a eseguire attività. |
404 | unknown_type | Tipo di attività sconosciuto: controlla il campo type della richiesta. |
429 | rate_limited | Troppe richieste in poco tempo: rallenta e riprova tra qualche secondo. |
Note tecniche
Le quantità fuori dall'intervallo da zero a cento vengono rifiutate con un chiaro errore invalid_input. Usi lo strumento gratuito del browser per campioni rapidi, oppure l'API a $0.002 per richiesta riuscita quando genera palette in una pipeline.
Contratto d'ingresso: colori hex e la quantità 0–100
Caratteri non validi, lunghezze errate, stringhe vuote e valori non stringa falliscono con invalid_input e un messaggio che indica il campo. Per comodità sono accettati alias: hex, from o text per il colore, e percent, pct o percentage per la quantità.
Dove eseguirlo: strumento gratuito del browser o API automatizzata
La stessa funzione pura alimenta l'API quando costruisce generatori di temi, esporta token di design in proprietà personalizzate CSS o precalcola scale di tonalità per template di email che non possono eseguire script lato client. Ogni chiamata API riuscita costa $0.002; le quantità non valide fuori dall'intervallo da zero a cento e gli hex malformati non consumano saldo prepagato. Inserisca l'endpoint in un ponte per plugin Figma, in un addon di Storybook che mostra i colori degli stati, o in un passo server che materializza superfici in modalità scura da una palette base chiara.
Casi di integrazione
Scale di tonalità dei design token
Genera varianti scure graduate per variabili CSS o JSON di tema applicando percentuali di scurimento fisse ai colori della palette base in CI.
Domande tecniche
Quanto costa l'API?
$0.002 per richiesta riuscita. Lo strumento del browser è gratuito. L'input non valido non viene fatturato.