Por Que Cartões de "Tocando Agora" Saem Cinzas

14 de setembro de 2026 · 7 min de leitura

Um cartão de "tocando agora" são duas decisões de cor e um pouco de layout. As duas decisões costumam ser tomadas por uma única linha de código, e as duas estão erradas de um jeito que dá para medir em cerca de um segundo cada.

A primeira linha tira o fundo da média da arte de capa. A segunda escreve o texto em branco. Veja o que cada uma faz de verdade.

A média de uma imagem é uma cor que a imagem não contém

Pegue seis faixas iguais de matizes totalmente saturados — vermelho, amarelo, verde, ciano, azul, magenta — e faça a média de cada pixel. A resposta é rgb(128, 128, 128). Saturação 0,0. Cinza exato, de uma imagem que não tem cinza nenhum em lugar algum.

E isso não é esquisitice de uma única imagem forçada. Medimos três:

CapaMédiaSaturaçãoPresente na arte?
Seis matizes saturados128, 128, 1280,0 %Não
Metade vermelho, metade azul128, 0, 128100 %Não
Verde sobre quase preto27, 103, 5258,5 %Não

Nas três a cor média estava ausente da arte. Metade vermelho sobre metade azul dá roxo; não há roxo na imagem. Verde sobre quase preto dá um verde mais escuro e mais apagado do que o verde que está lá.

E o padrão por trás disso é a parte que importa: quanto mais colorida a capa, mais cinza a média dela, porque matizes opostos se cancelam. Uma capa marcante ganha um cartão apagado. Uma capa monocromática ganha um cartão fiel. É exatamente o contrário do que qualquer um quer, e é por isso que tantos desses cartões parecem o mesmo retângulo desbotado, não importa o que você jogou neles.

O que escolher no lugar

A correção é escolher uma cor que esteja de fato na imagem. Quantize a capa em baldes — dezesseis níveis por canal já basta —, conte os pixels de cada um e pegue um balde populoso, com peso para saturação, para que o papel branco da capa e a sombra preta dela não vençam por pura área.

Na capa de seis matizes isso devolve um vermelho que a imagem realmente contém. Numa capa de verdade devolve a cor para a qual você teria apontado. A diferença é uma passada sobre uma miniatura de 96 × 96, que não custa nada.

Texto branco falha em quase dois terços das cores

Agora a segunda linha. Qualquer que seja a cor que saiu do primeiro passo, o texto entra em branco.

Amostramos 636.056 cores do cubo sRGB e calculamos a razão de contraste WCAG de cada uma contra branco e contra preto. 4,5:1 é o limiar para texto corrido:

Cor do textoPassa em 4,5:1Passa em 3,0:1
Sempre branco36,4 %56,9 %
Sempre preto65,3 %

Um cartão que sempre escreve em branco fica abaixo do limiar de legibilidade em 63,6 % das cores em que pode cair. Não ilegível de forma dramática — é legível na sua própria tela, em tamanho cheio, quando você já sabe o que está escrito. Deixa de ser legível no celular de outra pessoa, à luz do dia, em tamanho de miniatura, que é o único lugar onde ele de fato vai ser visto.

Essa aqui você nunca precisa perder

Aqui está a parte que vale saber, e ela é mais forte que uma heurística.

Varremos todas as 16.777.216 cores sRGB — o espaço inteiro, não uma amostra — e pegamos, para cada cor, o melhor entre o contraste contra branco e contra preto. O pior caso do cubo inteiro é 4,58:1, em rgb(207, 13, 204).

4,58 está acima de 4,5. Não existe cor de fundo em que branco e preto falhem os dois no limiar. Escolher entre eles por cor não é uma regra de bolso que costuma funcionar; é legível por construção, em todo lugar, e custa uma comparação:

function pickText(bg) {
    return contrast(bg, WHITE) >= contrast(bg, BLACK) ? WHITE : BLACK;
}

E o número medido também não é artefato da varredura. Ele bate exatamente com a forma fechada. O contraste contra branco cai conforme o fundo clareia e o contraste contra preto sobe, então o pior caso fica onde as duas curvas se cruzam — na luminância relativa √(1,05 × 0,05) − 0,05 = 0,1791, dando 1,05 / 0,2291 = 4,5826. A varredura exaustiva e a álgebra concordam em quatro casas decimais.

A terceira coisinha

Já que estamos aqui: títulos de faixa são longos, e a maioria dos geradores deixa eles saírem pela borda do cartão ou encolhe a fonte até a linha do artista parecer outro design. Um canvas sabe medir texto — ctx.measureText(s).width —, então o comportamento honesto é medir, cortar com reticências na largura disponível e deixar o corpo da fonte em paz. São três linhas e ninguém faz.

O que fazer quando você criar um

Experimente

Nosso gerador de cartão tocando agora faz tudo isso e mostra o segundo cartão ao lado do seu — cor média, texto branco, do jeito de sempre — para a diferença ficar visível em vez de afirmada. Ele informa a razão de contraste que conseguiu e a que o texto branco teria dado. Tudo acontece no seu navegador; a arte de capa nunca é enviada.

Se a capa ainda não é quadrada, o redimensionador de imagem resolve isso primeiro, e o verificador de área segura mostra o que a interface do story vai cobrir quando você postar o cartão.

Perguntas frequentes

Por que fazer a média de uma capa dá cinza?

Porque matizes opostos se cancelam. Vermelho e ciano dão cinza na média, assim como amarelo e azul; uma capa com um leque de cores saturadas tem média perto do meio do cubo. Seis faixas iguais de matizes saturados deram exatamente rgb(128, 128, 128), saturação 0,0.

4,5:1 é um limiar de verdade ou uma recomendação?

É o limiar WCAG AA para texto corrido em tamanho normal, e é recomendação no sentido de que nada obriga a cumprir isso num post. Também é o ponto abaixo do qual o texto mensuravelmente custa esforço de leitura — para mais gente, e mais esforço, quanto mais abaixo você for.

Escolher entre branco e preto nunca falha mesmo?

Em lugar nenhum do sRGB. Varremos todas as 16.777.216 cores e o pior caso para o melhor dos dois é 4,5826:1, que bate com a forma fechada: as curvas se cruzam na luminância sqrt(1,05 x 0,05) - 0,05 = 0,1791. Acima de 4,5, em todo lugar.

E texto colorido em vez de branco ou preto?

Pode ficar melhor e é mais difícil de garantir — uma cor de texto tingida precisa ser checada contra o fundo do mesmo jeito, e a maioria dos tons que as pessoas escolhem fica perto do fundo do qual foram derivados. Preto e branco são as duas cores cujo pior caso você consegue demonstrar.

Por que quantizar em vez de pegar a cor de pixel mais comum?

Porque fotografias e capas impressas raramente repetem um trio RGB exato com frequência suficiente para um único valor significar algo. Quantizar em dezesseis níveis por canal agrupa pixels quase idênticos para a contagem significar alguma coisa, e o peso por saturação impede que o branco do papel ou o preto da sombra vença só pela área.