3.3.5 Level AAA Guideline 3.3 Input Assistance Added in WCAG 2.0 Not detectable automatically

Help

Context-sensitive help is available for functions requiring user input.

Who this affects

Users with cognitive and learning disabilities who need explanation at the point of difficulty rather than in a separate manual.

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 3.3.5

Open the failing example in a new tab

fail.html — the problem

<h1>Apply for a trade account</h1>

<!-- FAILURE: the fields are correctly labelled - so 3.3.2 passes at Level A -
     but several of them ask for things a first-time applicant will not
     understand, and there is no help at the point of need. The only help is a
     general "Contact us" link in the footer, which requires the user to
     abandon the form to use it. -->
<form>
  <div class="field">
    <label for="vat">VAT registration number</label>
    <input type="text" id="vat">
  </div>
  <div class="field">
    <label for="sic">SIC code</label>
    <input type="text" id="sic">
  </div>
  <div class="field">
    <label for="terms">Requested payment terms</label>
    <input type="text" id="terms">
  </div>
  <div class="field">
    <label for="credit">Estimated monthly credit requirement</label>
    <input type="text" id="credit">
  </div>
  <button type="submit" class="button">Submit application</button>
</form>

<hr>
<p><a href="#c">Contact us</a></p>
<p id="c">Contact page.</p>

Meets 3.3.5

Open the passing example in a new tab

pass.html — the fix

<h1>Apply for a trade account</h1>

<form>
  <!-- FIX 1: always-visible hint text is the best kind of help - it needs no
       interaction at all, so nobody has to discover that help exists. -->
  <div class="field">
    <label for="vat">VAT registration number</label>
    <p class="hint" id="vat-h">Nine digits, for example 123456789. Leave blank if you
       are not VAT registered.</p>
    <input type="text" id="vat" aria-describedby="vat-h">
  </div>

  <!-- FIX 2: where the explanation is longer, a disclosure keeps the form
       scannable while keeping the help one keystroke away and IN PLACE - the
       user never leaves the form. -->
  <div class="field">
    <label for="sic">SIC code</label>
    <p class="hint" id="sic-h">The five-digit code describing your main business activity.</p>
    <details>
      <summary>What is a SIC code and where do I find mine?</summary>
      <p>SIC stands for Standard Industrial Classification. It is the code you gave
         when you registered your company — you can find it on your incorporation
         documents, or look it up on the Companies House website.</p>
      <p>Booksellers are usually 47610. If you are unsure, give your best guess and
         we will check it.</p>
    </details>
    <input type="text" id="sic" aria-describedby="sic-h">
  </div>

  <!-- FIX 3: define the jargon in the hint rather than assuming it. -->
  <div class="field">
    <label for="terms">Requested payment terms</label>
    <p class="hint" id="terms-h">How long you would like to pay us in, in days.
       Most new accounts start at 30 days.</p>
    <input type="text" id="terms" aria-describedby="terms-h">
  </div>

  <div class="field">
    <label for="credit">Estimated monthly credit requirement</label>
    <p class="hint" id="credit-h">Roughly how much you expect to order each month,
       in pounds. An estimate is fine — we will review it with you.</p>
    <input type="text" id="credit" aria-describedby="credit-h">
  </div>

  <button type="submit" class="button">Submit application</button>
</form>

<!-- FIX 4: human help, offered beside the form rather than only in the footer. -->
<h2>If you get stuck</h2>
<p>Call our trade desk on 01234 567890, Monday to Friday, or
   <a href="#c">email the trade team</a>. We can fill the form in with you over the phone.</p>

<p id="c">Contact page.</p>

<!-- 3.3.5 asks for CONTEXT-SENSITIVE help - help at the point of difficulty,
     not a manual somewhere else. Note how it differs from its neighbours:
       3.3.2 (A)    every field must have a label or instruction
       3.3.5 (AAA)  fields that need explaining must have help available
       3.2.6 (A)    if help exists across pages, it must be in a consistent place -->

How to test it

Confirm each non-obvious field offers help at the point of need — inline hint text, an accessible help toggle, or spelled-out examples.

  • Automated

    Requires evaluating whether help is present and genuinely useful.

    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