Timed Refresh Exists

No Comments
Timed refresh exists

Element Code: PE-031

TL;DR: A timed meta refresh (<meta http-equiv="refresh" content="5;url=...">) is a client side redirect on a stopwatch. It jerks users around, confuses crawlers about which URL is canonical, and passes redirect signals unreliably. Rip it out and use a server side 301 for redirects, or a proper polling technique for live data.
CHECK ID
PE-031
TYPE
Client redirect
SEVERITY
Medium
FIX EFFORT
Low
DETECT WITH
Screaming Frog

What "Timed Refresh Exists" actually means

This check fires when a page carries a meta refresh with a non zero delay, something like <meta http-equiv="refresh" content="5;url=https://example.com/new/">. The number before the semicolon is a countdown in seconds. When the timer hits zero, the browser reloads the current page or navigates to the URL you specified. It is a redirect that lives in the HTML instead of in the HTTP response, and it runs on a delay instead of instantly.

People reach for it for two reasons. Either they wanted a redirect and did not have server access to set up a real one, or they wanted a page to auto reload to show fresh data (a scoreboard, a dashboard, a "you will be redirected shortly" interstitial). Both use cases have better answers in 2026, and the timed refresh is the worst option in almost every case I run into during audits.

Why this matters for SEO and users

Google has said for years that it treats a meta refresh with a URL roughly like a redirect, and that an instant (zero second) refresh is treated closer to a 301 while a delayed one is treated more like a soft 302 or, worse, an unclear signal. The keyword is unclear. When you leave the destination ambiguous, you leave ranking consolidation on the table. Link equity that should flow cleanly to the destination gets diluted or delayed while Google figures out your intent.

The user experience side is blunt. A timed refresh yanks the page out from under someone mid read. It breaks the back button, because the browser can get stuck in a refresh loop where pressing back just fires the timer again. Screen reader users get no warning that the ground is about to move. The W3C accessibility guidelines (WCAG 2.2, success criterion 2.2.1) explicitly flag auto refreshing content that the user cannot pause or stop. So a timed refresh is not just an SEO smell, it can be a compliance problem on regulated sites.

How a timed refresh compares to the alternatives

MethodWhere it livesSEO signalGood for
Meta refresh, delayedHTML headAmbiguous, softAlmost nothing
Meta refresh, 0 secondHTML headRedirect like, weakLegacy fallback only
301 (server)HTTP headerStrong, permanentPermanent moves
302 (server)HTTP headerTemporary, clearShort term moves
JS fetch/pollScriptNo URL changeLive data updates

The two paths, decided

Timed refresh found What was it trying to do? Send users to another URL Show fresher data Use a server 301 (permanent) or 302 if temporary Poll with fetch() + update DOM URL never changes

How to detect it across a site

You do not want to eyeball view source page by page. Crawl for it:

  • Screaming Frog SEO Spider: run a crawl, then open the Directives tab or filter the internal report. Meta refresh URLs surface under the "Meta Refresh" column, and you can bulk export every offender with its target.
  • Sitebulb: flags meta refresh redirects as a dedicated hint under its redirect and indexability checks, with the delay value shown.
  • Google Search Console: the URL Inspection tool will show a page redirecting when the refresh is zero second, and the Page Indexing report can bucket affected URLs as "Page with redirect."
  • Server logs or a quick grep: if you have template access, grep the codebase for http-equiv="refresh". That finds the source, not just the symptom.

How to fix it, step by step

  1. Confirm the intent. Redirect or live data? That single answer picks your fix.
  2. For a redirect, add a server side rule. On Apache: Redirect 301 /old-path/ https://example.com/new-path/. On Nginx: return 301 https://example.com/new-path/;. In a CMS, use its redirect manager (Yoast, Rank Math, and Redirection all do this cleanly).
  3. Delete the meta tag from the template or page body once the server redirect is confirmed working. Leaving both creates a double redirect.
  4. For live data, replace the whole page reload with a fetch() call on an interval that updates only the changed elements. The URL stays put, the scroll position stays put, and crawlers see a stable page.
  5. Retest. Recrawl the affected URLs and inspect them in Search Console to confirm the signal is now a clean 301 or no redirect at all.

Do vs Don't

Do

  • Use a server side 301 for permanent moves
  • Poll with fetch() when you only need fresh data
  • Grep templates for http-equiv="refresh" to kill it at the source
  • Give users a way to pause any auto updating region
  • Recrawl and inspect after every fix

Don't

  • Use a delayed meta refresh as a redirect
  • Stack a meta refresh on top of a server redirect
  • Auto reload a full page just to update one number
  • Leave "you will be redirected in 5 seconds" interstitials in place
  • Assume the refresh passes link equity like a 301 does

What "good" looks like

Zero meta refresh tags in your HTML. Redirects handled at the server with the correct status code, so a crawler gets the answer in the HTTP response before it ever parses markup. Any live updating content driven by scripted polling that leaves the URL and scroll position alone and can be paused. When you recrawl, the "Meta Refresh" column in Screaming Frog is empty, and Search Console shows either a clean permanent redirect or an ordinary indexable page.

FAQ

Is a zero second meta refresh safe to keep?
It is safer than a delayed one, and Google treats it close to a redirect, but a server 301 is still stronger and clearer. Treat a zero second refresh as a temporary fallback when you genuinely cannot touch the server, not as the destination.
Does a meta refresh pass link equity?
A zero second refresh can pass most of it, similar to a redirect, but a delayed refresh sends an ambiguous signal and you should not count on it consolidating rankings. A 301 is the reliable choice.
My page needs to show live scores. What do I use instead?
Use JavaScript to fetch the updated data on an interval and patch only the elements that changed. The full page reload is what causes the SEO and accessibility problems, not the freshness itself.
Why does the check flag this if the page still works?
Working is not the same as clean. The tag breaks the back button, trips WCAG 2.2.1 on auto refresh, and hands crawlers a weak redirect signal. All of that is invisible until it costs you rankings or an accessibility complaint.

Found timed refreshes buried in your templates?

A full audit surfaces every legacy redirect trick, ranks them by impact, and hands you the exact fix list. Stop guessing which ones are bleeding rankings.

Get an Advanced SEO Audit

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.

Subscribe to our newsletter!

More from our blog