Meta Refresh Test
The Meta Refresh Test scans the <head> of any URL for <meta http-equiv="refresh"> tags that trigger a client-side redirect after a delay. While Google can sometimes interpret meta refresh as a 301 when the delay is zero, it is universally a poor substitute for a proper server-side redirect — slower for users, weaker for SEO, and a known cause of unintentional duplicate content. This tool surfaces every meta refresh on the page and gives you the exact server-side replacement.
What This Tool Checks
- Presence of <meta http-equiv="refresh"> tag
- Delay value (0 = instant, anything else hurts UX)
- Target URL of the refresh
- Cross-origin refresh destinations
- Refresh used as a "temporary maintenance" page
- Combination of meta refresh + JavaScript redirect
Why It Matters for SEO
Meta refresh is a relic of the late 1990s. Google treats a 0-second meta refresh as a 301 in most cases, but anything longer is treated as a soft 302 and passes far less link equity. From a UX perspective, meta refresh visibly delays the user and can confuse the back button. Server-side 301 redirects are faster, clearer to crawlers, and the universally recommended replacement.
How to Fix It
Replace every meta refresh with a server-side 301 redirect at the web server, application or CDN level (Apache .htaccess, Nginx config, Cloudflare Page Rule). Remove the <meta http-equiv="refresh"> tag from the HTML. Verify with the URL Redirect Checker that the new redirect is a clean single-hop 301.
How It Works
We fetch the page, parse the <head> for any <meta http-equiv="refresh"> elements, and report the URL the user will be sent to plus the delay before redirect fires. Cross-origin redirects, non-zero delays and chained refreshes are flagged for replacement.
Common Mistakes to Avoid
- Using meta refresh because the team has no access to server config
- Non-zero delay creating a confusing "redirecting in 5 seconds" experience
- Meta refresh + canonical tag pointing at conflicting URLs
- Old "domain has moved" splash pages still using meta refresh
- Forgetting that meta refresh breaks the browser back button
Quick Checklist
- No <meta http-equiv="refresh"> tags in production HTML
- All redirects implemented server-side as 301s
- Old "this page has moved" splash pages converted to 301s
- Internal links updated to final URLs
- Verified clean redirect chain via the redirect checker