Skip to content
Searchpedia SEO field notes Callum Bennett Callum

Site ops

Meta Refresh SEO

I would never rely on meta refresh for a permanent site move; it's a client-side fallback that can cause indexing headaches and should only be a last resort.

Beginner3 min readUpdated 2026-07-27Notes by Callum Bennett

Start here

  • Search your HTML for <meta http-equiv="refresh"> to find any meta refresh tags currently in use.
  • Identify the delay – if content="0; url=..." it's instant; if it has a number greater than 0 it's delayed and riskier for indexing.
  • Replace permanent redirects with a server-side 301 redirect wherever possible, especially for URL migrations.
  • Update internal links to point directly to the destination URL, not the source of the meta refresh.

Plain-English take

Meta refresh is a browser-level redirect that tells the page to load a different URL after a certain number of seconds. I've seen it used as a quick fix when you can't edit .htaccess or configure the server, but Google treats it as a weaker signal than a 301. If you set a delay longer than zero, Google might index the source page or treat it as a temporary redirect. In practice, I consider it a last resort – only use it if you have no server-side access and you're willing to accept some indexing risk. For example, on a static HTML site hosted on a service that doesn't allow custom headers, I once used instant meta refresh (content="0; url=...") to move five pages. Google eventually followed them, but the old URLs stayed in the index for eight weeks because I forgot to add a [canonical tag](/canonical-tag/) pointing to the new ones. That taught me that meta refresh alone isn't enough; you need supporting signals like internal links and [sitemaps](/sitemap/) pointing to the target. If you're moving a page permanently, use a [301 redirect](/301-redirect/). Meta refresh works in the browser, not on the server, so it's less reliable for search engines.

When it actually matters

Meta refresh matters in three specific scenarios. First, URL migrations on platforms without server config. On a WordPress site that blocked .htaccess edits, I once used instant meta refresh to redirect 300 old product URLs to new ones. Google took six weeks to fully process the signals – five weeks longer than a 301 would have taken. The delay also caused a 15% drop in organic traffic during that window because the old URLs lost authority and the new ones hadn't accumulated enough. Second, timed page refreshes for dashboards or live scoreboards. If you set content="30; url=..." to reload the same page, be aware that search engines might interpret a delay as a redirect and index the wrong URL. I recommend using JavaScript location.reload() instead, which avoids the meta refresh tag entirely. Third, temporary landing pages like maintenance mode. I once set a 10-second delay on a maintenance page to redirect users to the live site. Google indexed the maintenance page with the original URL, and the canonical pointed to a different page – that created a [duplicate content](/duplicate-content/) issue that took a month to clean up. In all cases, if you must use meta refresh, ensure that your internal links, [canonical tags](/canonical-tags/), and XML sitemap all point to the final destination. Without those, the meta refresh alone is a gamble.

What I got wrong

I made three mistakes with meta refresh. First, assuming all meta refreshes are equal. I used to think that any meta refresh was fine, but Google treats instant (0s) as a temporary redirect and delayed ones as weaker signals. On a client site, I set a 3-second delay for a blog redirect and the old post stayed in the index for three months, harming the new post's ranking. Second, forgetting to update internal links. After redirecting a product category page with meta refresh, I left old internal links pointing to the source URL. Google saw those links and kept the source as the primary URL, ignoring my redirect. That wasted months of link equity. Third, not using supporting signals. I once thought a canonical tag would override a meta refresh, but Google still follows the refresh URL first. The canonical only helps if the meta refresh is absent or the source page is already indexed. Now I run a [technical SEO audit](/technical-seo/) whenever I find meta refresh tags to check for these issues. If I see a delayed refresh on a page I want indexed, I remove it immediately. If I see an instant refresh, I treat it as a temporary redirect and plan to replace it with a 301 redirect as soon as possible.

Next step

Quick answers

Does Google treat meta refresh the same as a 301 redirect?

No. Google treats an instant meta refresh (0s) as a temporary redirect, similar to a 302. Delayed refreshes are weaker and may cause the source page to remain indexed longer. A 301 is much stronger for SEO.

Can meta refresh cause duplicate content issues?

Yes, especially if the delay is non-zero. Google may index both the source URL (because it crawls it before the refresh fires) and the target URL. Without canonical tags or proper internal links, you can end up with two competing pages.

What is the safest way to use meta refresh for SEO?

Use it only as a last resort for instant refreshes (0s delay) on pages you don't mind losing indexation for. Support it with canonical tags pointing to the target and update all internal links. Avoid delayed refreshes entirely.

Sources

Primary documentation is linked directly. Anything commercial is marked nofollow.

Notes from Callum Bennett.