Avoid timed refresh/redirects

WCAG 2.2.4
Interruptions

Content available in English only.

Accessibility isn’t just about avoiding violations — it’s about ensuring that everyone can use your product with confidence. This guide explains each rule’s intent, highlights common issues, and shows how to fix them according to WCAG and the European Accessibility Act (EAA).

These guidelines do not replace the official WCAG standards. They’re concise, developer-focused notes to help you identify and fix issues effectively.

The user, not the system, decides when the page updates.

Why this matters and how to fix it

Why this matters

Automatic refreshes or redirects interrupt a user's workflow without their consent. These interruptions can reset context, break form entry, disrupt screen reader focus, and cause disorientation. Users must remain in control of when content updates or navigation occurs.

How to fix this issue

Remove `<meta http-equiv="refresh">` entirely. If content needs updating, notify the user and allow them to trigger the update manually (e.g., 'New data available — Refresh'). For dynamic content updates, use ARIA live regions, not timed reloads.

Automated detection · Manual review recommended

Developer guidance

This issue often appears in dashboards, news tickers, monitoring screens, and legacy CMS templates. Use a global 'update available' banner pattern in your design system, not auto-refresh logic. In frameworks, audit server-rendered shell layouts where meta refresh tags may still exist.


Code examples

Incorrect Implementation

<meta http-equiv="refresh" content="600; url=/news">

Correct Implementation

<p>New updates are available.</p>
<button id="refresh">Refresh now</button>

Real-World Examples

Before

<meta http-equiv="refresh" content="30"> <!-- Live dashboard auto-refreshes every 30 seconds → interrupts users completing tasks -->

After

<section aria-live="polite">
  <p>New data available. <button>Refresh</button></p>
</section>
<!-- User decides when to refresh → no interruption -->

Manual testing

  1. 1. Check the <head> for any `<meta http-equiv="refresh">` tags.
  2. 2. If found, confirm whether the page refreshes without user interaction.
  3. • Expected: The page does **not** refresh automatically.
  4. 3. Interact with content (e.g., type in a field, move focus).
  5. • Expected: No unexpected context or focus change occurs.
  6. 4. Turn on a screen reader and navigate the page.
  7. • Unexpected refreshes should not interrupt reading or navigation.
  8. 5. If periodic updates are needed (e.g., dashboards):
  9. • Verify a visible 'Refresh' button is provided.
  10. • Verify no action or context is lost when refresh is triggered.
eu icon getwcag

Trusted by organizations across Europe working toward WCAG and EAA conformance