# CLS no WordPress: Como zerar o layout shift em 5 passos

O <strong>CLS</strong> mede o quanto o layout do seu site pula durante o carregamento, e o alvo é ficar em 0,1 ou menos. Segundo o web.dev (2024), um CLS bom fica em 0,1 ou menos no percentil 75 dos acessos. As três causas dominantes são imagens sem dimensão, fontes externas e blocos injetados por JavaScript. Resolver essas três zera quase todo o índice.

O CLS, ou Cumulative Layout Shift, é a métrica dos Core Web Vitals que pontua a estabilidade visual da página enquanto ela carrega. Quando uma imagem entra sem espaço reservado, o texto abaixo dela é empurrado, e esse pulo conta pontos contra você. No WordPress, o problema quase sempre vem de imagens sem largura declarada, fontes carregadas de fora e banners injetados depois do load. Nos tickets de performance que chegam na FULL, o CLS é o vital que mais confunde, porque ele passa no teste de laboratório e falha no usuário real. Este guia mostra a origem de cada shift e como derrubar o CLS abaixo de 0,1 sem reescrever o tema. Para o contexto completo das três métricas, veja o guia de <a href="https://full.services/core-web-vitals-wordpress/">Core Web Vitals no WordPress</a> e a categoria de <a href="https://full.services/performance-wordpress/">conteúdos de performance WordPress</a>.

---

## Primeiros passos: O que o CLS mede e qual é o alvo

O CLS soma cada deslocamento inesperado de elemento visível durante o carregamento, e a meta oficial é ficar em 0,1 ou menos. Segundo o web.dev (2024), que documenta os Core Web Vitals, um <a href="https://web.dev/articles/cls" rel="noopener" target="_blank">CLS bom fica em 0,1 ou menos no percentil 75</a> dos acessos; entre 0,1 e 0,25 é "precisa melhorar" e acima de 0,25 é ruim.

A tabela abaixo resume o diagnóstico que aplicamos antes de tocar em qualquer plugin, cruzando faixa de índice, sintoma visível e a primeira ação que costuma resolver. Use-a como mapa rápido: identifique sua faixa no PageSpeed Insights e siga a coluna de ação. Essa leitura inicial economiza tempo, porque cada faixa tem uma causa raiz diferente e atacar a errada não move o número.

<table id="diagnostico-cls-wordpress">
  <caption>CLS no WordPress: faixa do indice, sintoma e primeira acao</caption>
  <thead>
    <tr>
      <th scope="col">Faixa de CLS</th>
      <th scope="col">Sintoma visivel</th>
      <th scope="col">Primeira acao corretiva</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th scope="row">0 a 0,1 (bom)</th>
      <td>Pagina estavel, sem pulos perceptiveis.</td>
      <td>Monitorar no CrUX; manter atributos de dimensao.</td>
    </tr>
    <tr>
      <th scope="row">0,1 a 0,25 (medio)</th>
      <td>Texto reposiciona quando imagem ou fonte carrega.</td>
      <td>Declarar width e height; usar font-display swap.</td>
    </tr>
    <tr>
      <th scope="row">Acima de 0,25 (ruim)</th>
      <td>Conteudo salta com banner ou anuncio tardio.</td>
      <td>Reservar espaco para blocos injetados por JavaScript.</td>
    </tr>
  </tbody>
</table>

---

## Por que o CLS passa no teste e falha no usuário real

A razão número um para essa divergência é o momento da medição: o Lighthouse roda em uma janela fixa de poucos segundos, enquanto o CrUX coleta o índice de campo durante toda a sessão real do usuário, capturando shifts tardios que o laboratório nunca chega a registrar antes de encerrar.

Nos tickets de suporte da FULL, em mais de metade dos casos de CLS "fantasma" o culpado é o banner de consentimento de cookies injetado por JavaScript segundos após o load. O Lighthouse encerra a medição antes de o banner aparecer, então marca o índice abaixo de 0,1; o usuário real rola a página, o banner entra no topo sem espaço reservado e empurra tudo, gerando um deslocamento de campo acima de 0,2. A solução é reservar altura fixa para o banner via CSS antes de ele renderizar. Sempre meça o CLS no relatório de campo do PageSpeed Insights, porque o número que conta para o ranqueamento é o de campo.

---

## As 3 causas mais comuns de CLS no WordPress

Três fontes respondem por quase todo o CLS que vemos em sites WordPress: imagens sem dimensão, fontes externas e injeção tardia de blocos. A mais frequente é a imagem sem os atributos width e height, que faz o navegador renderizar o texto e depois empurrar o bloco abaixo quando a imagem chega, gerando um índice que tende a passar de 0,25.

A segunda causa é a fonte: uma Google Fonts carregada via @import sem font-display swap em uma conexão 4G produz flash de texto invisível seguido de reflow tipográfico, e o reposicionamento das linhas conta pontos no índice. A terceira é qualquer elemento injetado por JavaScript depois do render, como banner de cookies, barra de promoção ou anúncio, que entra sem espaço reservado. Identificar qual das três domina seu site é o passo que define a correção certa.

---

## Passo a passo: Como reduzir o CLS no WordPress

Reduzir o CLS no WordPress segue cinco passos em ordem de impacto, e os três primeiros costumam derrubar o índice de 0,3 para abaixo de 0,1. A sequência ataca primeiro as causas de maior peso, imagem e fonte, e depois os shifts tardios injetados por JavaScript.

Cada passo tem um check de validação no PageSpeed Insights, então rode o teste de campo entre um passo e outro para medir o ganho real antes de seguir. Ferramentas como WP Rocket, Perfmatters e o próprio editor do tema cobrem todas as etapas sem edição manual de código.

### Passo 1: Declare width e height em todas as imagens

Garanta que cada imagem traga os atributos width e height no HTML, porque eles dizem ao navegador quanto espaço reservar antes do download. O WordPress 5.5+ injeta esses atributos automaticamente em imagens do editor de blocos, mas temas antigos e construtores como Elementor às vezes os removem. Reative a dimensão pelo plugin de otimização e confirme no código-fonte. Esse único ajuste resolve a maior fatia do CLS em blogs com muitas imagens. Veja o tutorial de <a href="https://full.services/lazy-load-tutorial-sobre-como-adicionar-nas-imagens-e-videos/">como aplicar lazy load em imagens e vídeos</a> para combinar carregamento adiado com dimensão reservada.

### Passo 2: Hospede a fonte localmente com font-display swap

Mova a tipografia de Google Fonts externa para hospedagem local e aplique font-display swap, eliminando a requisição de fora que atrasa o render do texto. A fonte externa cria duas falhas: latência da requisição e reflow quando a fonte real substitui a de fallback. Perfmatters e WP Rocket têm a opção "hospedar Google Fonts localmente" em um clique. Com swap ativo, o texto aparece imediatamente na fonte de sistema e troca sem pulo perceptível, mantendo o CLS estável.

### Passo 3: Reserve espaço para blocos injetados por JavaScript

Defina uma altura mínima via CSS para banner de cookies, barra de aviso e qualquer bloco que o JavaScript insere depois do load. Sem esse espaço reservado, o elemento entra e empurra todo o conteúdo abaixo, criando o layout shift tardio que o Lighthouse não detecta. Use min-height no container do banner ou posicione-o como overlay fixo, fora do fluxo do documento. Esse passo resolve o CLS de campo que parecia invisível no teste de laboratório.

### Passo 4: Padronize a dimensão de embeds e anúncios

Aplique aspect-ratio fixo a vídeos do YouTube, mapas e blocos de anúncio, que entram com altura variável e deslocam o conteúdo. Um embed de vídeo sem proporção declarada renderiza primeiro como caixa estreita e depois expande, gerando shift. O CSS aspect-ratio 16 / 9 no wrapper do embed reserva o espaço correto desde o início. Plugins de cache costumam ter um módulo de "embeds responsivos" que faz isso automaticamente.

### Passo 5: Valide o CLS no campo e monitore a regressão

Confirme o ganho no relatório de campo do PageSpeed Insights e ative monitoramento contínuo, porque um plugin novo pode reintroduzir CLS a qualquer deploy. O CrUX leva até 28 dias para refletir a correção, então a queda do índice não é instantânea no relatório de campo. Rode o teste de laboratório para o resultado imediato e acompanhe o campo ao longo do mês. Para um diagnóstico mais amplo do site, use as <a href="https://full.services/ferramentas-testar-desempenho-wordpress-velocidade/">ferramentas de teste de desempenho WordPress</a> que reunimos por categoria.

---

## Quanto o CLS pesa nos Core Web Vitals e no ranqueamento

O CLS é um dos três Core Web Vitals que o Google usa como sinal de experiência da página, ao lado do LCP e do INP. De acordo com o HTTP Archive (2024), que mede Core Web Vitals por CMS em milhões de URLs, o índice aprovado em sites WordPress <a href="https://httparchive.org/reports/cwv-tech" rel="noopener" target="_blank">subiu de forma consistente entre 2023 e 2024</a>.

Esse ganho veio conforme os temas adotaram dimensão automática de imagem no WordPress 5.5 e versões seguintes. Mesmo assim, a estabilidade visual continua sendo o vital que mais reprova em construtores visuais. Tende a ser, na maioria dos sites Elementor que auditamos no suporte, o último dos três a passar, porque o construtor adiciona widgets dinâmicos pesados acima da dobra. Reduzir o TTFB e o tempo de resposta do servidor ajuda o conjunto da nota, mas não corrige o layout shift sozinho quando a causa é estrutural do tema.

---

## Acelere o WordPress com o cache e a otimização do bundle FULL

Resolver CLS, TTFB e cache plugin a plugin custa caro e dá manutenção. O plano PRO da FULL sai por R$849 e inclui WP Rocket e Perfmatters já licenciados e gerenciados, o que dá cerca de R$85 por site quando você distribui o bundle pelos 10 sites do plano, em qualquer hospedagem.

A gente não hospeda seu site: a otimização premium roda no WordPress que você já tem instalado, seja qual for o servidor ou o provedor de hospedagem. No suporte da FULL, a maior parte dos casos de layout shift some quando o cache e o lazy-load entram configurados de fábrica, sem nenhum ajuste manual. Conheça os <a href="https://full.services/planos">planos da FULL</a> e compare o custo por site com a soma das licenças avulsas. Para aprofundar, o <a href="https://full.services/guias/acelere-o-wordpress">guia Acelere o WordPress</a> reúne os tutoriais de performance em sequência.

---

## Quando o CLS não é o seu maior problema

Nem sempre a estabilidade visual é o gargalo do site: em sites com TTFB acima de 800 ms, o ganho de corrigir o layout shift é marginal perto de resolver o tempo de resposta do servidor, que sozinho costuma segurar o LCP inteiro acima da meta.

A gente vê no suporte da FULL casos em que o dono otimiza o índice por dias enquanto o LCP estoura em 5 segundos por hospedagem lenta. Priorize pela métrica que mais reprova no PageSpeed Insights. Se o LCP e o INP estão verdes e só a estabilidade reprova, este guia resolve; se os três reprovam, comece pelo servidor e pelo cache. Para o caso específico de tempo de resposta, veja como <a href="https://full.services/ttfb-wordpress-como-reduzir/">reduzir o TTFB no WordPress</a>, e para sites pesados de construtor, o diagnóstico de <a href="https://full.services/elementor-lento/">Elementor lento</a> aponta os widgets que mais custam.

<p class="wp-caption-text">Legenda: o relatório de campo separa o CLS de laboratório do CLS real do usuário, e é o de campo que conta para o ranqueamento.</p>

<aside aria-label="Metodologia dos Testes">
<h2 id="metodologia-dos-testes">Metodologia dos testes</h2>
<p>As recomendações deste guia vêm da auditoria de Core Web Vitals em sites WordPress da base FULL entre <time datetime="2026-01">janeiro</time> e <time datetime="2026-05">maio de 2026</time>, em WordPress 6.5, PHP 8.2 e os principais construtores visuais. As medições de CLS cruzaram o laboratório do Lighthouse com o relatório de campo do CrUX no PageSpeed Insights, sempre no percentil 75 de acessos reais. Cada correção foi medida antes e depois, isolando uma variável por vez, para atribuir o ganho à ação certa. Os números de comportamento citados refletem padrões recorrentes nos tickets de performance, não um percentual fechado de toda a base.</p>
</aside>

<h2 id="faq">Perguntas frequentes sobre CLS no WordPress</h2>

<details>
  <summary>Por que o CLS do meu site muda entre o teste e o uso real?</summary>
  <p>Porque o laboratório do Lighthouse mede uma janela fixa de carregamento, enquanto o CrUX coleta o CLS de campo durante toda a sessão do usuário. Elementos que entram tarde, como banner de cookies injetado por JavaScript, não aparecem no teste de laboratório mas deslocam o conteúdo do usuário real. O número que vale para o ranqueamento é sempre o de campo, no percentil 75.</p>
</details>

<details>
  <summary>É possível zerar o CLS sem mexer no código do tema?</summary>
  <p>Sim, na maioria dos casos. Plugins como WP Rocket e Perfmatters reativam os atributos width e height nas imagens, hospedam Google Fonts localmente com font-display swap e aplicam aspect-ratio em embeds, sem edição de código. O único ajuste que às vezes exige CSS é reservar altura para o banner de cookies, e mesmo esse muitos plugins de consentimento já oferecem como opção pronta.</p>
</details>

<details>
  <summary>Qual valor de CLS o Google considera bom no WordPress?</summary>
  <p>Um CLS bom fica em 0,1 ou menos, medido no percentil 75 dos acessos, segundo a documentação do web.dev. Entre 0,1 e 0,25 a página fica na faixa "precisa melhorar" e acima de 0,25 é classificada como ruim. O alvo vale igual para mobile e desktop, avaliados de forma separada pelo Google.</p>
</details>

<details>
  <summary>Quanto o CLS pesa na nota dos Core Web Vitals?</summary>
  <p>O CLS é um dos três Core Web Vitals oficiais, junto com LCP e INP, e os três precisam estar verdes para a página passar na avaliação de experiência. Não há um peso percentual público entre eles: reprovar em qualquer um já tira a página do status "bom". Na prática, essa métrica costuma ser a última a passar em sites de construtor visual.</p>
</details>

<details>
  <summary>O que causa CLS em sites feitos com Elementor?</summary>
  <p>No Elementor, o layout shift vem principalmente de widgets dinâmicos acima da dobra que carregam com altura variável e de imagens cujo atributo de dimensão o construtor remove na renderização. Sliders, carrosséis e blocos de post dinâmico entram depois do primeiro paint e deslocam o conteúdo. Declarar dimensão fixa e reservar espaço para esses widgets resolve a maior parte do índice.</p>
</details>

---

## Próximos passos para estabilizar o layout do seu site

Comece medindo o CLS de campo no PageSpeed Insights, identifique se a causa é imagem, fonte ou bloco injetado, e ataque na ordem dos cinco passos: dimensão de imagem, fonte local, espaço para banner, embeds e validação. Essa métrica é o Core Web Vital mais sensível a plugin novo, então monitore o índice depois de cada deploy. Na maioria dos sites WordPress, declarar width e height e hospedar a fonte localmente já derruba o número de 0,3 para abaixo de 0,1. Para continuar aprendendo, o FULL Academy reúne tutoriais, guias e reviews de performance em um só lugar.
