Skip to main content
WCAGrules
Quick navigation

Redirect on the server, not with a timed refresh

Consecutive page loads are what this technique exists to prevent. SVR1 is a sufficient technique, and the confusion it names comes from a reader meeting two pages where they asked for one. A server-side redirect produces one of them. A meta refresh produces two, and puts a page the user was never meant to read in between. The method is what your web server already does. Answer the old URL with a status code in the 3xx range and a Location header naming the new one, and the browser goes straight there. No countdown to race, no interim page flashing past mid-sentence, and no extra history entry turning Back into a bounce. Two things are worth knowing before you cite it. The range is any 3xx rather than only 301 and 302, so 307 and 308 are inside the technique. And the published test looks for server-side redirects without timeouts, so a server redirect with a delay attached is still the problem this technique exists to remove.

How we find it in an audit

Reviewers read the response headers. That makes this one of the more automatable checks in the family. A 3xx with a Location header is a pass and a page body containing a meta refresh with a delay is a finding, and both are visible without a browser. What still takes a person is the Back button, because the harm from a client-side redirect shows up in navigation rather than in markup. We press Back after every redirect and see whether we end up somewhere useful or bounced straight forward again.

How affected users experience it

An interim page with a countdown is a page somebody is trying to read. A screen reader starts at the top and works down. Part way through a sentence the whole document is replaced, and the reader ends up somewhere else with no announcement that anything moved. Someone using a magnifier sees the visible region go blank and refill with something else. And when they press Back to work out what happened, the redirect fires again and sends them forward. Back has stopped working.

Passes vs. fails

Passes: name, role, and state exposed. Fails: a control with no identity.

Passes

HTTP/1.1 301 Moved Permanently
Location: /new-catalog
// One page load, no interim page, and Back still goes back.

Fails

<meta http-equiv="refresh" content="5; url=/new-catalog">
<!-- Five seconds on a stub page nobody meant to read, and Back becomes a trap. -->

How this gets tested

The W3C publishes test rules that define what a checker looks for here.

Other ways to satisfy this rule

16 guides on this site are filed under 3.2.5 Change on Request. W3C lists this one as sufficient for that rule on its own. Implement it correctly, in a way your readers' software actually supports, and the rule is met.

This guide is our interpretation of W3C technique SVR1: Implementing automatic redirects on the server side instead of on the client side. W3C publishes its techniques as guidance rather than as the standard, and says so on every one of them. The success criterion is what conformance is measured against, and a technique is one documented way to meet it.

Go somewhere useful

Find tools, resources and your workspace.

29 destinations