The issue

Automatic redirection via meta refresh is an obsolete technique that poses serious accessibility problems. WCAG success criterion 2.2.1 requires that the user have control over every time limit that modifies page content. The tag <meta http-equiv="refresh" content="5;url=/new-page"> automatically redirects the user to another page after a given delay, without asking their consent and without them being able to prevent the redirect. Meta refresh poses several major problems. First, it disorients screen reader users. The user arrives on a page, starts reading, and suddenly the content completely changes because the page was reloaded or redirected. The screen reader restarts reading from the beginning of the new page, and the user does not understand what happened. Second, it prevents slow users from interacting with the page. A person who needs more time to read or understand content (cognitive disabilities, dyslexia, elderly people, non-native speakers) may be redirected before finishing reading. Third, it interferes with the browser's Back button: after a meta refresh redirect, the Back button returns to the redirecting page, creating an infinite loop. Meta refresh with content="0" (immediate redirect) is technically less problematic for the user since they do not have time to start interacting with the page. But the correct solution for a redirect is always a server-side HTTP redirect (status 301 or 302), which is instantaneous, transparent to the user, and correctly handled by screen readers and search engines. Meta refresh with a delay greater than 0 is also used to automatically refresh a page (real-time news, dashboards). This case is also problematic: unexpected page refresh causes the user to lose focus, reading position, and context.

Does your site have this issue?

106 RGAA criteria analyzed in 5 minutes by our AI.

Test your site for free

Impact on users

For people using screen readers, an automatic redirect or refresh is a disorienting experience. The screen reader is reading the page content when suddenly everything changes. The user does not know if it is an error, if the page crashed, or if the content was updated. They lose their reading position and must restart from the beginning. For people with cognitive disabilities or learning difficulties, unexpected content changes are a source of confusion and anxiety. They may not understand why the page changed and believe they made a mistake. Slow readers (dyslexia, visual impairments, non-native speakers) are deprived of the time needed to consult the content if the page is redirected or refreshed too quickly. In terms of SEO, Google advises against using meta refresh for redirects and may penalize sites that use it instead of proper HTTP 301/302 redirects.

Code example

Before (non-compliant)
<!-- Automatic redirect after 5 seconds -->
<head>
  <meta http-equiv="refresh" content="5;url=https://example.com/new-page">
</head>
<body>
  <p>You will be redirected in 5 seconds...</p>
</body>

<!-- Automatic refresh every 30 seconds -->
<head>
  <meta http-equiv="refresh" content="30">
</head>
After (compliant)
<!-- Solution 1: Server-side HTTP redirect (recommended) -->
<!-- In .htaccess (Apache) -->
<!-- Redirect 301 /old-page https://example.com/new-page -->

<!-- Solution 2: HTTP header (Node.js/Express) -->
<!-- res.redirect(301, '/new-page'); -->

<!-- Solution 3: If refresh is necessary,
     give control to the user -->
<body>
  <p>New data is available.</p>
  <button type="button" onclick="location.reload()">
    Refresh the page
  </button>
  <!-- Or use an ARIA live region for updates -->
  <div aria-live="polite" id="updates">
    <!-- Updates are injected here without reloading the page -->
  </div>
</body>

Frequently Asked Questions

Can I use meta refresh with a 0-second delay?
A meta refresh with content="0" performs a near-instant redirect. It is less problematic than a multi-second delay because the user does not have time to start interacting with the page. But a server-side HTTP 301 or 302 redirect is always preferable: it is faster, more reliable, and better handled by screen readers and search engines.
How can I refresh content without reloading the entire page?
Use AJAX or Fetch to retrieve new data from the server and update only the relevant page area via JavaScript. Use an aria-live region to announce updates to screen readers. Give the user control with a 'Refresh' button rather than automatic refreshing. WebSockets or Server-Sent Events are also alternatives.
Is meta refresh forbidden by WCAG?
WCAG does not explicitly prohibit the meta refresh tag but requires the user to have control over any time limit. A meta refresh without a control mechanism (pause, disable, extend) is non-conformant. In practice, it is always preferable to use a server-side HTTP redirect for redirects and AJAX updates for dynamic content.
Does Google penalize meta refresh?
Google may interpret a meta refresh with a short delay as a 301 redirect, but this is not guaranteed. A meta refresh with a long delay may be considered poor practice and negatively affect SEO. HTTP 301/302 redirects are always preferred by Google and correctly pass link equity to the new URL.
Are Single Page Applications (SPAs) affected?
SPAs that use a JavaScript router to navigate between pages are not directly affected by meta refresh. But they must correctly handle content changes: announce page changes to screen readers (via aria-live or by moving focus), and not automatically reload page sections without user control.

Does your site have this issue?

Scrutia audits your site against WCAG 2.1 AA criteria in 5 minutes. Keyboard navigation, ARIA components, visible focus, contrasts, and much more.

Run a free audit