SEO check

Meta Refresh: What the Tag Does and How to Fix It

How the meta refresh tag works, why it hurts SEO and accessibility, and what our free SEO report checks on your page.

Free to use 6 min read Updated Oct 2026

What Is Meta Refresh? The Short Answer

Quick answer: A meta refresh is a meta tag in the head section, written as http-equiv="refresh", that makes the browser reload the page or jump to another URL after a delay. Our report fails any such tag it captures.

  • Pass: no meta tag with http-equiv exactly equal to the lowercase word refresh.
  • Fail: one or more, whatever the delay.
  • Fix: delete the tag, or add a server side 301 redirect if the page moved.

Check my website

It's free, and no account is needed.

What Does the Meta Refresh Tag Do in HTML?

The content attribute holds the refresh delay in seconds and, after a semicolon, an optional url parameter. You'll also hear it called a meta redirect, an HTML meta redirect or an HTML refresh tag. The WHATWG HTML Living Standard ignores case in the keyword and acts only on the first valid tag. New to head tags? See meta tags explained for beginners.

HTML
<meta http-equiv="refresh" content="300">
<meta http-equiv="refresh" content="5;url=https://example.com/">

The first line is the classic auto refresh page trick for a live scores page. The second is a delayed redirect, and a delay of 0 makes it instant. Longer delays show the old page first.

Netscape Navigator 1.1 introduced the tag around 1995 as a polling trick. A matching Refresh HTTP header exists too, and browsers honour it, though it isn't in the HTTP standard. Confirm the syntax in the MDN http-equiv reference.

Is Meta Refresh Bad for SEO and Accessibility?

It isn't a penalty, but it's rarely ideal. Google Search Central reads an instant refresh as a permanent redirect and a delayed one as a temporary redirect, and calls the tag viable only without server side redirects. See its Google redirect guidance.

A 301 arrives with the response headers, while Googlebot rendering must parse the page to see a refresh, so the 301 is the clearer signal for indexing and link equity. Where a platform can't send one, an instant redirect with a visible link is the accepted compromise. See the technical SEO checklist for a site audit.

A bare reload fails technique F41 and WCAG 2.2.1 Timing Adjustable (Level A), and touches WCAG 2.2.4 Interruptions and WCAG 3.2.5 Change on Request, both Level AAA. An unexpected page reload causes a focus reset, so screen reader and keyboard users lose their place. An instant redirect is the form technique H76 accepts. Our check never reads the delay, so the 20 hour exception doesn't rescue a tag.

How SEO Site Checker Tests Meta Refresh

Headless Chromium loads your URL, waits for the load event, then reads the rendered HTML.

The exact rule: any meta element with http-equiv exactly lowercase refresh fails, whatever its content value.

What passes

Nothing in the rendered DOM matches, so you get a green tick, the message "This webpage is not using the Refresh meta tag" and no badge.

What fails

Head, body, noscript or script added tags all fail, with a red icon, the message "This webpage is using the Refresh meta tag", each content value in a badge and the How to Fix button.

What the check does not test

A capitalised Refresh runs in browsers but passes our case sensitive match. Chromium may follow a zero second redirect, or one lasting a second or two, before capture, so the report may grade the destination page instead. A Refresh HTTP header, a JavaScript redirect and a 302 redirect aren't read.

Run the full SEO report

How to Remove or Replace a Meta Refresh Tag

  1. Find the tag. In view page source, search for http-equiv and read its value. Look through theme headers, plugins, custom head code and noscript blocks, and use Chrome DevTools for script-added tags.
  2. Replace a redirect. If content has ;url=, add a 301 for a permanent move, or a 302 redirect or 307 redirect for a temporary one, then delete the tag.
  3. Replace a reload. Delete a bare number, update only the changing region by script instead of location.reload, and add a pause control, as WCAG failure technique F41 expects.
  4. Re-test. Clear every cache, then run the report again.

Meta Refresh Alternatives for WordPress, Apache and Nginx

A server side redirect answers before any HTML is sent. For www and https cases, see the URL canonicalization guide.

PlatformWhere to do itWhat to enter
Apache HTTP Serverhtaccess redirect, mod_aliasRedirect 301 /old-page https://example.com/new-page
NginxNginx return 301 in the server blocklocation = /old-page { return 301 https://example.com/new-page; }
WordPressheader.php or a pluginDelete the tag, then use a redirect plugin
Shopify, Wix, Squarespace and CloudflareBuilt-in redirect tool or Redirect RulesOld path to new destination, as a permanent 301

Meta Refresh Mistakes to Avoid

  • Moving a whole site with a tag. A 301 is cleaner than content="0;url=...".
  • Forgetting noscript. Our report reads the rendered HTML, so a noscript fallback still fails.
  • Reloading forms. Auto reloading a checkout wipes what people typed.
  • Letting a template print it. A shared header can start a redirect chain or redirect loop.

How to Fix

The short version, the same steps you see when you click How to Fix in your report.

Why this fails: your page contains a meta tag with http-equiv="refresh", which reloads it or sends visitors to another URL after a delay. Our report fails any lowercase refresh tag it finds in the rendered page, whatever the delay or destination, as long as the tag is still in the page when we capture it.

How to fix it:

  1. Find the tag in View Source by searching for http-equiv, or in DevTools Elements if a script adds it. Check theme header files, plugins, custom head code and noscript blocks.
  2. If it was a redirect (the content value has ;url=), add a server side 301 first for a permanent move, or a 302 or 307 for a temporary one, so visitors are never left on the old page.
  3. Delete the whole meta element.
  4. If it was a reload, update only the changing part with a short script and give users a way to pause it.
  5. Clear page, plugin and CDN caches.
HTML
<meta http-equiv="refresh" content="5;url=https://example.com/">

To replace a redirect, add this line to .htaccess on Apache:

Text
Redirect 301 /old-page https://example.com/new-page

On Nginx, put this in the server block and reload:

Text
location = /old-page { return 301 https://example.com/new-page; }

For a page that needs fresh data, update one region and offer a pause control instead of reloading everything. Only inject markup from your own server:

JavaScript
let paused = false;
async function updateScores() {
  const r = await fetch('/scores-fragment.html');
  if (r.ok) document.getElementById('scores').innerHTML = await r.text();
}
setInterval(() => { if (!paused) updateScores(); }, 30000);
document.getElementById('pause').addEventListener('click', () => { paused = !paused; });
  • WordPress: use a redirect manager plugin or your host rules.
  • Shopify, Wix and Squarespace: use the built-in URL redirect tool.
  • Cloudflare: create a Redirect Rule at the edge.

Pitfall: a capitalised Refresh still runs in browsers, so remove it too.

Re-test: view the source again and search for http-equiv, ignoring case, and confirm none has the value refresh. curl runs no scripts, so use DevTools Elements for script-added tags. Then re-run the free SEO check and look for a green tick with no badge.

Re-test my website

Frequently Asked Questions

What is a meta refresh?
A meta refresh is a meta tag with http-equiv set to refresh. It makes the browser reload the page or move to another URL after a set time: a bare number reloads, while a number plus url= redirects.
Is a meta refresh bad for SEO?
It is not a penalty and Google follows it, but Google prefers a permanent server side redirect, and the tag adds timing based accessibility failures. Our report flags it, so most sites should replace it.
Does Google follow a meta refresh redirect?
Yes. Google follows redirecting meta refreshes and reads the delay: an instant one counts as permanent and a delayed one as temporary. It still advises a server side redirect first and treats a meta refresh as a fallback.
What is the difference between a meta refresh and a 301 redirect?
A 301 is a status code the server sends before any page content, and it passes ranking signals to the new URL. A meta refresh lives inside the HTML, so the page loads first, which is slower.
How do I remove a meta refresh tag?
Check the head, theme files, plugins and noscript blocks, then delete the tag. For a moved page add a server side 301 redirect instead, then clear caches and re-run the report to confirm.
What does a content value of 0 mean in a meta refresh tag?
On its own, a value of 0 reloads the same page repeatedly. With ;url= added it is an instant redirect Google reads as permanent. A 301 is better, and Chromium can follow it before our report captures the HTML.
Why is my meta refresh not working?
Common causes are a malformed content value, such as no leading number of seconds or a stray quote, a javascript: URL, an earlier refresh tag that already took effect, or a tag inside noscript, which scripting ignores.

See how your site scores right now

Paste your address into the free report, then use the How to Fix button on anything that needs work.

Free to use. Results in under a minute for most sites.