• Success Criterion 2.4.5
  • Conformance level AA

Search Results Page That Can Only Be Reached via Search

2.4.5 — Multiple Ways

Scenario

Setting

A bank's mobile money-transfer screen

What’s wrong

Search results themselves unfindable except via search (dead-end architecture).

Example

function searchTransfers(query) {
  fetch('/api/transfers/search', { method: 'POST', body: JSON.stringify({ query }) })
    .then(renderResultsInPlace);
}
<!-- no URL change, no route, results exist only in memory -->

Why it matters

A customer who found a past transfer through search can't return to those results later or share the link with support, since the results have no address.

How to test

Try to reach a search result page directly (e.g., via bookmark or shared link) without going through search again: if it's unfindable any other way, it's a dead end and fails.

How to fix

Results reachable only by re-running the search aren't a real second way to find that content.

function searchTransfers(query) {
  history.pushState({}, '', '/transfers/search?q=' + encodeURIComponent(query));
  fetch('/api/transfers/search?q=' + encodeURIComponent(query))
    .then(renderResultsInPlace);
}

Outcome

A customer bookmarks their filtered transfer results and returns to the same list next session.

Who is affected

Users who navigate primarily through bookmarks, browser history, or shared links hit a permanent dead end at search results.

Learn more