Redirects Using Meta Refresh: Why to Replace Them with 301s
- November 16, 2024
- Redirects, Redirect Methods

Replace every <meta http-equiv="refresh"> redirect with a server-side 301, because meta refresh is slower, worse for accessibility, and a weaker signal to search engines than a proper HTTP redirect.
Your audit flagged one or more pages that move visitors to another URL using a meta refresh tag instead of a server response. It works in a browser, but it is the wrong tool for a permanent move. This guide explains what the tag does, why both Google and accessibility standards discourage it, and how to swap it for a clean 301.
What a meta refresh redirect is
A meta refresh redirect is an instruction placed inside the HTML of a page, in the <head> section, that tells the browser to load a different URL after a set number of seconds. It looks like this: <meta http-equiv="refresh" content="0; url=https://example.com/new-page/">. The number before the semicolon is the delay in seconds, and the url= part is the destination.
Unlike a server-side redirect, nothing happens at the HTTP level. The server returns a normal 200 OK response and the full page body, and only after the browser parses the HTML does it begin loading the target. This client-side, content-level approach is the root of every problem below.
Why it is discouraged
SEO
Google's official guidance is to use a permanent server-side redirect whenever it is technically possible, because that is the clearest way to tell Search that a page has moved. Google describes meta refresh redirects as a viable alternative only when server-side options are unavailable. In other words, it is a fallback, not a recommended method. A 301 status code is an unambiguous, machine-readable signal sent before any HTML loads, while a meta refresh has to be discovered inside the page content.
Accessibility (WCAG)
A meta refresh with any delay greater than zero is a documented failure of WCAG Success Criterion 2.2.1, Timing Adjustable (failure technique F40). When a page changes under a user without warning, people using screen readers may have the reader thrown back to the top mid-sentence, and users with cognitive or motor differences can lose context or unfinished input. The W3C is explicit that a zero-second redirect is the only acceptable form, because it is instant and is not perceived as a timed change of context.
User experience
Even a zero-second meta refresh is slower than a 301, because the browser must download and parse the source page before it learns where to go. A delayed version is worse: the visitor sees a page that suddenly jumps elsewhere, and the back button can trap them in a loop, sending them straight back to the redirecting page.
How Google treats instant vs delayed
Google draws a clear line between the two. An instant meta refresh, with a delay of 0, is interpreted as a permanent redirect, roughly equivalent to a 301. A delayed meta refresh, with a delay greater than zero, is interpreted as a temporary redirect, closer to a 302, which means the original URL tends to stay the indexed one. So a delayed tag both hurts accessibility and fails to consolidate signals onto the destination. Either way, a real 301 remains the stronger, faster choice.
How to diagnose
A crawler is the fastest way to find these tags at scale. In Screaming Frog, the redirect type is shown in the Internal tab under the Meta Refresh column, and affected URLs surface under Response Codes as an Internal Redirection (Meta Refresh) issue, with the destination and delay listed. Sitebulb and similar crawlers report the same hint as a redirect whose chain type is Meta Refresh rather than HTTP Redirect. To confirm by hand, open the source of the suspect page and search the <head> for http-equiv="refresh". If the HTTP response is 200 yet the page sends you elsewhere, a meta refresh or a JavaScript redirect is the cause.
How to fix it: replace with a server-side 301
Remove the meta tag from the page and issue the redirect at the server instead. On Apache, add a rule to your .htaccess file; on Nginx, add a return 301 in the server block; in WordPress, a redirect plugin or your hosting redirect manager does the same job without touching config files. The goal is for the server to answer the request with a 301 status and a Location header before any HTML is sent.
Bad, the meta refresh you should remove:
<!-- in the <head> of old-page.html -->
<meta http-equiv="refresh" content="0; url=https://example.com/new-page/">Good, an Apache 301 in .htaccess:
Redirect 301 /old-page/ https://example.com/new-page/
# or with mod_rewrite
RewriteEngine On
RewriteRule ^old-page/?$ https://example.com/new-page/ [R=301,L]After deploying, recrawl the URL and confirm the response is now 301 Moved Permanently with the correct Location header, and that the meta tag is gone from the source.
Common mistakes
A few traps to avoid when you clean these up:
- Leaving a non-zero delay in place because it still works in a browser. Any delay above zero is a WCAG failure and is read by Google as temporary.
- Adding the 301 but forgetting to delete the meta tag, which creates a redirect chain or conflicting instructions on the same path.
- Pointing the redirect at another redirect instead of the final destination, building a chain that bleeds speed and signals.
- Updating internal links to keep aiming at the old, redirecting URL. Repoint them at the canonical destination so crawlers and users skip the hop entirely.
- Using a 302 or a delayed meta refresh for a move that is actually permanent. If the page has moved for good, the answer is a 301 or 308.
FAQ
A: It is the only form that passes WCAG, and Google treats it as a permanent redirect, so it will not break your site. But it is still slower than a 301 and a weaker signal, so use it only when you genuinely cannot configure a server-side redirect.
A: No. A 301 is the method Google recommends for passing signals to the new URL. Moving from a meta refresh to a 301 generally strengthens, rather than weakens, how cleanly the destination is consolidated.
A: Use a redirect plugin or your host's redirect manager. Both create real 301 responses without touching .htaccess directly, then remove the meta refresh tag from the source page or template.
Need a full technical audit?
SEO ProCheck runs deep crawls that catch issues like this across your whole site.
Claude Vincent is a technical SEO consultant focused on crawlability, rendering, and AI-search visibility. He writes the field guides and case studies at SEO ProCheck, with a bias toward the durable, unglamorous work that decides whether search engines and AI answer engines can actually read and cite a site.
About SEO ProCheck
Technical SEO consulting and GEO strategy with 20 years of enterprise experience. Case studies, resources, and tools for search and AI visibility.
Work With Me
Technical SEO audits, GEO strategy, site migrations, and international SEO. Hourly consulting for teams who need hands-on support, not just reports.







