Warning Meta refresh redirect
Why <meta http-equiv="refresh"> is discouraged for redirects, and what a real HTTP redirect does better.
The validator flags a <meta http-equiv="refresh"> tag anywhere in the document.
Example
<!-- Discouraged -->
<meta http-equiv="refresh" content="3;url=https://example.com/new-page">
<!-- Preferred: a real HTTP redirect from the server -->
HTTP/1.1 301 Moved Permanently
Location: https://example.com/new-pageWhy it matters
A meta refresh redirect happens entirely client-side, after the original page has already loaded — it bypasses the browser's normal navigation and history handling, which can make the back button behave unexpectedly (some browsers skip the redirecting page, others get stuck looping through it). For accessibility, an auto-redirect that fires before a screen-reader or low-vision user has finished reading the page is flagged directly by WCAG 2.2.1 (Timing Adjustable) unless the delay is long enough or the user can disable it. Search engines generally treat a meta refresh as a weaker signal than a real HTTP 3xx redirect, and can be slower to follow it or pass along ranking signals to the destination.
Frequently asked questions
Is a meta refresh ever acceptable?
It's sometimes used as a fallback when a real server-side redirect isn't available (e.g. a static host with no redirect rules), but a genuine HTTP 3xx redirect — configured at the server or CDN level — is the correct tool whenever it's an option.
What's the difference between a 301 and a meta refresh, for SEO?
A 301 (or 308) redirect is a clear, immediate instruction search engines follow and consolidate ranking signals through. A meta refresh requires the page to load first and is a much weaker, slower signal that search engines may not always honor the same way.