Você sabia que as imagens representam, em média, mais de 50% do peso total de uma página web? Um arquivo de alta resolução não otimizado pode ultrapassar 5MB, enquanto uma versão otimizada pode chegar a 150KB sem perda perceptível de qualidade. Dominar a otimização de imagens é o passo mais rápido para melhorar o Largest Contentful Paint (LCP) e garantir uma melhor posição nos resultados de busca do Google.

Formatos de Imagem de Próxima Geração

  • WebP: O padrão da indústria atual. Oferece compressão 30% superior ao JPEG, suportando transparência e animações. Compatível com 97% dos navegadores modernos.
  • AVIF: O futuro da compressão web. Consegue ser até 50% menor que o JPEG mantendo uma fidelidade de cor impressionante. Ideal para sites que priorizam máxima performance.
  • JPEG (Progressivo): Ainda essencial para compatibilidade total. Use a versão progressiva para que a imagem carregue gradualmente em conexões lentas.
  • SVG: Formato vetorial perfeito para logotipos e ícones. É infinitamente escalável e seu peso é medido em bytes, não kilobytes.
  • PNG-8: Ótima alternativa para gráficos simples com poucas cores, sendo muito mais leve que o tradicional PNG-24.

A Tag <picture> e a Entrega Inteligente

Não force todos os usuários a baixarem o mesmo arquivo. Use a negociação de conteúdo para servir AVIF para navegadores modernos e JPEG como fallback.

Implementação de Fallback
<picture>
  <source srcset="banner.avif" type="image/avif">
  <source srcset="banner.webp" type="image/webp">
  <img src="banner.jpg" alt="Destaque do artigo" width="1200" height="600">
</picture>

Imagens Responsivas com srcset

Entregar uma imagem de 2000px para um smartphone de 400px de largura é um desperdício de banda. O atributo srcset permite que o navegador escolha a melhor dimensão baseada na densidade de pixels do dispositivo.

Exemplo de srcset e sizes
<img
  src="foto-media.jpg"
  srcset="
    foto-pequena.jpg 480w,
    foto-media.jpg 800w,
    foto-grande.jpg 1200w
  "
  sizes="(max-width: 600px) 480px, 800px"
  alt="Exemplo de imagem responsiva"
  loading="lazy"
  width="800"
  height="600"
>

O Poder do Lazy Loading Nativo

O carregamento preguiçoso (lazy loading) instrui o navegador a carregar apenas as imagens que estão visíveis ou próximas da área de visualização (viewport), economizando dados e processamento inicial.

Configuração de Carregamento
<!-- Para imagens abaixo da dobra (Lazy) -->
<img src="detalhe.webp" loading="lazy" alt="Descrição" width="600" height="400">

<!-- Para a imagem principal/LCP (Eager) -->
<img src="hero.webp" loading="eager" fetchpriority="high" alt="Banner principal">

Evite o Salto de Layout (CLS)

O Cumulative Layout Shift (CLS) ocorre quando uma imagem carrega e "empurra" o conteúdo para baixo. Para evitar isso, sempre defina os atributos de largura (width) e altura (height). Isso cria um placeholder invisível que reserva o espaço correto antes do download ser concluído.

Prevenindo Mudanças de Layout
<!-- Defina dimensões explícitas -->
<img src="produto.webp" width="800" height="600" alt="Produto">

<style>
  img {
    max-width: 100%;
    height: auto; /* Mantém a proporção baseada no width/height */
  }
</style>

Ferramentas de Compressão Profissional

  • Squoosh.app: Web app do Google que permite testar diferentes codecs em tempo real.
  • Sharp (Node.js): A biblioteca mais rápida para processamento em lote e redimensionamento automático via código.
  • TinyPNG: Excelente para compressão lossy de arquivos PNG e JPEG com ótima retenção visual.
  • CDNs de Imagem: Serviços como Cloudinary e Imgix transformam imagens dinamicamente via URL, aplicando compressão e redimensionamento sob demanda.
Automação com Sharp
import sharp from 'sharp';

// Converter para WebP otimizado
await sharp('original.jpg')
  .webp({ quality: 75, effort: 6 })
  .resize(1000)
  .toFile('otimizada.webp');

Checklist de SEO para Imagens

  • ✅ Priorize WebP e utilize AVIF para navegadores compatíveis.
  • ✅ Utilize o atributo alt com palavras-chave descritivas e naturais.
  • ✅ Ative o loading="lazy" em todas as imagens fora da dobra inicial.
  • ✅ Nunca utilize lazy loading na sua imagem principal de LCP.
  • ✅ Defina proporções de aspecto (width/height) para garantir 0 de CLS.
  • ✅ Utilize nomes de arquivos amigáveis (ex: tenis-corrida-azul.jpg em vez de IMG_001.jpg).
  • ✅ Comprima todas as mídias para ficarem abaixo de 200KB sempre que possível.

Melhore a Performance do Seu Código

Além das imagens, minificar o código do seu site reduz drasticamente o tempo de resposta.