Redirecionamento Meta Refresh

O que é um redirecionamento meta refresh, sua posição entre redirecionamentos no servidor e em JavaScript, a diferença entre versões instantânea e atrasada e por que ele é desencorajado.

Publicado pela primeira vez: 28 de jun. de 2026 · Última atualização: 13 de ago. de 2026 · Avançado
Idiomas

Meta refresh é uma tag HTML <meta http-equiv="refresh"> ou o cabeçalho HTTP Refresh, não um código de status. O servidor retorna 200, e o navegador navega depois do carregamento. Para o Google, content="0" é permanente e valores maiores que 0 são temporários. Use somente como último recurso sem acesso ao servidor, prefira atraso zero, adicione canonical e link alternativo e substitua por 301 assim que puder.

TL;DR — Meta refresh é uma tag HTML <meta http-equiv="refresh"> (ou o cabeçalho Refresh inserido pelo servidor), não um status 3xx: o servidor retorna 200, e o navegador só navega depois que a página termina de carregar. Para o Google, a versão instantânea (content="0") é permanente, como 301/308; a atrasada (> 0) é temporária. Por depender do carregamento completo, fica entre redirecionamentos no servidor e em JavaScript na ordem de confiabilidade do Google. Mueller disse que ela “should just work” (tradução) «simplesmente deveria funcionar», mas não a recomenda por causa do histórico do botão Voltar e do tempo de processamento. Use-a apenas sem acesso ao servidor, prefira 0, combine com rel=canonical e um link alternativo visível e troque por um 301 real assim que puder.

Evidence for this claim Google supports instant and delayed meta refresh redirects but recommends server-side permanent redirects when possible. Scope: Google redirect processing and implementation preference. Confidence: high · Verified: Google Search Central: Redirects Evidence for this claim Timed redirects can create accessibility problems, particularly when users cannot control the time limit. Scope: WCAG timing guidance; not a search-ranking claim. Confidence: high · Verified: W3C WCAG: Timing Adjustable

Não é um código de status

Este é o ponto essencial. Meta refresh não é uma resposta HTTP 3xx. O servidor retorna um 200 OK comum, com o corpo completo da página; no <head>, uma diretiva HTML manda o navegador agir depois do carregamento:

<!-- Instant: treated by Google as permanent -->
<meta http-equiv="refresh" content="0;url=https://example.com/newlocation">

Existe um equivalente no servidor — o cabeçalho HTTP Refresh — que faz o mesmo, mas é inserido por código do servidor em vez de ficar na marcação:

HTTP/1.1 200 OK
Refresh: 0; url=https://www.example.com/newlocation

Até a versão em cabeçalho retorna 200, não 3xx. Em ambos os casos, é o navegador que navega, e não o servidor.

Instantâneo ou atrasado — a distinção do Google

O Google traça a linha pelo número de segundos. Em Redirecionamentos e a Pesquisa Google, afirma que “differentiates between two kinds of meta refresh redirects” (tradução) «diferencia dois tipos de redirecionamento meta refresh»:

  • Instantâneo (content="0") — “Triggers as soon as the page is loaded… Google Search interprets instant meta refresh redirects as permanent redirects.” (tradução) «É acionado assim que a página carrega… A Pesquisa Google interpreta redirecionamentos meta refresh instantâneos como permanentes.» Para canonicalização, fica na mesma categoria de 301/308: o Google o segue e usa como sinal de que o destino deve ser canônico.
  • Atrasado (content maior que 0) — “Triggers only after an arbitrary number of seconds… Google Search interprets delayed meta refresh redirects as temporary redirects.” (tradução) «É acionado somente após um número arbitrário de segundos… A Pesquisa Google interpreta redirecionamentos meta refresh atrasados como temporários.» Como em 302/303/307, outros sinais ainda podem indexar o destino, mas o redirecionamento não indica mudança permanente.

Minha ordenação no guia da Ahrefs sobre 11 tipos de redirecionamento reflete isso: para mudanças permanentes, 308 / 301 → meta refresh 0 → JavaScript → crypto; o meta refresh atrasado cai no nível temporário, junto de 302/303/307.

A posição na ordem de preferência do Google

A documentação do Google publica uma tabela “ordered by how likely Google is able to interpret [the redirect] correctly” (tradução) «ordenada pela probabilidade de o Google interpretar o redirecionamento corretamente». Para redirecionamentos permanentes: HTTP 301HTTP 308meta refresh (0 seconds)JavaScript location → crypto. O meta refresh ocupa o degrau intermediário: abaixo do servidor e acima do JavaScript.

O Google é explícito nos dois limites. No superior: “If server-side redirects aren’t possible to implement on your platform, meta refresh redirects may be a viable alternative.” (tradução) «Se não for possível implementar redirecionamentos no servidor em sua plataforma, meta refresh pode ser uma alternativa viável.» No inferior: “Only use JavaScript redirects if you can’t do server-side or meta refresh redirects.” (tradução) «Use redirecionamentos JavaScript apenas se não puder usar os de servidor ou meta refresh.» É a escada inteira em duas frases, coerente com o hub de redirecionamentos.

Duas “ordens” diferentes — não as confunda

Há uma sutileza que confunde desenvolvedores. A MDN publica uma ordem diferente, mas ela descreve a ordem de execução no navegador quando vários mecanismos coexistem, não a confiabilidade para SEO: HTTP primeiro, depois JavaScript e meta refresh por último, pois “the <meta> redirect happens after the page is completely loaded, which is after all scripts have executed.” (tradução) «o redirecionamento <meta> ocorre depois que a página carrega por completo, após a execução de todos os scripts».

Assim, JavaScript “vence” meta refresh na ordem temporal da MDN, enquanto meta refresh “vence” JavaScript na ordem de confiabilidade do Google. Ambas estão corretas. A MDN pergunta qual dispara primeiro no navegador; o Google, qual é interpretado com mais segurança para busca. Separe esses eixos e a contradição desaparece.

Por que depender do carregamento torna o método mais fraco

Um meta refresh só dispara depois que a página está totalmente carregada. Segundo a referência da MDN sobre <meta http-equiv>, “the timer starts when the page is completely loaded, which is after the load and pageshow events have both fired.” (tradução) «o cronômetro começa quando a página termina de carregar, depois que os eventos load e pageshow são disparados». Isso vale até para content="0": “instantâneo” significa nenhum atraso adicional após o carregamento, não tempo decorrido zero.

Para ser preciso, meta refresh não é processado na etapa de renderização JavaScript do Google como window.location; ele é lido diretamente do <head> HTML analisado. A fraqueza está na dependência do carregamento completo — rede e recursos bloqueadores — e, nas variantes atrasadas, na espera arbitrária.

O que o padrão HTML realmente especifica

O algoritmo de atualização declarativa do padrão HTML é mais preciso que “espera a página carregar”; alguns detalhes importam na auditoria:

  • Momento devido. A atualização vence depois do carregamento completo do documento e, para um elemento <meta>, de sua inserção — o que ocorrer por último — com ajustes pelas preferências do usuário.
  • URLs relativas. O destino é resolvido em relação à URL do documento; audite o endereço absoluto, não apenas o texto em url=.
  • A primeira vence. Depois que o documento é marcado para atualização declarativa, instruções posteriores são ignoradas. Duas tags <meta refresh> conflitantes, ou uma tag e um cabeçalho, são defeito de autoria.
  • Destinos javascript: são rejeitados. O algoritmo encerra sem navegar.
  • A execução não é garantida. A navegação pode ser cancelada, ajustada por preferências, bloqueada pelo sandbox, exposta na interface do navegador ou simplesmente não ocorrer.
  • Histórico. O padrão especifica tratamento replace, substituindo a entrada atual. Isso contrasta com a formulação “meta refresh always leaves the source page in history” (tradução) «meta refresh sempre deixa a página de origem no histórico». Não trate essa observação dependente de navegador e versão como regra universal.
Evidence for this claim The HTML Standard's declarative refresh algorithm returns without navigating when the parsed target uses the javascript scheme. Scope: meta refresh and Refresh header processing Confidence: high · Verified: HTML Standard: Refresh state

John Mueller resumiu o motivo para não recomendar o recurso (relatado pelo Search Engine Roundtable, 2018): meta refresh “should just work,” (tradução) «simplesmente deveria funcionar», mas há dois problemas — UX (“it keeps the page in browser history, afaik” (tradução) «mantém a página no histórico do navegador, até onde sei») e tempo de processamento, porque o Google precisa analisar a página. “Once processed, it’s just like a redirect.” (tradução) «Depois de processado, é como um redirecionamento.»

Por que é desencorajado — o peso histórico

Além das razões de UX e processamento, o meta refresh carrega uma reputação. Na era do spam dos anos 2000, era um veículo comum para páginas doorway: a página ranqueava para uma consulta e quase instantaneamente levava o visitante a um destino menos relevante. Nenhuma política atual do Google cita “meta refresh” pelo nome; as políticas definem redirecionamentos enganosos e abuso de doorway como categorias gerais. Trate isso como contexto histórico, não como citação explícita de política atual.

Há também uma falha concreta apontada por Mueller em 2018 (via Search Engine Journal): um site enviava páginas de listagem a uma página de pagamento compartilhada. “So if you do this across your pages there’s a big chance we’ll follow this redirect and think ‘Oh, this payment page is actually what you want to have indexed and not the actual content.’” (tradução) «Se você fizer isso em várias páginas, há grande chance de seguirmos o redirecionamento e entendermos que a página de pagamento é o conteúdo que você quer indexar.» Muitas fontes apontando para um destino genérico podem fazer esse destino ser indexado no lugar do conteúdo.

Nada disso torna um uso isolado e legítimo um risco de penalidade. A documentação atual do Google o chama de “a viable alternative” (tradução) «uma alternativa viável» quando o redirecionamento no servidor não é possível. O risco está no padrão e na intenção, não no mecanismo.

Evidence for this claim Google says meta refresh can be a viable alternative when server-side redirects are not possible, while permanent server-side redirects are recommended whenever possible for a URL move. Scope: meta refresh and HTTP Refresh interpretation Confidence: high · Verified: Redirects and Google Search

Acessibilidade: a mesma distinção entre instantâneo e atrasado

A orientação de acessibilidade quase espelha a de SEO, com uma ressalva: as técnicas WAI do W3C são exemplos para atender aos critérios WCAG, não regras obrigatórias. O requisito é o critério 2.2.1, Tempo Ajustável. Ainda assim, o W3C prefere redirecionamento no servidor e, quando o lado do cliente é necessário, as técnicas suficientes H76 e G110 pedem atraso zero (content="0"), conteúdo limitado ao redirecionamento e um link visível. Um meta refresh atrasado sem pausa, extensão ou desativação pode falhar, pois muda de página antes que usuários de tecnologias assistivas terminem a leitura. A nota de acessibilidade da MDN descreve o mesmo risco: usuários “may be unable to read through and understand the page’s content before being automatically redirected.” (tradução) «podem não conseguir ler e compreender o conteúdo antes do redirecionamento automático».

Portanto, mecanismo de busca e órgão de padrões chegam à mesma regra: instantâneo é aceitável; atrasado é arriscado. É outro motivo para preferir content="0".

Quando é um último recurso legítimo

Use meta refresh somente quando realmente não puder criar um redirecionamento no servidor. Casos reais:

  • Hospedagens estáticas sem configuração de servidor, como GitHub Pages, sem regras .htaccess/nginx.
  • Geradores de sites estáticos cujos “aliases” produzem meta refresh, não 301. O Hugo é um exemplo; seu frontmatter aliases: gera pequenos arquivos HTML. Veja SEO para Hugo.
  • Exportações de plataformas no-code e alguns geradores de documentação que só emitem HTML estático.

Se não houver alternativa, implemente-o bem:

  • Prefira o instantâneo (content="0") — sinal permanente e melhor acessibilidade.
  • Combine com rel="canonical" apontando para o destino.
  • Inclua um link alternativo visível e clicável para quem desativa a atualização automática.
  • Não o empilhe em uma cadeia de redirecionamentos.
  • Substitua-o por um 301 real assim que tiver acesso ao servidor. É uma ponte, não um destino.

Como detectar meta refresh no site

Crawlers como Screaming Frog, Sitebulb, Ahrefs Site Audit e Semrush geralmente o sinalizam com gravidade baixa a média, não como erro crítico. Em poucas URLs isoladas, corrija quando for conveniente; uso amplo em páginas importantes merece prioridade. Para uma URL, veja o código-fonte ou use curl e procure http-equiv="refresh" no <head>; há comandos prontos na aba Scripts.

Evite afirmações categóricas sobre link equity. A frase da central da Ahrefs de que meta refresh “does not pass much or any link juice” (tradução) «transmite pouco ou nenhum valor de link» é questionável: a tabela do Google coloca a versão instantânea na mesma categoria de interpretação permanente que 301, mas isso não promete paridade de PageRank ou ranqueamento. Nem o Google nem o padrão HTML documentam equivalência; trate tanto “passa o mesmo valor” quanto “passa pouco ou nada” como não comprovados.

Uma página-fonte com meta refresh ainda tem sua própria resposta HTTP e seu próprio documento HTML. Audite, nesta ordem: status e cabeçalhos da origem, incluindo Refresh; HTML bruto versus o que o navegador analisa; primeira diretiva efetiva e destino absoluto; classificação instantânea/permanente ou atrasada/temporária; canonical, robots e indexabilidade da origem; resposta final; controles e preferências que podem impedir a navegação; cache e histórico no navegador e versão testados; links internos para a origem; e o plano para substituir tudo por um redirecionamento no servidor. As abas Checklists e Scripts transformam isso em etapas e comandos.

Add an expert note

Pin an expert quote

New person? Create their unclaimed profile at /admin/experts/ → Pin a quote first.