Resposta curta
Soft 404 é quando uma página diz "não encontrado" (ou chega vazia) pra quem visita, mas responde 200 OK pro robô. O Google percebe e trata como erro: a página sai do índice e aparece como "Erro soft 404" no Search Console. A correção depende do caso: se a página não existe mais, responda 404 ou 410; se mudou de lugar, use 301 pra equivalente; se existe e é boa, coloque conteúdo de verdade nela. Em sites de página única, o erro precisa vir do servidor ou de um noindex.
O que é um soft 404
Toda resposta de servidor tem um código. 200 diz "aqui está a página", 404 diz "não existe", 410 diz "existia e foi removida de vez". O soft 404 é a contradição: o código diz 200, mas o conteúdo diz que não tem nada ali.
O Google não confia só no código. Ele lê a página e, quando ela parece uma página de erro, ou praticamente vazia, marca como soft 404 e não indexa. A central de ajuda recomenda retornar um código 404 em páginas que realmente não foram encontradas, e adicionar mais informações às páginas boas que foram confundidas com erro.
Por que vale corrigir
- Páginas boas podem sumir. Se uma página real é confundida com erro (um produto sem descrição, uma categoria vazia), ela fica fora do Google.
- Rastreamento desperdiçado. O Googlebot volta várias vezes a URLs que respondem 200, porque, pelo código, elas existem. Num site grande, isso tira atenção das páginas que importam.
- Relatório poluído. Centenas de soft 404 escondem o problema que de fato custa tráfego.
Uma observação: um 404 de verdade não prejudica o site. Páginas que deixaram de existir devem dar 404. O problema é fingir que existem.
As causas mais comuns
1. Site de página única (SPA) que responde 200 pra tudo
React, Vue e Angular sem renderização no servidor costumam ter uma regra que devolve o index.html pra qualquer endereço. O JavaScript monta a tela "Página não encontrada", mas o código já foi 200. É a causa número um em sites feitos com Vite, Create React App ou exportados de construtores de site.
2. Páginas vazias ou quase vazias
Categorias sem produto, buscas internas sem resultado, páginas de tag com um post só, perfis de usuário em branco. O Google vê uma casca com menu e rodapé e conclui que não há conteúdo.
3. Produto esgotado ou removido
A loja mantém a URL viva com a mensagem "produto indisponível" e nada mais. Se o produto vai voltar, mantenha a página completa (descrição, fotos, especificações) com o aviso de esgotado. Se saiu de linha, responda 404 ou 410, ou redirecione com 301 pro substituto direto.
4. Redirecionar tudo pra home
Numa migração, mandar centenas de URLs antigas pra página inicial parece prático, mas o Google costuma tratar esses redirects como soft 404, porque a home não é equivalente ao que foi pedido. Cada URL antiga deve ir pra sua correspondente; as que não têm correspondente devem dar 404. Detalhes no artigo sobre redirect 301 ou 302.
5. Página de erro do servidor com status 200
Alguns servidores, CDNs e plataformas mostram "Algo deu errado" ou "Página em manutenção" com código 200. Pro Google, pode virar soft 404. Manutenção deve responder 503, de preferência com o cabeçalho Retry-After.
6. Falso positivo
Às vezes a página é real, mas o texto confunde o Google. Uma página que fala muito em "não encontrado" (um artigo sobre o erro 404, por exemplo) ou que depende de JavaScript que falhou na renderização pode ser marcada por engano. Nesses casos, a Inspeção de URL mostra o que o Google viu.
Como testar
Comece pedindo um endereço que não existe e veja o código:
curl -s -o /dev/null -w "%{http_code}\n" https://seusite.com.br/pagina-que-nao-existe-123
Se voltar 200, o site tem soft 404 em qualquer endereço errado. Depois:
- No Search Console, em Indexação › Páginas, abra o motivo "Erro soft 404" e veja quais URLs estão ali. Separe as que não deveriam existir das que são páginas boas.
- Pra uma URL específica, rode o teste ao vivo na Inspeção de URL e clique em "Ver página testada". A captura de tela mostra se o Google viu a página vazia ou quebrada.
Como corrigir em cada plataforma
Next.js (App Router): chame notFound() quando o dado não existir. O Next responde 404 e mostra o not-found.tsx:
// app/produtos/[slug]/page.tsx
import { notFound } from "next/navigation";
export default async function Page({ params }) {
const { slug } = await params;
const produto = await buscarProduto(slug);
if (!produto) notFound();
return <Produto dados={produto} />;
}
Astro: em páginas estáticas, crie src/pages/404.astro e configure a hospedagem pra usar ele. Em páginas renderizadas no servidor, defina o status antes de responder:
---
const post = await buscarPost(Astro.params.slug);
if (!post) return new Response(null, { status: 404 });
---
SPA sem servidor próprio (React, Vue, Vite): o Google sugere duas saídas. A primeira é redirecionar, via JavaScript, pra um endereço em que o servidor responde 404 de verdade (por exemplo /404, configurado na hospedagem). A segunda é adicionar <meta name="robots" content="noindex"> na tela de erro, também via JavaScript. Quando der, a solução melhor é renderizar no servidor ou gerar as páginas no build, e deixar o servidor devolver 404 pra rotas desconhecidas.
Netlify, Vercel e Cloudflare Pages: uma regra de "rewrite tudo pro index.html" causa soft 404 em qualquer endereço. Prefira listar as rotas reais e deixar o resto cair na página 404 da plataforma, que já responde com o código certo.
WordPress e lojas: normalmente respondem 404 corretamente. O soft 404 vem de categorias vazias, páginas de tag e produtos esgotados sem conteúdo. Coloque noindex em tags e categorias vazias, ou remova essas páginas.
Depois de corrigir
No relatório de páginas, abra o motivo "Erro soft 404" e clique em Validar correção. O Google rastreia de novo as URLs listadas: as que passaram a responder 404 saem do motivo e vão pra "Não encontrado (404)", o que é o esperado; as páginas boas que ganharam conteúdo voltam a ser indexadas. A validação leva de alguns dias a algumas semanas, dependendo do tamanho do site.
O teste do endereço inexistente é o mais rápido de todos, e o mais esquecido. A varredura grátis da Varrida faz esse teste no seu site, avisa se páginas que não existem respondem 200 e mostra a correção pra sua plataforma.


