Gerador de ThumbHash
Crie ThumbHashes (alternativa moderna ao BlurHash) ~25 bytes que renderizam thumbnails coloridos como placeholder antes da imagem real.
ThumbHash: o formato moderno de placeholder de imagem
ThumbHash é um formato muito compacto de placeholder para imagens, criado por Evan Wallace — cofundador e ex-CTO da Figma — e liberado como open source em 2023. Ele resolve o mesmo problema do BlurHash (mostrar uma prévia significativa enquanto a imagem completa carrega), mas produz strings menores, qualidade visual melhor e suporta canal alfa para assets com transparência.
Como o BlurHash, o ThumbHash usa uma Transformada Discreta de Cosseno (DCT) para manter só os componentes de baixa frequência da imagem. O empacotamento de bits é bem mais eficiente: hashes típicos têm 10 a 25 caracteres em base64, contra 25 a 35 do BlurHash, e o preview decodificado normalmente parece melhor — especialmente em fotografias e cenas escuras.
O que o ThumbHash melhora em relação ao BlurHash
- Payload menor: ~25 bytes contra ~30 do BlurHash equivalente, com qualidade discutivelmente melhor.
- Reprodução melhor das cores dominantes: ThumbHash preserva explicitamente a cor média e o tom das bordas.
- Suporte a canal alfa: representa PNGs e WebPs semi-transparentes — o BlurHash não consegue.
- Aspect ratio embutido: você não precisa guardar largura e altura ao lado do hash.
- Decode mais rápido: ~3 ms em celular mediano, contra ~5 ms do BlurHash.
Fluxo de codificação
A implementação de referência está em github.com/evanw/thumbhash com demo ao vivo em thumbhash.com. O pipeline é idêntico ao do BlurHash:
// Node.js encode
import { rgbaToThumbHash } from 'thumbhash'
import sharp from 'sharp'
const { data, info } = await sharp(buf)
.resize(100, 100, { fit: 'inside' })
.ensureAlpha().raw().toBuffer({ resolveWithObject: true })
const hash = rgbaToThumbHash(info.width, info.height, data)
const b64 = Buffer.from(hash).toString('base64')
Há ports oficiais em JavaScript, TypeScript, Python, Swift, Java, Rust, Go e PHP. O encoder espera uma imagem já reduzida para no máximo 100×100 — qualquer coisa maior é CPU jogado fora.
Migrando de BlurHash para ThumbHash
Não existe migração in-place: as strings de BlurHash e ThumbHash não são intercambiáveis. O caminho padrão é:
- Adicione uma nova coluna (por exemplo
thumb_hash) sem remover o BlurHash existente. - Recodifique sob demanda — gera o ThumbHash quando a imagem for tocada de novo, ou em batch no background.
- Faça fallback para o BlurHash quando o campo novo estiver nulo, e remova a coluna antiga quando a cobertura chegar a 100%.
- Ambos os formatos são minúsculos (
~30 bytes), então manter os dois durante a transição custa praticamente nada.
Adoção e pipelines modernos
A adoção ainda é incipiente, mas acelerando. A Cloudinary anunciou suporte a ThumbHash em 2024, a Imgix está avaliando, e vários plugins de Next.js já o oferecem como drop-in para o placeholder="blur" nativo. Para interfaces em dark mode, o ThumbHash é particularmente útil porque a extração da cor de fundo facilita escurecer ou inverter o placeholder antes da imagem chegar.
Perguntas frequentes
ThumbHash substitui o BlurHash? Ele se posiciona como sucessor — mesmo modelo amigável, strings menores, qualidade melhor e suporte a transparência — mas o BlurHash continua testado em produção e perfeitamente válido para projetos existentes.
A adoção já é forte? Está crescendo rápido: Cloudinary já oferece suporte nativo e várias libs open source já têm encoder. A expectativa é virar padrão em 2026.
Qual o tamanho mínimo de string? Cerca de 10 caracteres em base64 para imagens muito pequenas. Fotografias típicas ficam entre 18 e 25 caracteres.
Suporta transparência? Sim — diferente do BlurHash, o ThumbHash codifica o canal alfa, o que o torna ideal para logos, stickers e cutouts de produto.
Devo codificar em resolução cheia ou em thumbnail? Sempre reduza para no máximo 100×100 antes de codificar. A DCT só captura baixas frequências, então entrada maior é só desperdício de CPU.
Ferramentas Relacionadas
Gerador de Manuscrito
Converte texto digitado em uma imagem com aparência de letra manuscrita. Útil para tornar trabalhos digitais mais pessoais.
Gerador de Currículo
Preenche um currículo simples (CV) imprimível em A4 a partir de formulário com dados pessoais, formação e experiência.
Gerador de Favicon
Gera favicon a partir de texto/emoji em todos os tamanhos comuns (16, 32, 48, 64, 192, 512). Download como PNG.