Skip to main content
Accessibility Axe Core 4.11

Delayed refresh must not be used

About This Accessibility Rule

When a page refreshes automatically, the browser reloads the entire document and moves focus back to the top of the page. This means a user who was partway through reading content or filling out a form suddenly loses their place with no warning. For screen reader users, this is particularly disruptive — they must navigate from the beginning of the page again. Users with cognitive disabilities or those who read more slowly may not have finished processing the content before it disappears. People with mobility impairments who navigate slowly with alternative input devices are also affected, as their progress through the page is reset.

Delayed refreshes also constitute an interruption that the user cannot suppress, postpone, or control. Even if the delay is long (e.g., 60 seconds), the user has no way to opt out or extend the timer.

Related WCAG Success Criteria

This rule relates to two AAA-level WCAG success criteria:

  • WCAG 2.2.4 (Interruptions): Interruptions must be able to be postponed or suppressed by the user, except in emergencies. An automatic page refresh is an interruption that the user cannot control.
  • WCAG 3.2.5 (Change on Request): Changes of context must be initiated only by user request, or a mechanism must be available to turn off such changes. An automatic refresh or redirect is a change of context that occurs without user action.

How to Fix It

  1. Remove the http-equiv="refresh" attribute from every meta element that contains it.
  2. For redirects, use server-side HTTP redirects (e.g., a 301 or 302 status code) instead of client-side meta refresh. This is more reliable and does not cause accessibility issues.
  3. For periodic content updates, use JavaScript to fetch and update only the changed content without reloading the entire page. Provide users with controls to pause, extend, or disable the automatic updates.

Examples

Incorrect: Using Meta Refresh to Redirect After a Delay

This refreshes the page after 40 seconds, redirecting the user to a new URL without their consent:

<head>
  <meta http-equiv="refresh" content="40; url=https://example.com/new-page">
</head>

Incorrect: Using Meta Refresh to Reload the Page

This reloads the current page every 60 seconds:

<head>
  <meta http-equiv="refresh" content="60">
</head>

Correct: Server-Side Redirect

Instead of using a meta refresh for redirection, configure your server to return an HTTP redirect. For example, in an .htaccess file:

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

The HTML page itself contains no meta refresh:

<head>
  <meta charset="utf-8">
  <title>My Page</title>
</head>

Correct: JavaScript with User Control for Content Updates

If you need to periodically update content, use JavaScript and give the user the ability to control the behavior:

<head>
  <meta charset="utf-8">
  <title>Live Dashboard</title>
</head>
<body>
  <h1>Live Dashboard</h1>
  <button id="toggle-refresh">Pause Auto-Refresh</button>
  <div id="content">
    <p>Dashboard content goes here.</p>
  </div>
  <script>
    let refreshInterval = setInterval(updateContent, 60000);
    let isActive = true;

    document.getElementById("toggle-refresh").addEventListener("click", function () {
      if (isActive) {
        clearInterval(refreshInterval);
        this.textContent = "Resume Auto-Refresh";
      } else {
        refreshInterval = setInterval(updateContent, 60000);
        this.textContent = "Pause Auto-Refresh";
      }
      isActive = !isActive;
    });

    function updateContent() {
      // Fetch and update only the content area
    }
  </script>
</body>

This approach keeps the user in control. They can pause updates when they need more time to read content, and resume when ready — satisfying both WCAG 2.2.4 and 3.2.5.

What This Rule Checks

The axe rule meta-refresh-no-exceptions checks for the presence of the http-equiv="refresh" attribute on any meta element in the document. If found, the rule flags it as a violation regardless of the delay value, since even long delays deny the user control over when the refresh occurs.

Help us improve our guides

Was this guide helpful?

Detect accessibility issues automatically

Rocket Validator scans thousands of pages with Axe Core and the W3C Validator, finding accessibility issues across your entire site.

Ready to validate your sites?
Start your free trial today.