Why is a timed meta refresh an accessibility problem?
meta-refresh page
The issue
A page that reloads or redirects itself after a delay takes the content away from anyone who hasn’t finished with it. A screen reader user who is halfway through is sent back to the top, or to another page, and someone who reads slowly may never get to the end.
The cause is a <meta http-equiv="refresh"> tag with a delay greater than zero, usually used to send visitors on from an old page or to refresh a live score or a dashboard. The user gets no warning and no way to stop it, which WCAG 2.2.1, Timing Adjustable, requires.
Scope
Each <meta http-equiv="refresh"> on the page is checked. Two rules report it:
meta-refreshreports any refresh with a delay above zero, with or without a URL to go to.meta-refresh-no-exceptions, a best practice, reports the same tags with no exceptions.
A delay of zero, an instant redirect, isn’t reported.
How to check you have it
- In probeo: the page reports the
meta-refreshrule, “Timed refresh must not exist”, with critical impact, giving the delay. The best-practicemeta-refresh-no-exceptionsrule, with the same help text, reports it with minor impact. - By hand: search the page source for
http-equiv="refresh"and read the number at the start of itscontent. - With a tool: axe DevTools reports the same rule ids.
The fix
Replace the timed refresh with a server-side redirect, or remove it and let the user refresh.
A page that has moved should answer with a 301 from the server, which is also what search engines expect. Content that updates should update in place, with script, and announce changes politely if they matter, rather than reloading the whole page.
<!-- Remove -->
<meta http-equiv="refresh" content="5; url=/new-page/">Done when: no meta refresh has a delay above zero, and the check above comes back clean.
Do not
- Do not shorten the delay instead of removing it; any delay above zero is reported.
- Do not reload the page on a timer to keep data fresh.
FAQ
Is an instant meta refresh acceptable?
For accessibility, a delay of zero isn’t reported, because the page never appears before it moves on. A server redirect is still the better choice.
Why are there two rules?
meta-refresh maps to WCAG 2.2.1. meta-refresh-no-exceptions is a stricter best-practice version. Probeo reports both on the same tag.
What if the page has to refresh, like a live feed?
Update the content in place with script, and give the user a way to pause the updates.
Which product detects this
Probeo checks this on every page of your site as part of Site Clarity. This page explains one instance; the product tells you every page that has it.