← Keencrest accessibility audits · PDF version

Sample report. Monitoring report: the same W3C demo scanned again after its fixes (the demo's "after" version compared with its "before" version). Shows the New issues, Fixed since last scan and Still open sections that come with the monthly plan. Because the demo's markup was rebuilt, some unchanged problems appear as both fixed and new; on a site edited in place the match is tighter.

Web accessibility audit

www.w3.org · WCAG 2.2 Level AA (automated scan, agent-reviewed) · EN 301 549 / European Accessibility Act mapping

Prepared by Your Agency · Scan date 2026-11-01 · 15 pages scanned

Monitoring demo: W3C BAD demo (before) vs the fixed version (after)

1. Executive summary

15pages scanned
6distinct issue types
434affected elements
0critical
2serious
3moderate
1minor

The issues that most block people using screen readers, keyboards or low vision are:

  1. All touch targets must be 24px large, or leave sufficient space — 15 of 15 pages, 57 elements (WCAG 2.5.8).
  2. Form elements should have a visible label — 2 of 15 pages, 2 elements.
Change since the previous scan (BAD demo 'before'): 220 new issues, 590 fixed, 214 still open, compared across 15 pages present in both scans. Details in section 3a.

Fixing the shared templates (header, navigation, footer, cards, forms) clears most instances at once, because the same rule fails on many pages. Section 5 gives the fix per issue with code.

2. Scope and limits (read this)

What was checked: axe-core 4.10 rules for WCAG 2.0/2.1/2.2 A and AA plus best practice; and Keencrest extra checks: alt-text quality heuristics, positive tabindex, visible focus change on up to 40 controls per page, focus moving against reading order, hover-state text contrast on up to 14 links and buttons per page, non-descriptive link text and unannounced new-window links. Items without a WCAG number are best practice, not WCAG failures. Heuristic findings need a human look before a fix.

3. Issues by WCAG success criterion

WCAG SCNameEN 301 549Issue typesElements
2.4.3Focus Order9.2.4.3extra.focus-order2
2.5.8Target Size (Minimum)9.2.5.8target-size57
Best practiceNot a WCAG failurelabel-title-only, region, landmark-one-main, empty-table-header375

3a. Changes since the previous scan

An issue is the same issue when rule, page and element selector all match. Counts are elements.

New issues (220)

SeverityIssueElementsPagesExample
seriousAll touch targets must be 24px large, or leave sufficient space
target-size · WCAG 2.5.8
297li:nth-child(1) > a[href$="offsite.html"]
https://www.w3.org/WAI/demos/bad/after/annotated/home.html
seriousForm elements should have a visible label
label-title-only
22#cc
https://www.w3.org/WAI/demos/bad/after/annotated/survey.html
moderateAll page content should be contained by landmarks
region
18515#meta-header > h1
https://www.w3.org/WAI/demos/bad/after/annotated/home.html
moderateKeyboard focus jumps against the visual reading order
extra.focus-order · WCAG 2.4.3
22div > div.annot_link_parent > span.annot_link.prev_sib > a
https://www.w3.org/WAI/demos/bad/after/annotated/home.html
minorTable header text should not be empty
empty-table-header
22thead > tr > th:nth-child(1)
https://www.w3.org/WAI/demos/bad/after/annotated/survey.html

Fixed since last scan (590)

SeverityIssueElementsPagesExample
criticalImages must have alternative text
image-alt · WCAG 1.1.1
30010img[src$="border_left_top.gif"]
https://www.w3.org/WAI/demos/bad/after/annotated/home.html
criticalForm elements must have labels
label · WCAG 4.1.2
222input[value="1"]
https://www.w3.org/WAI/demos/bad/after/annotated/survey.html
criticalSelect element must have an accessible name
select-name · WCAG 4.1.2
1210select
https://www.w3.org/WAI/demos/bad/after/annotated/home.html
seriousLinks must have discernible text
link-name · WCAG 2.4.4, 4.1.2
4810#home > a[onfocus="blur();"]
https://www.w3.org/WAI/demos/bad/after/annotated/home.html
seriousElements must meet minimum color contrast ratio thresholds
color-contrast · WCAG 1.4.3
246tr[height="25px"]:nth-child(2) > td[bgcolor="#A9B8BF"][width="150px"] > font[color="#41545D"][size="2"] > b
https://www.w3.org/WAI/demos/bad/after/annotated/home.html
seriousAll touch targets must be 24px large, or leave sufficient space
target-size · WCAG 2.5.8
176a[href$="#annot_06"]
https://www.w3.org/WAI/demos/bad/after/annotated/home.html
serious<html> element must have a lang attribute
html-has-lang · WCAG 3.1.1
1010html
https://www.w3.org/WAI/demos/bad/after/annotated/home.html
moderateAll page content should be contained by landmarks
region
13815h1
https://www.w3.org/WAI/demos/bad/after/annotated/home.html
moderateImage alt text looks low quality (file name, placeholder or redundant word)
extra.alt-quality · WCAG 1.1.1
1210td > div.annot_link_parent > a > img
https://www.w3.org/WAI/demos/bad/after/annotated/home.html
moderateLink text is not descriptive out of context
extra.generic-link-text · WCAG 2.4.4
22div > p.annot_link_parent > span.annot_link_parent > a
https://www.w3.org/WAI/demos/bad/after/annotated/home.html
moderateKeyboard focus jumps against the visual reading order
extra.focus-order · WCAG 2.4.3
11td > div.annot_link_parent > span.annot_link.prev_sib > a
https://www.w3.org/WAI/demos/bad/after/annotated/home.html
minorTable header text should not be empty
empty-table-header
22th
https://www.w3.org/WAI/demos/bad/after/annotated/tickets.html
minorLink opens a new window without warning
extra.new-window
22div > p.annot_link_parent > span.annot_link_parent > a
https://www.w3.org/WAI/demos/bad/after/annotated/home.html

Still open (214)

SeverityIssueElementsPagesExample
seriousAll touch targets must be 24px large, or leave sufficient space
target-size · WCAG 2.5.8
2814.inaccessible > .report[href$="home.html"]
https://www.w3.org/WAI/demos/bad/after/annotated/home.html
moderateAll page content should be contained by landmarks
region
17115#logos
https://www.w3.org/WAI/demos/bad/after/annotated/home.html
moderateDocument should have one main landmark
landmark-one-main
1515html
https://www.w3.org/WAI/demos/bad/after/annotated/home.html

4. Issues by template

Fix a template once, fix every page that uses it.

Template (path group)PagesIssue typesElements
/WAI/*156434

5. Findings and fixes, by severity

seriousAll touch targets must be 24px large, or leave sufficient space

Rule target-size · WCAG 2.5.8 (EN 301 549 9.2.5.8) · 15 pages · 57 elements · rule reference

Fix: Interactive targets should be at least 24x24 CSS px or have enough spacing (WCAG 2.2).

.icon-btn { min-width: 24px; min-height: 24px; padding: 6px; }

Example on https://www.w3.org/WAI/demos/bad/after/home.html
Selector: .inaccessible > .report[href$="home.html"] · Target has insufficient size (94px by 20px, should be at least 24px by 24px)

<a href="../before/reports/home.html" class="report"><span class="hidden">Inaccessible Home Page </span> Report</a>

Example on https://www.w3.org/WAI/demos/bad/after/home.html
Selector: .accessible > .report[href$="home.html"] · Target has insufficient size (94px by 20px, should be at least 24px by 24px)

<a href="./reports/home.html" class="report"><span class="hidden">Accessible Home Page </span> Report</a>

seriousForm elements should have a visible label

Rule label-title-only · Best practice · 2 pages · 2 elements · rule reference

Fix: See the rule reference for the fix pattern.

Example on https://www.w3.org/WAI/demos/bad/after/survey.html
Selector: #cc · Only title used to generate label for form element

<select name="cc" id="cc" title="cities of the world">

Example on https://www.w3.org/WAI/demos/bad/after/annotated/survey.html
Selector: #cc · Only title used to generate label for form element

<select name="cc" id="cc" title="cities of the world">

moderateAll page content should be contained by landmarks

Rule region · Best practice · 15 pages · 356 elements · rule reference

Fix: Put all page content inside landmarks (header, nav, main, footer).

<header>...</header><nav>...</nav><main>...</main><footer>...</footer>

Example on https://www.w3.org/WAI/demos/bad/after/home.html
Selector: #logos · Some page content is not contained by landmarks

<p id="logos"><a href="https://www.w3.org/" title="W3C Home"><img alt="W3C logo" src="../img/w3c.png" height="48" width="72"></a><a href="https://www.w3.org/WAI/" title="WAI Home"><img alt="Web Accessibility Initiative (

Example on https://www.w3.org/WAI/demos/bad/after/home.html
Selector: #meta-header > h1 · Some page content is not contained by landmarks

<h1><span class="subhead">Accessible Home Page</span><span class="hidden"> -</span> Before and After Demonstration</h1>

moderateDocument should have one main landmark

Rule landmark-one-main · Best practice · 15 pages · 15 elements · rule reference

Fix: Wrap the primary content in a single main landmark.

<main id="content">...</main>

Example on https://www.w3.org/WAI/demos/bad/after/home.html
Selector: html · Document does not have a main landmark

<html lang="en">

Example on https://www.w3.org/WAI/demos/bad/after/reports/home.html
Selector: html · Document does not have a main landmark

<html lang="en">

moderateKeyboard focus jumps against the visual reading order

Rule extra.focus-order · WCAG 2.4.3 (EN 301 549 9.2.4.3) · 2 pages · 2 elements · Keencrest extra check

Fix: Focus moved in a way that does not follow the visual reading order. Reorder the DOM instead of repositioning with CSS.

<!-- put the DOM in the same order users see it -->

Example on https://www.w3.org/WAI/demos/bad/after/annotated/home.html
Selector: div > div.annot_link_parent > span.annot_link.prev_sib > a · focus moves up the page by 562px

<a href="#annot_02" title="02: Picture with text alternative">02</a>

Example on https://www.w3.org/WAI/demos/bad/after/annotated/news.html
Selector: div.wide > div.col-right.annot_link_parent > span.annot_link.parent_node > a · focus moves up the page by 827px

<a href="#annot_01" title="01: Increased spacing">01</a>

minorTable header text should not be empty

Rule empty-table-header · Best practice · 2 pages · 2 elements · rule reference

Fix: See the rule reference for the fix pattern.

Example on https://www.w3.org/WAI/demos/bad/after/survey.html
Selector: thead > tr > th:nth-child(1) · Element does not have text that is visible to screen readers

<th></th>

Example on https://www.w3.org/WAI/demos/bad/after/annotated/survey.html
Selector: thead > tr > th:nth-child(1) · Element does not have text that is visible to screen readers

<th></th>

6. Pages scanned

URLTitleIssue typesElements
https://www.w3.org/WAI/demos/bad/after/home.htmlWelcome to CityLights! [Accessible Home Page]319
https://www.w3.org/WAI/demos/bad/after/reports/home.htmlAccessible Home Page Report340
https://www.w3.org/WAI/demos/bad/after/annotated/home.htmlWelcome to CityLights! [Annotated Accessible Home Page]427
https://www.w3.org/WAI/demos/bad/after/news.htmlCitylights News [Accessible News Page]317
https://www.w3.org/WAI/demos/bad/after/tickets.htmlCitylights Tickets [Accessible Tickets Page]317
https://www.w3.org/WAI/demos/bad/after/survey.htmlCitylights Survey [Accessible Survey Page]528
https://www.w3.org/WAI/demos/bad/after/template.htmlCitylights Template [Accessible Template Page]317
https://www.w3.org/WAI/demos/bad/after/reports/news.htmlAccessible News Page Report340
https://www.w3.org/WAI/demos/bad/after/reports/tickets.htmlAccessible Tickets Page Report340
https://www.w3.org/WAI/demos/bad/after/reports/survey.htmlAccessible Survey Page Report340
https://www.w3.org/WAI/demos/bad/after/reports/template.htmlAccessible Template Report340
https://www.w3.org/WAI/demos/bad/after/annotated/news.htmlCitylights News [Annotated Accessible News Page]420
https://www.w3.org/WAI/demos/bad/after/annotated/tickets.htmlCitylights Tickets [Annotated Accessible Tickets Page]325
https://www.w3.org/WAI/demos/bad/after/annotated/survey.htmlCitylights Survey [Annotated Accessible Survey Page]533
https://www.w3.org/WAI/demos/bad/after/annotated/template.htmlCitylights Template [Annotated Accessible Template Page]331

robots.txt was respected (0 URLs skipped). axe-core also reported 20 'needs review' items across these pages that cannot be decided automatically; they belong in the manual review.

Generated by Keencrest's audit tool for Your Agency. Keencrest is an AI-run business owned by Alex Lin; the scan is automated and reviewed by AI agents. Not legal advice.