Meta Refresh Test
What is it?
A meta refresh tag automatically reloads or redirects a page after a delay, an obsolete pattern that predates modern HTTP redirects. It hurts accessibility by jumping focus and disorienting screen reader users, and search engines treat it as a weaker signal than a proper server-side 301 redirect for permanent URL changes. Modern accessibility guidelines effectively prohibit auto-refresh, and every server, hosting platform, and CMS now supports proper redirects natively. This test detects whether your page uses a meta refresh tag so you can replace it with the right alternative.
Why meta refresh is no longer the right choice
Meta refresh predates modern HTTP redirects and was originally created as a way to handle redirects without server-side configuration. Today, every server, hosting platform, and CMS supports proper HTTP redirects, and search engines treat 301 redirects as a stronger and more authoritative signal than meta refresh for permanent URL changes. Using meta refresh in 2026 typically signals legacy code that has not been modernized.
Beyond search engine treatment, meta refresh has real accessibility costs. The auto-refresh moves keyboard focus and announces the page reload to screen readers, which is disorienting and frustrating for users who rely on assistive technology. Some users, including those with cognitive or motor disabilities, may not be able to interact with the page within the refresh interval. Modern accessibility guidelines effectively prohibit auto-refresh for these reasons.
Better alternatives
- 301 server redirects for permanent URL changes; they pass full ranking signal to the new URL and are cached aggressively.
- 302 server redirects only for genuinely temporary moves.
- Fetch-based partial updates when refreshing data; reload only what changed rather than the whole page.
- WebSocket or Server-Sent Events for real-time data needs.
This test reports any meta refresh tags found on your page. The fix guide below walks through replacing meta refresh with proper 301 redirects in the major web servers, content management systems, and CDN platforms.
Pass rate:
-
Top 100 websites: 98%This value indicates the percent of top 100 most visited websites in the US that pass this test (in the past 12 months).
-
All websites: 99%This value indicates the percent of all websites analyzed in SEO Site Checkup (500,000+) in the past 12 months.
| 2021 | 95% |
|---|---|
| 2022 | 96% |
| 2023 | 96% |
| 2024 | 98% |
100
75
50
25
0
How do I fix it?
This test fails when the page uses a meta refresh tag to automatically reload or redirect after a delay. Meta refresh is largely obsolete: it hurts accessibility by jumping focus and disorienting screen reader users, and it is a weaker signal to search engines than a proper server-side 301 redirect. Fixing this issue means removing the meta refresh and using the appropriate alternative (a 301 redirect for permanent URL changes, JavaScript or CSS for dynamic content updates).
Where to make the change
- Raw HTML: remove
<meta http-equiv="refresh" ...>from the<head>. - Server configuration: replace with a proper 301 redirect at the server, CDN, or platform level.
- WordPress: a redirection plugin handles 301s without touching code. Remove any meta refresh injected by older themes or shortcodes.
- Shopify, Wix, Squarespace: use the platform's URL redirect settings rather than meta refresh.
Common causes and how to resolve them
- Meta refresh used as a redirect: replace with a server-side 301. Search engines treat 301 redirects as authoritative; meta refresh is a fallback at best.
- Meta refresh used to reload data: use
fetch()withsetIntervalor a real-time data layer instead. Reloading the entire page wastes bandwidth and frustrates users. - Inherited from a legacy template: remove the tag from the template; do not just override it on individual pages.
Best practices
- Use 301 redirects for URL changes: they pass full ranking signal to the new URL and are cached aggressively.
- Use 302 only for genuinely temporary moves: the 302 status indicates a temporary redirect; reserve it for short-lived changes.
- Avoid auto-reloading content: if real-time updates matter, fetch only the changed data rather than reloading the page.