3.1.4 Abbreviations

WCAG 2.2 · 3.1.4 AAA Understandable

What it requires

A mechanism must be available for identifying the expanded form or meaning of every abbreviation — including acronyms and initialisms — wherever it appears in content. The criterion applies the first time an abbreviation is used and to each later use whose meaning could be ambiguous. If the expansion is already given in the surrounding text (for example, “World Health Organization (WHO)”), that satisfies the requirement; otherwise you must provide it some other way, such as an <abbr> element, an inline definition, or a glossary link.

  • People with reading or cognitive disabilities, who may not recognise a shortened form and cannot infer it from context.
  • Screen-reader users, since many abbreviations are spoken as garbled words or letter-by-letter without their intended meaning.
  • People new to a subject or language, including non-native readers, who are unfamiliar with domain jargon and acronyms.

How to detect it

Concrete checks
Check How Tooling
Find abbreviations Scan content for acronyms, initialisms, and shortened words on first use. Manual reading.
Expansion present Confirm each has an expansion in text, an <abbr title>, or a definition link. Manual; inspect markup.
Screen reader Listen to how the abbreviation is announced and whether meaning is conveyed. NVDA / VoiceOver.
Automated Tools can flag missing title attributes but cannot judge meaning or context. axe (partial only).

How to fix it

  1. Expand the abbreviation in surrounding text on first use: “Cascading Style Sheets (CSS)”.
  2. Where an inline expansion is awkward, wrap it in an <abbr> with a title giving the full form.
  3. For terms reused across pages, link to a glossary entry or a definition list.
  4. Be consistent: if an abbreviation has more than one meaning, make each use unambiguous.
<p>Built on <abbr title="Cascading Style Sheets">CSS</abbr> and
   <abbr title="HyperText Markup Language">HTML</abbr>.</p>

Copy-paste tests

Automated coverage

There is no fully automated axe-core rule for 3.1.4 — a tool can flag a missing title but cannot judge whether an abbreviation has a correct, meaningful expansion. This criterion needs manual review using the console check and steps below.

Run this in the browser console

abbr-audit.js
// Read-only: lists abbreviations and any expansion, outlines suspects.
const abbrs = [...document.querySelectorAll('abbr')];
const upper = [...document.body.innerText.matchAll(/\b[A-Z]{2,}\b/g)].map(m => m[0]);
console.table(abbrs.map(a => ({ text: a.textContent, title: a.title || '(none)' })));
console.log('ALL-CAPS tokens in text (review for missing <abbr>):', [...new Set(upper)]);
abbrs.filter(a => !a.title.trim()).forEach(a => { a.style.outline = '2px solid red'; });

What to check manually: confirm each title is the correct, full expansion (not a guess or wrong meaning), and that abbreviations expanded only in surrounding text stay unambiguous on every reuse — no script can verify meaning.