1.3.3 Level A Guideline 1.3 Adaptable Added in WCAG 2.0 Not detectable automatically

Sensory Characteristics

Instructions do not rely solely on shape, colour, size, visual location, orientation, or sound. "Click the round button on the right" fails; "select Continue" passes.

Who this affects

Blind users have no concept of "on the right". Low-vision users zoomed to 400% see a reflowed layout where "right" is meaningless. Colour-blind users cannot act on "the green box".

The failure and the fix

Each example below is a self-contained page, loaded in a frame so its markup cannot affect this page. Open either one on its own to test it with a keyboard or screen reader.

Fails 1.3.3

Open the failing example in a new tab

fail.html — the problem

<h1>Confirm your order</h1>

<!-- FAILURE 1: instructions by shape and colour only. A blind user has no
     concept of "round" or "green". A colour-blind user cannot tell them apart.
     And at 400% zoom the buttons stack, so even a sighted user loses "left". -->
<p>Press the round green button on the left to confirm, or the square red
   button on the right to cancel.</p>
<div class="row">
  <button type="button" class="round"></button>
  <button type="button" class="square"></button>
</div>

<!-- FAILURE 2: instruction by position. On a narrow viewport the sidebar is
     not "on the right" any more - it has reflowed below the content. -->
<p>Your delivery address is shown in the box on the right.</p>

<!-- FAILURE 3: instruction by size and visual styling only. -->
<p>Read the large text above before continuing.</p>

<!-- FAILURE 4: instruction by sound alone. -->
<p>You will hear a beep when your order is accepted.</p>

Meets 1.3.3

Open the passing example in a new tab

pass.html — the fix

<h1>Confirm your order</h1>

<!-- FIX 1: refer to controls by their NAME. Shape, colour and position can
     still be mentioned as extra help, but the name is what makes the
     instruction work for everyone - including a speech-input user, who has to
     say the name out loud to activate it. -->
<p>Select <strong>Confirm order</strong> to place your order, or
   <strong>Cancel</strong> to go back.</p>
<div class="row">
  <button type="button" class="confirm">Confirm order</button>
  <button type="button" class="cancel">Cancel</button>
</div>

<!-- FIX 2: refer to the section by its heading, not by where it happens to sit
     on a wide screen. -->
<p>Your delivery address is shown under <a href="#addr">Delivery address</a>.</p>

<!-- FIX 3: name the content instead of describing how it looks. -->
<p>Read <a href="#terms">Terms of sale</a> before continuing.</p>

<!-- FIX 4: pair the sound with a visible, programmatically exposed message.
     The live region means a screen reader announces it too (4.1.3). -->
<p>When your order is accepted you will hear a beep and see a confirmation
   message here:</p>
<p role="status">No order placed yet.</p>

<h2 id="addr">Delivery address</h2>
<p>12 River Street.</p>
<h2 id="terms">Terms of sale</h2>
<p>Goods are sold subject to availability.</p>

How to test it

Search the page text for shape, colour, size, and position words in instructions. Each must be accompanied by a name or other non-sensory identifier.

  • Automated

    Requires reading and understanding instructional text.

    No axe rule maps to this criterion. It has to be checked by a person.

  • Keyboard

    Unplug the mouse. Move through the page with Tab, Shift+Tab, Enter, Space and the arrow keys. See the keyboard testing script.

  • Screen reader

    Listen to both examples with NVDA, JAWS, VoiceOver or TalkBack and compare what is announced. See the screen reader cheat sheets.

  • Visual

    Zoom to 200% and 400%, narrow the viewport to 320 px, and apply the text-spacing overrides. See the visual testing procedures.

In the specification