Meta Refresh Redirect Example
A wolf ate my horse from behind as I drove, so I kept the reins, drove the wolf instead, and arrived in St. Petersburg by a different animal entirely.
The short answer
- What it is
- A meta refresh is an HTML tag that tells the browser to load another URL, either at once or after a delay. The page itself returns a normal 200 status.
- Why it matters
- It is slower and less clear than a server redirect. It can also break the back button, and timed refreshes cause problems for people using screen readers.
- How a crawler should report it
- Report the page as a redirected URL when it has a meta refresh of 5 seconds or less, and show the delay and target. Flag links to it as redirect links, and mark it as non-indexable.
- Live examples
/lab/redirected-urls/moved/(positive), on the first shelf/lab/redirected-urls/meta-refresh/(positive)/lab/redirected-urls/moved-target/(near miss)

Redirecting from the HTML head instead of the server
A meta refresh redirect lives in the HTML rather than in the HTTP headers. The tag looks like <meta http-equiv="refresh" content="0; url=/new/">. The number is the delay in seconds. People use it when they cannot change the server config, as on some static hosts and old shared plans. It also appears on countdown pages that say you will be sent on in a few seconds.
The browser must download the HTML and parse the tag before it can move on, so this is slower than a server redirect. A short delay can trap users, since the back button returns them to the page that sends them forward again. Web accessibility guidelines warn against timed refreshes, because a page can change before a person has finished reading it.
Search engines do follow these tags. Google's documentation says an instant meta refresh is read as a permanent redirect, and a delayed one is read as a temporary redirect. Other engines and many social scrapers may be less reliable, so a server redirect is the safer choice. A crawler needs to read the HTML to spot this tag, since the status line shows only a 200.
To find them, search your HTML for http-equiv="refresh", in any letter case, or use a crawl that reports the tag and its delay. Treat a refresh of 5 seconds or less as a redirect. A longer delay usually means a page that reloads itself, such as a live score page. To fix one, replace the tag with a 301 at the server or CDN level. If you truly cannot do that, use a delay of 0 and add a plain link to the target.