
How does a meta refresh redirect work?
A meta refresh redirect works by placing a meta tag with http-equiv=”refresh” in the head of an HTML page. The content attribute holds a number of seconds, then a semicolon and the target URL. A typical instant version looks like this in plain text: meta http-equiv=”refresh” content=”0; url=https://example.com/new-page/”.
According to MDN, the timer starts only after the page has fully loaded. The same instruction can be sent as a Refresh HTTP header (for example Refresh: 0; url=https://example.com/new-page/), which MDN describes as exactly equivalent to the meta tag. Without a URL, the tag simply reloads the same page after the delay.
Meta refresh vs HTTP 3xx redirects
A meta refresh differs from 3xx redirects because it happens in the browser after the page is delivered, not in the HTTP response. RFC 9110 defines 3xx status codes, such as 301 and 302, as responses where the server points the client to another resource through the Location header. A page with a meta refresh is usually served with status 200, so the redirect only exists once the HTML is parsed.
MDN lists the order in which redirects fire: HTTP redirects first, then JavaScript redirects, and HTML meta refresh last. That makes meta refresh the least reliable method.
| Feature | 301 / 308 | Meta refresh |
|---|---|---|
| Where it happens | Server, HTTP response | Browser, HTML page |
| Status code | 301 or 308 | Usually 200 |
| Works for images, PDFs | Yes | No, only HTML |
| Google treatment | Permanent | 0 s: permanent, delay: temporary |
| Recommended | First choice | Fallback only |
How does Google treat meta refresh redirects?
Google treats a meta refresh as permanent when the delay is 0 seconds and as temporary when there is any delay. Google Search Central groups the instant meta refresh with 301 and 308 as signals that the target URL should become canonical. A delayed meta refresh sits with 302, 303 and 307: the original URL usually stays in search results. Google advises using meta refresh only when server-side redirects are not possible on your platform.
Meta refresh vs JavaScript redirect
A meta refresh is more dependable for Google than a JavaScript redirect. Google runs JavaScript only when it renders a page, and Search Central notes that rendering can fail, in which case Google never sees the redirect. Google’s order of preference is therefore server-side redirects first, meta refresh second and JavaScript (window.location) last.
When should you use a meta refresh?
Use a meta refresh only when you cannot configure redirects on the server. Typical cases are:
- Static hosting where you cannot set response headers.
- Closed CMS or website builders without a redirect manager.
- Single legacy pages you cannot move to a new server setup.
In every other case, set a 301 in the server configuration. On Apache it is one line in .htaccess: Redirect 301 /old-page/ https://example.com/new-page/. On Nginx it is: location = /old-page/ { return 301 https://example.com/new-page/; }. Avoid mixing methods: MDN warns that keeping an HTTP redirect and a meta refresh for the same URL can create a loop or a redirect chain.
Meta refresh, accessibility and SEO risks
A delayed meta refresh is an accessibility failure under WCAG. Technique F40 from W3C lists timed meta redirects as failing success criteria 2.2.1, 2.2.4 and 3.2.5, because screen reader users may be moved before they finish reading. A 0-second redirect is accepted, but W3C still calls server-side redirects preferable.
For SEO, the main risks are slower redirects, wasted crawl budget on pages that only forward users, and spam signals when a page shows one thing to Googlebot and redirects users elsewhere after a few seconds. In my technical SEO audits I list every meta refresh found in a crawl and replace it with a 301 wherever the server allows.
Frequently asked questions about Meta refresh redirect
Is meta refresh bad for SEO?
A 0-second meta refresh is not harmful, because Google treats it as a permanent redirect. Delayed versions act as temporary redirects and keep the old URL indexed, so a server-side 301 is always the better choice.
Is a meta refresh a 301 or a 302?
A meta refresh is neither, because it is not an HTTP status code. Google interprets an instant meta refresh like a 301 and a delayed one like a 302.
How do I write a meta refresh redirect?
Add a meta tag with http-equiv="refresh" and content="0; url=https://example.com/new-page/" inside the head of the page. Use 0 seconds so Google treats it as permanent and users are not stuck on the old page.
Does Google follow meta refresh redirects?
Yes, Google Search Central confirms that Googlebot follows meta refresh redirects. It still recommends server-side redirects whenever your platform allows them.
Related terms
- Redirects and Google Search · Google Search Central
- Redirections in HTTP · MDN Web Docs
- <meta> http-equiv attribute · MDN Web Docs
- Refresh header · MDN Web Docs
- RFC 9110: HTTP Semantics · IETF HTTP Working Group
- F40: Failure due to using meta redirect with a time limit · W3C WAI







