Accessibility Audit Example: 12 WCAG 2.1 Violations Found
This example shows the aiwebpageseo Accessibility Checker for a SaaS landing page. The report finds 12 WCAG 2.1 violations: 4 Level A (critical — must fix), 6 Level AA (should fix) and 2 Level AAA. Includes contrast ratios for failing elements and specific fix code.
4 form inputs without associated labels (WCAG 1.3.1)
The email, password, name and company form fields have placeholder text but no <label> element. Screen readers announce the field type only, with no context. Fix: Add <label for="field-id">Field Name</label> before each input, or use aria-label="Field Name" on the input itself.
No skip navigation link (WCAG 2.4.1)
Keyboard users must tab through all 14 navigation items on every page. Add a skip link as the very first element: <a href="#main-content" class="skip-link">Skip to main content</a> with CSS to show it only on focus.
3 images in content with no alt text (WCAG 1.1.1)
3 product screenshots have no alt attribute. Add descriptive alt text explaining the image content, e.g. alt="Project management dashboard showing kanban board with 5 active tasks".
Modal dialog missing ARIA role and focus management (WCAG 4.1.2)
The pricing modal has no role="dialog" and no aria-labelledby. When opened, focus is not moved inside the modal. Add role="dialog" aria-labelledby="modal-title" and move focus to the modal title on open.
Low contrast text — 4 elements below 4.5:1 ratio (WCAG 1.4.3)
Footer link text (#94a3b8 on #0b0f1a) has contrast ratio 3.8:1 — below the AA minimum of 4.5:1 for normal text. Darken to #b8c4d0 to achieve 5.2:1. Placeholder text also fails — use #6b7280 minimum.
Focus indicator not visible on custom buttons (WCAG 2.4.7)
Custom .btn elements have outline: none applied via CSS, removing the default focus ring. Replace with outline: 2px solid var(--accent); outline-offset: 2px on :focus-visible for keyboard users without affecting mouse users.
The most important thing to understand about any automated accessibility report, including this one: an automated tool can only detect a minority of WCAG failures. Industry testing consistently puts the figure at somewhere around a third. The rest — whether your alt text is meaningful, whether the focus order makes sense, whether an error message actually explains the error — cannot be determined by a machine.
So a score of 71/100 tells you there are at least twelve problems. It does not tell you there are only twelve. And a hypothetical score of 100 would not mean the site is accessible — it would mean the machine-checkable failures are cleared, which is the beginning of the work rather than the end of it.
Beware the accessibility overlay
Third-party widgets that promise to make a site "WCAG compliant" with one line of JavaScript do not achieve conformance, and their claims have been the subject of substantial legal action. They cannot fix a missing label or a broken focus order, because those defects live in the page's own markup. There is no plugin that makes an inaccessible site accessible.
The report separates violations into three levels, and they are frequently misread as "critical, important, nice-to-have". That is roughly true of the impact, but the levels actually describe conformance tiers, and only two of them are usually relevant.
| Level | What it means | Do you have to? |
|---|---|---|
| A | The floor. Failing these makes content unusable for some people entirely. | Yes — always |
| AA | The standard nearly every law and procurement policy references. | Effectively yes |
| AAA | Enhanced. The W3C itself does not recommend it as a general policy target. | No — and not expected |
AA is the target. The 2 Level AAA findings in this report are informational — they are not a failure against the standard almost anyone is held to, and chasing them before the Level A items are fixed is the wrong order. The 4 Level A violations are the ones that make the page genuinely unusable for somebody.
The report flags footer links at 3.8:1 against a 4.5:1 minimum. That threshold is not arbitrary and it is not the only one — there are three, and using the wrong one is the most common contrast mistake:
| What | Minimum (AA) | Note |
|---|---|---|
| Normal text | 4.5 : 1 | WCAG 1.4.3 |
| Large text — 24px, or 18.66px bold | 3 : 1 | Larger glyphs need less contrast |
| UI components and graphics | 3 : 1 | WCAG 1.4.11 — buttons, input borders, icons |
Two consequences people miss. First, 1.4.11 covers the border of your input fields and the outline of your buttons — a beautifully subtle 1px grey border on a white field is very frequently a failure, and no contrast checker aimed at text will catch it.
Second, placeholder text is text. Designers habitually set it to a pale grey because it is "only a hint" — but it is a hint that some users cannot read, and if it is the only label (see below), it is the only thing telling them what the field is for.
The report finds four inputs with placeholder text and no <label>. This is the single most common accessibility defect on the web, and it is worth understanding why it is critical rather than cosmetic:
- The placeholder disappears when you start typing. Anybody who is interrupted mid-form now has no idea what they were entering. This affects everyone, not just screen reader users.
- Screen readers announce the field type, not the purpose. "Edit text, blank" is what the user hears.
- You lose the click target. A properly associated
<label>focuses its input when clicked — a real usability benefit for anyone with a motor impairment, and for anyone on a phone. - Autofill degrades. Browsers use labels and
autocompleteattributes to work out what a field wants.
The first rule of ARIA: don't use ARIA
The report offers aria-label as an alternative fix, and it is a valid one — but a native <label for="…"> is better wherever it is possible. It is visible, it is clickable, it survives, and it cannot silently override the accessible name in a way nobody notices. Reach for ARIA when native HTML genuinely cannot express what you need, not as a first resort.
Put the mouse down. Press Tab. Work through the whole page using only the keyboard, and watch for these five things — every one of them is a WCAG failure that the majority of automated reports will not catch:
- Can you see where you are? If the focus ring vanishes, you have found the
outline: nonethe report flagged. Navigating a page you cannot see the focus on is impossible. - Does the focus order follow the visual order? A CSS layout change that reorders elements visually without reordering them in the DOM produces a tab sequence that jumps around the screen.
- Can you escape? Open the modal. Does focus move into it? Does Esc close it? Does focus return to the button that opened it? A modal you can tab out of, into a page you cannot see, is a trap.
- Can you reach everything? Custom dropdowns, carousels and tabs built from
<div>s are frequently unreachable by keyboard entirely. - Is there a skip link? Tab once from the top of the page. If nothing appears, you have confirmed the 2.4.1 failure — and every keyboard user is tabbing through all fourteen navigation items on every single page.
Then set the browser zoom to 200% (WCAG 1.4.4) and narrow the window to 320px (1.4.10). Content must reflow without horizontal scrolling and nothing may be cut off. These two checks take a minute and find layout failures that no report will.
This is not a rhetorical overlap. Several items in this report are simultaneously WCAG failures and SEO defects, fixed by the same edit:
| Fix | Accessibility | SEO |
|---|---|---|
| Alt text on content images | 1.1.1 Level A | Image search eligibility; context for the page |
| Correct heading hierarchy | Screen reader navigation | Document structure; passage extraction |
| Descriptive link text | 2.4.4 — "click here" fails | Anchor text is a relevance signal |
lang on the <html> element | Screen reader pronunciation | Language identification; hreflang consistency |
| Content in HTML, not JS-only | Assistive tech reads the DOM | Crawlers that parse rather than render see nothing |
The reason is structural rather than coincidental: a screen reader and a crawler are both consuming your page as a document rather than a picture. Both need the meaning to be in the markup. A page built so that meaning is conveyed only by colour, position or visual styling is illegible to both — and increasingly, that includes the answer engines, which parse rather than render.
The report finds three images with no alt attribute. Fixing that is the easy part. Two subtler mistakes follow immediately and no automated checker catches either:
An empty alt is correct — a missing one is not
alt="" is a deliberate, valid declaration that an image is decorative and should be skipped by assistive technology. Omitting the attribute entirely leaves a screen reader to read out the filename. So a decorative divider should have alt="" — adding "decorative divider" as its alt text is worse than an empty one, because it forces someone to listen to it on every page.
Describe what the image conveys, in context
Not what it depicts. The same photograph on a product page and in a blog post needs different alt text, because it is doing a different job. And alt text stuffed with keywords is both an accessibility failure — it is read aloud, to a person — and, at scale, a spam signal. Write it for the human who is listening.
Accessibility is not solely a quality question, and the obligations have tightened:
- UK — Equality Act 2010. Service providers must make reasonable adjustments. It applies to websites, and it applies to private businesses.
- UK public sector. Public bodies are required to meet WCAG 2.1 Level AA and to publish an accessibility statement.
- EU — the European Accessibility Act. Its requirements began applying in June 2025 and reach a broad range of consumer-facing digital products and services, including e-commerce, sold into the EU. UK businesses selling into Europe are not outside it.
- US — the ADA. A large and growing volume of litigation, in which WCAG 2.1 AA is the standard courts routinely reference.
General information, not legal advice. The obligations that apply to a given business depend on its sector, size and markets. The practical point stands regardless: the standard being referenced, in every one of these regimes, is the same one this report measures against.
Why does accessibility matter for SEO?
Accessibility and SEO overlap significantly. Many accessibility fixes — alt text, heading structure, descriptive links, landmark regions — are also SEO best practices. Google's crawlers behave similarly to screen readers. Improving accessibility often directly improves SEO scores. Additionally, inaccessible sites face legal risk under the Equality Act 2010 (UK) and ADA (US).
What is WCAG 2.1?
WCAG (Web Content Accessibility Guidelines) 2.1 is the international standard for web accessibility, published by the W3C. It defines requirements at three levels: A (minimum), AA (recommended for most sites) and AAA (enhanced). Most organisations target Level AA compliance. The aiwebpageseo Accessibility Checker tests against all Level A and AA criteria.
What is a skip link?
A skip link is a hidden link at the top of the page (visible on keyboard focus) that lets keyboard users jump directly to the main content, bypassing navigation. Without a skip link, keyboard users must tab through every navigation item on every page load. It is a WCAG 2.4.1 Level A requirement.
Does a perfect automated score mean my site is accessible?
No. Automated tools detect only a minority of WCAG failures — commonly estimated at around a third. Whether alt text is meaningful, whether the focus order makes sense, whether an error message actually explains the error: none of these can be determined by a machine. A clean automated report clears the machine-checkable failures, which is where the work begins rather than where it ends.
Why is using a placeholder instead of a label a critical failure?
Because the placeholder disappears the moment someone starts typing, so anyone interrupted mid-form no longer knows what they were entering — which affects every user, not only screen reader users. Screen readers announce the field type rather than its purpose, the label's click target is lost, and browser autofill degrades. A native label element is preferable to an aria-label wherever it is possible: it is visible, clickable, and cannot silently override the accessible name.
Which contrast ratio applies to my buttons and input borders?
3:1, under WCAG 1.4.11, which covers user interface components and graphical objects. This is separate from the 4.5:1 minimum for normal text and the 3:1 minimum for large text (24px, or 18.66px bold). A subtle 1px grey border on a white input field is very often a failure, and a contrast checker aimed only at text will not catch it.
Do accessibility overlay widgets make a site compliant?
No. Widgets promising WCAG compliance from a single line of JavaScript do not achieve conformance, and their claims have attracted significant legal action. They cannot repair a missing label or a broken focus order, because those defects live in the page's own markup. There is no plugin that makes an inaccessible site accessible.
Related Demo Reports
Run Accessibility Checker on Your Own Site
Get your real audit report with specific issues, fixes and actionable improvements — free to start.