BrowserTools
Início / Conversores / Conversor de cor e verificador de contraste

Conversor de cor e verificador de contraste

Converte cores entre HEX, RGB, HSL e HSV, além de verificar o rácio de contraste WCAG.

A carregar Conversor de cor e verificador de contraste… Se nada acontecer, ativa o JavaScript.

A representação digital da cor evoluiu através de vários sistemas concorrentes, cada um otimizado para um fim diferente. O formato hexadecimal #RRGGBB surgiu nos primeiros tempos do HTML na década de 1990, quando a web de Tim Berners-Lee precisava de uma forma concisa de especificar os 16 milhões de cores que os ecrãs de 24 bits conseguiam mostrar. O formato codifica as intensidades dos canais vermelho, verde e azul como números hexadecimais de dois dígitos, tornando-o compacto para a marcação sem deixar de ser legível por humanos. RGB (vermelho, verde, azul) é o modelo de cor aditivo usado por todos os ecrãs digitais: misturar luz a plena intensidade produz branco, o oposto de como a tinta se comporta. HSL (tom, saturação, luminosidade) e HSV (tom, saturação, valor) são transformações cilíndricas do RGB que se alinham mais de perto com a forma como os humanos percecionam a cor, o que as torna indispensáveis para construir paletas de design sistemáticas.

Exemplos

Entrada #ff5733
Saída rgb(255, 87, 51)

Cada par hexadecimal corresponde a um canal vermelho, verde, azul (0-255).

Entrada rgb(255, 87, 51)
Saída hsl(11, 100%, 60%)

A mesma cor expressa como tom, saturação, luminosidade.

Perguntas frequentes

É enviado algum dado para um servidor quando uso esta ferramenta?
Não. Todas as conversões de cor e cálculos de contraste acontecem inteiramente no teu navegador usando JavaScript. Nenhum valor de cor, código hexadecimal ou qualquer outro dado é transmitido para qualquer servidor. Podes usar esta ferramenta com toda a segurança com cores de marca proprietárias.
Como funciona o formato de cor hexadecimal?
O formato #RRGGBB codifica três canais de cor (vermelho, verde e azul), cada um como um número hexadecimal de dois dígitos que vai de 00 (0 em decimal, sem intensidade) a FF (255 em decimal, intensidade máxima). Isto dá 256 valores possíveis por canal e 256^3 = 16 777 216 cores possíveis. A forma abreviada #RGB duplica cada dígito, por isso #abc expande-se para #aabbcc.
Quando devo usar HSL em vez de RGB no meu CSS?
O HSL é muito mais intuitivo para o trabalho sistemático com cor. Se quiseres uma versão mais clara de uma cor, basta aumentar o valor de luminosidade. Para criar uma versão mais esbatida, baixa a saturação. Isto torna o HSL ideal para gerar tokens de design, sistemas de temas e paletas de cor acessíveis de forma programática, ao passo que o RGB exige conhecer as relações numéricas exatas entre canais para obter o mesmo efeito.
Que rácio de contraste WCAG preciso para o meu site?
As WCAG 2.1 de nível AA exigem um rácio de contraste de pelo menos 4,5:1 para texto de tamanho normal e 3:1 para texto grande (18 pt ou 14 pt a negrito). O nível AAA exige 7:1 para texto normal e 4,5:1 para texto grande. A maioria dos requisitos legais de acessibilidade, incluindo a Diretiva de Acessibilidade Web da UE e a Secção 508 dos EUA, tomam como referência o padrão AA como mínimo.
Porque é que os mesmos valores HSL às vezes parecem diferentes em navegadores diferentes?
O HSL tradicional opera no espaço de cor sRGB. Os navegadores modernos suportam cada vez mais gamas de cor mais amplas (Display P3, Rec. 2020) através da especificação CSS Color Level 4. As cores definidas com oklch() ou color(display-p3 ...) podem parecer mais vivas do que os seus equivalentes sRGB em ecrãs de gama ampla, e é por isso que os mesmos valores numéricos HSL em sRGB podem parecer subtilmente diferentes num iPhone face a um monitor padrão.
Qual é a história das cores web?
As primeiras 16 cores HTML com nome (como red, blue, lime) vieram da paleta CGA do IBM PC original. O Netscape Navigator 1.1 em 1994 introduziu o formato hexadecimal #RRGGBB como extensão, e o Internet Explorer adotou-o rapidamente. O W3C padronizou o conjunto completo de 140 cores com nome e a notação hexadecimal no CSS1 em 1996. A especificação moderna de CSS Color suporta agora milhares de cores com nome e múltiplos espaços de cor.
Posso converter cores com transparência?
Sim. Introduz uma cor hexadecimal com canal alfa usando o formato de oito dígitos #RRGGBBAA, ou usa a notação RGBA ao escrever um valor RGB. A ferramenta preserva e converte o canal alfa em todos os formatos. Repara que o HSL e o HSV não têm canal alfa de forma nativa, por isso o alfa é mostrado como um valor separado quando converte para esses formatos.
Em que difere esta ferramenta das DevTools do navegador?
Os seletores de cor das DevTools do navegador são excelentes, mas limitam-se às cores já presentes no teu CSS. Esta ferramenta permite-te introduzir livremente qualquer valor de cor, independentemente da sua origem (um ficheiro de design, um seletor de cor de uma captura de ecrã, um guia de marca impresso), e ver instantaneamente todos os formatos equivalentes, além do rácio de contraste face a qualquer cor de fundo que especifiques.
Que valores de cor deve um programador saber de cor?
Alguns são universalmente úteis: #000000 é preto, #ffffff é branco, #ff0000 é vermelho puro, #00ff00 é verde puro, #0000ff é azul puro e #808080 é cinzento médio. Em termos das WCAG, texto preto sobre fundo branco tem um rácio de contraste de 21:1, que é o máximo teórico.
Qual é um erro comum de principiante com as cores hexadecimais?
Um erro muito comum é confundir a expansão da forma abreviada #RGB. #fff expande-se para #ffffff (branco), e não para #f0f0f0. Outro erro frequente é confundir a mistura aditiva do RGB com a mistura subtrativa da tinta: no RGB, combinar vermelho (#ff0000) e verde (#00ff00) produz amarelo (#ffff00), e não castanho, porque os ecrãs digitais emitem luz em vez de a absorverem.

Sobre Conversor de cor e verificador de contraste

Os designers usam códigos hexadecimais ao escrever folhas de estilo CSS e ao escolher cores de marca em ferramentas como o Figma ou o Sketch. Os programadores front-end mudam para RGB ou RGBA quando precisam de aplicar opacidade ou de fazer mistura de cores programática em canvas ou WebGL. O HSL é o preferido para gerar escalas de cor de forma algorítmica; por exemplo, mantendo o tom fixo enquanto se escalona a luminosidade para criar uma rampa de tons consistente. O HSV é o formato nativo da maioria dos widgets seletores de cor porque o seu eixo de valor corresponde de forma intuitiva ao controlo deslizante de brilho. Os engenheiros de acessibilidade apoiam-se nos cálculos do rácio de contraste para garantir que o texto continua legível para utilizadores com baixa visão ou daltonismo, um requisito exigido pelas WCAG 2.1 e aplicado nos sites do setor público em toda a UE e nos EUA.

Esta ferramenta converte qualquer cor que introduzas para as quatro notações em simultâneo e também calcula o rácio de contraste WCAG entre a tua cor e qualquer fundo que especifiques. Tudo corre no teu navegador sem pedidos ao servidor. Podes colar um código hexadecimal, escrever valores RGB ou introduzir coordenadas HSL, e a ferramenta mostra-te instantaneamente todas as representações equivalentes. O verificador de contraste dá-te um resultado de aprovado ou reprovado face aos limiares AA e AAA das WCAG.

Um erro comum é confundir HSL e HSV: ambos usam tom e saturação, mas o seu terceiro eixo difere de formas importantes. No HSL, uma luminosidade de 100 % produz sempre branco, independentemente do tom ou da saturação. No HSV, um valor de 100 % produz o tom puro (brilho máximo), e não branco. Outro erro frequente é esquecer que a forma abreviada hexadecimal #RGB se expande para #RRGGBB duplicando os dígitos, por isso #f09 significa #ff0099, e não #f00009. Ao trabalhar com opacidade, repara que o CSS aceita tanto o hexadecimal de oito dígitos (#RRGGBBAA) como a função rgba(), mas alguns navegadores e ferramentas de design mais antigos só suportam a forma rgba().

Como 16 milhões de cores acabaram num código de seis caracteres

Antes da web, a cor nos ecrãs dos computadores era uma questão de severas limitações. A placa gráfica CGA original de 1981 oferecia apenas 16 cores, cuidadosamente escolhidas para serem distinguíveis nos monitores da época. O padrão EGA ampliou isto para 64, e o VGA acabou por oferecer 256 cores de uma paleta fixa. Só quando os ecrãs de cor verdadeira de 24 bits se tornaram acessíveis no início da década de 1990 é que o espectro completo de 16 777 216 cores ficou disponível para o hardware de consumo, e a web precisou de uma notação para os descrever a todos.

Os engenheiros do Netscape Navigator escolheram o hexadecimal porque correspondia na perfeição ao hardware subjacente: cada um dos três canais de cor de 8 bits (0-255) pode ser expresso como exatamente dois dígitos hexadecimais (00-FF), dando um código de seis caracteres compacto e inequívoco. O formato apareceu no Netscape 1.1 por volta de 1994 e foi rapidamente copiado pelo Internet Explorer. O W3C formalizou-o na especificação CSS1 em 1996, consolidando o seu lugar como a abreviatura universal da cor web. As palavras-chave de cores com nome (red, blue, aqua) foram herdadas diretamente das 16 cores VGA padrão, com cores adicionais retiradas do sistema de janelas X11 usado nas estações de trabalho Unix.

A viragem para os espaços de cor percetualmente uniformes é o capítulo seguinte na história da cor web. O RGB e o HSL tradicionais são matematicamente simples mas percetualmente não uniformes: um passo de dez unidades de luminosidade no HSL parece muito diferente consoante o tom, o que dificulta os cálculos fiáveis de acessibilidade. A especificação CSS Color Level 4 introduz o OKLCH e o OKLAB, espaços de cor desenhados para que diferenças numéricas iguais correspondam a diferenças percecionadas iguais. Estes espaços já são suportados nos navegadores modernos e representam a evolução mais significativa na forma como os programadores especificam a cor desde que o formato hexadecimal original foi introduzido há trinta anos.

Apoiar