3.3.4 Error Prevention (Legal, Financial, Data)

WCAG 2.2 · 3.3.4 AA Understandable

What it requires

For pages that create legal commitments or financial transactions, that modify or delete user-controllable data in a data-storage system, or that submit test responses, the user must be able to avoid serious mistakes. At least one of the following must be true:

  • Reversible — the submission can be undone.
  • Checked — data is checked for input errors and the user can correct them.
  • Confirmed — a final step lets the user review, confirm, and correct the information before submitting.

This is about preventing irreversible harm — a duplicated payment, a cancelled booking, a deleted record — not about routine forms.

Everyone benefits, but failures hit hardest for:

  • People with cognitive or learning disabilities, who are most likely to make and least able to recover from an accidental submission.
  • People with motor disabilities, who may trigger a control unintentionally.
  • Screen-reader and low-vision users, who can miss a one-way action that gives no chance to review.

How to detect it

Checks for 3.3.4
CheckWhat to look for
Manual reviewIdentify pages with legal, financial, data-change, or test-submission actions. Confirm at least one of reversible / checked / confirmed is present.
KeyboardReach the confirm and cancel/edit controls by keyboard; ensure the review step is operable without a mouse.
Screen readerVerify the review/confirmation content is announced and that the user can navigate back to correct fields.
Zoom / reflowAt 200% and 400% the confirmation summary and its buttons remain visible and usable.
Automated toolsCannot detect this — axe and similar tools have no way to judge whether an action is reversible or confirmed. Always tested by a human.

How to fix it

  1. Map every action that commits a legal, financial, data, or test submission.
  2. For each, provide at least one safeguard: make it reversible, validate and let users correct input, or add a final review-and-confirm step.
  3. Prefer an explicit confirmation page that summarises what will happen and offers Back/Edit alongside Confirm.
  4. Make all confirmation controls keyboard operable and announced to assistive technology.
<section aria-labelledby="confirm-h">
  <h2 id="confirm-h">Confirm your order</h2>
  <dl>
    <dt>Total</dt><dd>$149.00</dd>
    <dt>Ship to</dt><dd>12 Main St</dd>
  </dl>
  <a href="/cart/edit">Edit</a>
  <button type="submit">Confirm and pay</button>
</section>

Copy-paste tests

Automated coverage

There is no fully automated axe-core rule for 3.3.4 Error Prevention (Legal, Financial, Data). It requires manual review: use the console check and steps below to locate consequential submissions, then judge them by hand.

Run this in the browser console

console: find-consequential-forms.js
// Read-only: surfaces forms whose submit may be legal/financial/data-deleting.
const rx = /(pay|purchase|buy|order|checkout|submit|confirm|agree|delete|remove|cancel|transfer|book|sign)/i;
const hits = [...document.querySelectorAll('form')].filter(f =>
  rx.test(f.textContent) || [...f.querySelectorAll('button,input[type=submit]')]
    .some(b => rx.test(b.value || b.textContent)));
console.table(hits.map(f => ({ action: f.action, fields: f.elements.length, text: f.textContent.trim().slice(0,60) })));
hits.forEach(f => f.style.outline = '2px solid orange'); // visual only, not submitted

What to check manually: for each highlighted form, confirm the action is reversible, or that the user can review/correct data, or gets a confirmation step before it commits. No script can tell whether a submission is legally binding or deletes real data.