Meta refresh redirect: how it works and how Google treats it

A meta refresh sends the browser to another URL from inside the HTML, after a delay you choose. It works where you can’t touch the server config, but it is slower and weaker than a real 301.

The syntax

<meta http-equiv="refresh" content="0; url=https://example.com/new-page">

The number is the delay in seconds; the part after url= is the target, absolute or relative. It belongs in the <head>. The HTTP-header version does the same thing without HTML and is equally non-standard but universally supported:

Refresh: 0; url=https://example.com/new-page

Delay changes the meaning

Move the slider to see how Google’s documentation classifies the redirect.

Instant

Treated like a permanent redirect. Google reads an instant meta refresh as a permanent move and consolidates to the target, much like a 301.

When a meta refresh is the right tool

  • Static hosts or page builders with no access to server redirects (some GitHub Pages or site-builder setups).
  • A single moved page on a legacy system where changing server rules isn’t possible.

Google’s order of preference is: server-side 301/308 (or 302/307), then meta refresh, then JavaScript. A meta refresh only works once the HTML has been downloaded and parsed, so every visit pays for a full page load before the real one starts.

JavaScript redirects

<script>location.replace('https://example.com/new-page')</script>

Google follows them only after rendering the page, which can happen later than crawling, and other crawlers and link-preview bots often don’t run JavaScript at all. Use location.replace() rather than location.href = so the old page doesn’t stay in the back-button history.

Detecting them

Our redirect checker reads the HTML of every non-3xx response: meta refresh tags and Refresh headers are followed and labelled with their delay; common JavaScript redirect patterns on the final page are reported without being executed.

Questions

Is a meta refresh redirect bad for SEO?

Not bad, just second best. Google follows it and treats an instant one as permanent. But a server-side 301 is faster, understood by every crawler and preferred by Google.

Does a meta refresh pass link equity?

Google treats an instant meta refresh as a permanent redirect, so signals are consolidated to the target in the same way. Delayed ones are treated as temporary.

What is the Refresh HTTP header?

A response header, Refresh: 0; url=..., that does the same as the meta tag without HTML. It was never part of the HTTP standard but the HTML standard defines its processing and all browsers support it. Our checker follows it.

How do I remove a meta refresh from WordPress?

Look for it in your theme header, a redirect plugin or an SEO plugin setting, then replace it with a server-side 301 from a redirect plugin or .htaccess.

Sources: Google Search Central, meta refresh redirects; HTML Living Standard, http-equiv refresh; WCAG 2.2, SC 2.2.1 Timing Adjustable.