Último dia de Halloween: +30% em uma recargaO bônus vale uma única vez: recarregue de uma vez todo o valor de que precisa. Dê uma olhada no seu painel: há surpresas escondidas. 00h00min00s Receber o bônus
Artigo 28.08.2026 1

O Google disse que nosso site não era eficiente no celular. A culpa era dos contadores

O Search Console sinalizou 102 endereços não eficientes no celular em nosso próprio site, e os mesmos 102 apareciam em verde no desktop. A primeira hipótese, uma animação de fundo, não sobreviveu à medição. Os culpados foram as tags de anúncios, e o detalhe mais caro, uma segunda cópia da mesma biblioteca de 189 KB. Um passo a passo completo com números e um guia de seis etapas.

O Google disse que nosso site não era eficiente no celular. A culpa era dos contadores

O Search Console acendeu o alerta para o nosso próprio site: 102 URLs "ineficazes" no mobile, e as mesmas 102 em verde no desktop. Um site, um layout, dois veredictos. Fomos investigar, a primeira hipótese óbvia estava errada, e o culpado era algo que está em quase todo site e que os donos raramente consideram parte dele. Abaixo está a investigação completa, com medições, e um passo a passo para verificar e corrigir o seu.

O que o Google realmente mede

A métrica é o INP, Interaction to Next Paint. O Google a descreve assim:

"O INP é uma métrica que avalia a capacidade de resposta geral de uma página às interações do usuário, observando a latência de todos os cliques, toques e interações de teclado que ocorrem durante o tempo de vida de uma visita do usuário à página."

Limites: bom é 200 ms ou menos, precisa melhorar é de 200 a 500 ms, ruim é acima de 500 ms.

web.dev, documentação do INP

O ponto-chave para o dono do site entender: o INP não mede a velocidade de carregamento. Ele mede quanto tempo passa entre um toque e a resposta visível na tela. Uma página pode abrir em um segundo e ainda assim ser "ineficaz" se, depois de aberta, estiver ocupada consigo mesma e não conseguir responder a um dedo.

E o segundo ponto importante: esta é uma métrica de campo. O Google a coleta de visitantes reais, não de um teste de laboratório. Por isso o relatório é atualizado com atraso e em uma janela móvel: não haverá verde instantâneo depois de uma correção.

Por que o mobile está vermelho e o desktop está verde

A resposta é sem graça e explica toda a diferença: o processador de um celular é de quatro a oito vezes mais lento que o de um desktop. O mesmo trecho de trabalho que leva 60 ms em um notebook e passa despercebido se estica para 300–500 ms em um celular, e a pessoa já vê o botão "travando". O layout não tem nada a ver com isso: o código é idêntico, só muda a velocidade de execução.

A primeira hipótese estava errada

A nossa página inicial tem uma animação de fundo, e a suspeita recaiu sobre ela imediatamente, como acontecerá com a maioria dos donos: "algo no site está se mexendo, então é isso que está deixando lento." Em vez de desativá-la e torcer, medimos três variantes da mesma tela: como está, com a animação desligada e com as tags de terceiros bloqueadas.

O que medimos não foi uma sensação, e sim uma grandeza específica: o tempo de bloqueio da thread principal, a soma de quanto as tarefas longas excedem 50 ms. Enquanto uma tarefa assim é executada, o navegador não consegue responder a um toque, e é exatamente disso que o INP é feito.

Tempo de bloqueio da thread principal A mesma tela todas as vezes, emulação do Pixel 5 com a CPU limitada em 4x como está 1782 ms sem animação 1840 ms tags de terceiros bloqueadas 378 ms Tempo de bloqueio da thread principal A mesma tela todas as vezes, emulação do Pixel 5 com a CPU limitada em 4x como está 1782 ms sem animação 1840 ms tags de terceiros bloqueadas 378 ms
Medição própria do PromoPilot, 28 de agosto de 2026. Desativar a animação não muda nada; bloquear as tags elimina 79% do tempo de bloqueio.

O resultado resolveu a questão. Desligar a animação não adiantou nada: 1840 ms contra 1782 ms como está, uma diferença dentro do ruído e, formalmente, até pior. Já o bloqueio das tags de terceiros reduziu o tempo de bloqueio de 1782 para 378 ms. 79% do tempo em que a página não conseguia responder ao toque não foi criado nem pelo nosso código, nem pela animação.

O verdadeiro culpado

Havia quatro tags no <head>, todas as quatro do tipo padrão que o proprietário instala e esquece: um contador de analytics, uma tag de plataforma de anúncios e dois pixels de redes sociais. Todas com o atributo async, todas "não bloqueantes". Cerca de 600 KB de JavaScript de terceiros no total.

Então veio o que torna esta seção digna de leitura. Uma biblioteca de contador de 189 KB foi baixada e executada duas vezes.

O motivo é banal. Temos dois identificadores: o de analytics e o de publicidade. Para cada um, a plataforma gera um snippet pronto com a sua própria linha de carregamento, e o proprietário cola os dois obedientemente. Mas a biblioteca contida neles é uma só: ela atende a todos os identificadores por meio de chamadas de configuração separadas. A segunda cópia não acrescenta nada: ela é apenas baixada de novo, analisada de novo e executada de novo no mesmo processador móvel lento.

Se você tem analytics e uma conta de anúncios da mesma plataforma, há uma boa chance de ter o mesmo cenário. Verificar leva um minuto: o método está no passo 3 abaixo.

Por que o "async" não salva você

Este é o segundo ponto em que a intuição engana. O atributo async significa: "não interrompa a análise do HTML, baixe em paralelo." Ele cumpre honestamente o seu papel: a página é renderizada sem esperar pela tag.

Mas, depois que o arquivo é baixado, ele ainda precisa ser executado, e é executado na mesma thread principal única que responde aos toques. O async remove o bloqueio de parsing, mas não a ocupação da thread, e o INP mede exatamente isso. Daí a situação familiar: a página apareceu rápido, todo contador é "assíncrono" e a métrica está vermelha.

Mais uma armadilha: só adiar não muda nada

A correção óbvia é adiar as tags até o navegador ficar livre. Foi o que fizemos. E medimos.

Por que só adiar o carregamento não ajudou Medido antes da correção, após adiar as tags e após remover a biblioteca duplicada antes 2026 ms só adiamento 2101 ms adiamento + duplicata removida 1775 ms Por que só adiar o carregamento não ajudou Medido antes da correção, após adiar as tags e após remover a biblioteca duplicada antes 2026 ms só adiamento 2101 ms adiamento + duplicata removida 1775 ms
Adiar move o trabalho no tempo, não o elimina. O que gerou o resultado foi remover a segunda cópia de uma biblioteca de 189 KB.

O tempo de bloqueio só com o adiamento foi de 2101 ms, contra 2026 ms antes, ou seja, um pouco pior. A lógica é simples: adiar move o trabalho no tempo, não o elimina. O trabalho não foi a lugar nenhum, apenas roda depois, às vezes justamente quando a pessoa já começou a tocar na tela.

O que funcionou foi outra coisa: remover a segunda cópia da biblioteca. Depois disso, o tempo de bloqueio caiu para 1775 ms, e todo o resto veio em seguida: a primeira renderização foi de 1128 para 824 ms, e a resposta do servidor, de 669 para 335 ms.

O que fazer no seu site: seis passos

Abaixo está uma ordem em que cada passo faz sentido depois do anterior. Cada um vem com uma verificação que mostra que você o concluiu.

Passo 1

Confirme que o problema é seu

Abra a seção Core Web Vitals no Search Console e veja a aba mobile separada da aba desktop. Separada é o ponto: "celular vermelho, desktop verde" é a forma mais comum desse problema, e olhar só o resumo facilita não perceber.

Se a aba mobile estiver verde, pode parar de ler: você não tem esse problema.

Verificação: você sabe quantos endereços ineficientes tem no mobile e a partir de que data passaram a ser. A data importa: ela sugere o que você instalou naquela época.
Passo 2

Meça em vez de adivinhar

O principal erro nesta etapa é começar a desligar tudo o que parece pesado. Quase desligamos uma animação que não tinha nada a ver com o problema. Meça três variações da mesma página: como está, sem o suspeito e sem tags de terceiros.

O jeito mais acessível é o Chrome DevTools: aba Performance, CPU throttling em 4× com emulação de dispositivo móvel, grave de 10 a 15 segundos da vida da página e observe as long tasks. Elas ficam destacadas, e cada uma mostra qual arquivo a gerou.

Verificação: você tem três números, não três opiniões. Se a diferença entre "como está" e "sem o suspeito" for menor que 10%, o suspeito é inocente: continue procurando.
Etapa 3

Verifique se alguma biblioteca é carregada duas vezes

Este é o ganho mais barato da lista. Abra a aba Network no DevTools, filtre por js e percorra a lista: o mesmo nome de arquivo aparece duas vezes, com parâmetros diferentes no endereço?

O caso típico é um contador de análise e uma tag de anúncios da mesma plataforma: snippets diferentes, um único arquivo. Mantenha uma só linha de carregamento e configure o segundo identificador como uma chamada de configuração separada. Nada se perde: a biblioteca atende aos dois.

<!-- before: two snippets, the same library twice -->
<script async src="…/tag.js?id=ID-1"></script>
<script async src="…/tag.js?id=ID-2"></script>

<!-- after: one library, as many identifiers as you need -->
<script async src="…/tag.js?id=ID-1"></script>
<script>
  config('ID-1');
  config('ID-2');
</script>
Verificação: na aba Network, o arquivo da biblioteca aparece exatamente uma vez, e os dados continuam chegando tanto na plataforma de anúncios quanto no painel de análise.
Etapa 4

Adie as tags sem perder nenhum evento

Só depois da etapa 3, porque o adiamento sozinho não ajuda, como medimos. Em combinação, porém, ele libera os primeiros segundos críticos.

A ideia: tire os arquivos externos do <head> e carregue-os no primeiro de três eventos: a thread principal ficar ociosa, um timeout de 3 segundos ou o primeiro toque na tela. O toque é obrigatório nessa lista: se a pessoa já está interagindo com a página, a tag é necessária imediatamente, senão você perde justamente a sessão ativa.

Os eventos não se perdem no processo, e esse é o detalhe-chave. Pequenas funções stub ficam no <head> e enfileiram cada chamada; quando a biblioteca finalmente carrega, ela reproduz a fila completa. É assim que esses snippets foram projetados: a fila é prevista pelos próprios autores.

Verificação: abra seu site, clique e confirme que a visita e o evento chegaram ao painel de análise. Se não chegaram, o stub está declarado incorretamente, e isso precisa ser corrigido antes do lançamento.
Etapa 5

Meça de novo e não espere o verde instantâneo

Após o lançamento, repita a medição da etapa 2: você deve ver o tempo de bloqueio cair. O relatório do Search Console, porém, não ficará verde de imediato: ele é baseado em dados de visitantes reais em uma janela móvel e é atualizado com atraso de semanas.

Isso é normal e não é motivo para reverter a correção nem para empilhar uma segunda por cima. A medição de laboratório diz que melhorou, então os dados de campo vão confirmar depois.

Verificação: o tempo de bloqueio na sua própria medição diminuiu, e os dados de análise continuam chegando no mesmo volume de antes. As duas metades são obrigatórias: uma correção que quebra o rastreamento de conversões não é uma vitória.
Etapa 6

Se não ajudou: a reserva

Com as tags de terceiros em ordem e a métrica ainda fora do ideal, os próximos passos, em ordem decrescente de retorno: contadores redundantes que duplicam a finalidade uns dos outros; CSS não utilizado (na nossa página inicial, 92% das regras nunca são aplicadas); cache de HTML, se a página é servida sem nenhum cache.

À parte, vale se perguntar com honestidade se você precisa de todos os contadores que conectou. Cada um é código de outra pessoa rodando no celular do seu visitante enquanto ele espera um toque ser registrado.

Verificação: você sabe dizer para que serve cada tag do seu site e quem olha os dados que ela coleta. Tags sem resposta são as primeiras candidatas à remoção.

O que não fazer

Desligar animações e o design visual "só por precaução" Nós medimos: desligar a animação não rendeu nada, 1840 ms contra 1782 ms. Remover a parte visível do seu site sem verificar a contribuição dela é um jeito certo de piorar o site sem melhorar a métrica.
Não se tranquilize com a palavra "async" O carregamento assíncrono elimina o bloqueio de parsing, mas o script ainda é executado na thread principal. O INP mede o quanto essa thread está ocupada, então "tudo o que é nosso é async" não significa "tudo o que é nosso está bem".
Comece adiando o carregamento Adiar apenas move o trabalho em vez de eliminá-lo: no nosso caso, o tempo foi de 2101 ms depois do adiamento contra 2026 ms antes. Primeiro remova o excesso, depois mova o que sobrar.
Espere um relatório verde amanhã A métrica é baseada em dados de campo: ela é coletada de visitantes reais em uma janela móvel. Uma correção feita hoje só aparece no relatório semanas depois, e isso não é motivo para refazer tudo do zero.

Resumindo

"Ineficaz no mobile enquanto o desktop está verde" quase sempre significa uma coisa: a página está ocupada executando o código de outra pessoa no processador lento de um celular. No nosso caso, as tags de terceiros responderam por 79% do tempo de bloqueio, e o detalhe pequeno mais caro foi uma segunda cópia da mesma biblioteca de 189 KB, carregada simplesmente porque o snippet é copiado uma vez por conta.

Se você fizer só uma coisa agora: abra a aba Network no seu próprio site e veja se algum arquivo de contador está sendo baixado duas vezes. É uma verificação de um minuto e é grátis.

Verifique seu site

O rastreamento aponta páginas pesadas, scripts bloqueantes e os demais achados técnicos, divididos por gravidade.

Perguntas frequentes

O que é INP, em palavras simples?
É o tempo entre tocar na tela e o momento em que a página responde visivelmente. O Google considera 200 ms ou menos como bom e mais de 500 ms como ruim. A métrica avalia a capacidade de resposta, não a velocidade de carregamento: uma página pode abrir rápido e ainda assim demorar para responder a um toque.

Por que um site é ineficaz no mobile, mas eficaz no desktop?
Porque o processador de um celular é de quatro a oito vezes mais lento que o de um desktop. O mesmo script que roda sem ser notado em 60 ms no computador chega a 300–500 ms no celular, e a pessoa percebe o atraso. O código é idêntico: só muda a velocidade de execução.

É verdade que o analytics deixa o site lento?
Na nossa medição, as tags de terceiros responderam por 79% do tempo de bloqueio da thread principal: 1782 ms com elas contra 378 ms sem elas. Isso não é motivo para remover o analytics por completo, mas é motivo para verificar quantas tags você tem, se elas se duplicam e quando exatamente são carregadas.

O async ajuda em um script de analytics?
Em parte. O atributo async elimina o bloqueio do parsing do HTML, então a página é renderizada mais cedo. Mas o arquivo baixado ainda é executado na thread principal, e o INP mede o quanto essa thread está ocupada. Um script async pode prejudicar a métrica tanto quanto um script comum.

É possível adiar contadores sem perder conversões?
Sim, se você deixar no head funções stub que enfileiram as chamadas até a biblioteca carregar: é assim que esses snippets foram projetados. Inclua o primeiro toque entre os eventos que disparam o carregamento, caso contrário você pode perder uma sessão ativa. Depois da publicação, confirme que os eventos estão chegando.

Quanto tempo leva para o relatório do Search Console ficar verde após a correção?
Não é imediato. A métrica é coletada de visitantes reais em uma janela móvel e é atualizada com um atraso de semanas. Confie na sua própria medição de laboratório: se o tempo de bloqueio caiu, os dados de campo vão confirmar isso mais tarde.

Fontes

Medição própria da PromoPilot, 28 de agosto de 2026: emulação do Pixel 5 com a CPU limitada em 4×, observação de tarefas longas e da latência de toque no site em produção.
web.dev, documentação do INP: a definição, os limites de bom / precisa melhorar / ruim e a natureza de campo da medição.
Google Search Console, relatório Core Web Vitals: abas separadas para dispositivos móveis e desktop.

Compartilhar:
Free · no sign-up

How many clicks is your site missing?

The SEO Radar shows in a minute which pages sit near the top of Google and what keeps them from moving up.

An estimate from positions, not a promise
New articles by email
Conteúdo