Failure of Success Criterion 2.2.1 due to using server-side techniques to automatically redirect pages after a time-out

Important Information about Techniques

See Understanding Techniques for WCAG Success Criteria for important information about the usage of these informative techniques and how they relate to the normative WCAG 2.1 success criteria. The Applicability section explains the scope of the technique, and the presence of techniques for a specific technology does not imply that the technology can be used in all situations to create content that meets WCAG 2.1.


This technique relates to Success Criterion 2.2.1: Timing Adjustable (Failure).


Server-side scripting languages allow developers to set the non-standard HTTP header "Refresh" with a time-out (in seconds) and a URI to which the browser is redirected after the specified time-out. If the time interval is too short, people who are blind will not have enough time to make their screen readers read the page before the page refreshes unexpectedly and causes the screen reader to begin reading at the top. Sighted users may also be disoriented by the unexpected refresh.

The HTTP header that is set is Refresh: {time in seconds}; url={URI of new location}. It is also possible to omit the URI and obtain a periodically refreshing page, which causes the same problem. The HTTP header that is set is Refresh: {time in seconds}.


Example 1

The following example is a failure because a timed server-side redirect is implemented in Java Servlets or JavaServer Pages (JSP).

public void doGet (HttpServletRequest request, HttpServletResponse response)
      throws IOException, ServletException {
	PrintWriter out = response.getWriter();
	response.setHeader("Refresh", "10; URL=TargetPage.html");
	out.println("<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\"
	out.println("<p>This page will redirect you in 10 seconds.</p>");

Example 2

The following example is a failure because a timed server-side redirect is implemented in Active Server Pages (ASP) with VBScript.

 <% @Language = "VBScript" %>
 <% option explicit 
 Response.AddHeader "Refresh", "5; URL=TargetPage.htm"
 %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
 <html xmlns="" lang="en" xml:lang="en">
 <!--HTML code for content that is shown before the redirect is triggered-->


Resources are for information purposes only, no endorsement implied.



  1. Check to see if the web page automatically redirects to another page after some period of time without the user taking any action.
  2. Check if the page qualifies for Real-time or Essential Exceptions in Success Criterion 2.2.1 Timing Adjustable.
  3. Check if the user is provided an opportunity to turn off, extend, or adjust the timing of the page refresh.

Expected Results

  • If check #1 is true and checks #2-3 are false then this failure condition applies and content fails the Success Criterion.