← 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.
www.w3.org · WCAG 2.2 Level AA (automated scan, agent-reviewed) · EN 301 549 / European Accessibility Act mapping
The issues that most block people using screen readers, keyboards or low vision are:
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.
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.
| WCAG SC | Name | EN 301 549 | Issue types | Elements |
|---|---|---|---|---|
| 2.4.3 | Focus Order | 9.2.4.3 | extra.focus-order | 2 |
| 2.5.8 | Target Size (Minimum) | 9.2.5.8 | target-size | 57 |
| Best practice | Not a WCAG failure | label-title-only, region, landmark-one-main, empty-table-header | 375 |
An issue is the same issue when rule, page and element selector all match. Counts are elements.
| Severity | Issue | Elements | Pages | Example |
|---|---|---|---|---|
| serious | All touch targets must be 24px large, or leave sufficient spacetarget-size · WCAG 2.5.8 | 29 | 7 | li:nth-child(1) > a[href$="offsite.html"]https://www.w3.org/WAI/demos/bad/after/annotated/home.html |
| serious | Form elements should have a visible labellabel-title-only | 2 | 2 | #cchttps://www.w3.org/WAI/demos/bad/after/annotated/survey.html |
| moderate | All page content should be contained by landmarksregion | 185 | 15 | #meta-header > h1https://www.w3.org/WAI/demos/bad/after/annotated/home.html |
| moderate | Keyboard focus jumps against the visual reading orderextra.focus-order · WCAG 2.4.3 | 2 | 2 | div > div.annot_link_parent > span.annot_link.prev_sib > ahttps://www.w3.org/WAI/demos/bad/after/annotated/home.html |
| minor | Table header text should not be emptyempty-table-header | 2 | 2 | thead > tr > th:nth-child(1)https://www.w3.org/WAI/demos/bad/after/annotated/survey.html |
| Severity | Issue | Elements | Pages | Example |
|---|---|---|---|---|
| critical | Images must have alternative textimage-alt · WCAG 1.1.1 | 300 | 10 | img[src$="border_left_top.gif"]https://www.w3.org/WAI/demos/bad/after/annotated/home.html |
| critical | Form elements must have labelslabel · WCAG 4.1.2 | 22 | 2 | input[value="1"]https://www.w3.org/WAI/demos/bad/after/annotated/survey.html |
| critical | Select element must have an accessible nameselect-name · WCAG 4.1.2 | 12 | 10 | selecthttps://www.w3.org/WAI/demos/bad/after/annotated/home.html |
| serious | Links must have discernible textlink-name · WCAG 2.4.4, 4.1.2 | 48 | 10 | #home > a[onfocus="blur();"]https://www.w3.org/WAI/demos/bad/after/annotated/home.html |
| serious | Elements must meet minimum color contrast ratio thresholdscolor-contrast · WCAG 1.4.3 | 24 | 6 | tr[height="25px"]:nth-child(2) > td[bgcolor="#A9B8BF"][width="150px"] > font[color="#41545D"][size="2"] > bhttps://www.w3.org/WAI/demos/bad/after/annotated/home.html |
| serious | All touch targets must be 24px large, or leave sufficient spacetarget-size · WCAG 2.5.8 | 17 | 6 | a[href$="#annot_06"]https://www.w3.org/WAI/demos/bad/after/annotated/home.html |
| serious | <html> element must have a lang attributehtml-has-lang · WCAG 3.1.1 | 10 | 10 | htmlhttps://www.w3.org/WAI/demos/bad/after/annotated/home.html |
| moderate | All page content should be contained by landmarksregion | 138 | 15 | h1https://www.w3.org/WAI/demos/bad/after/annotated/home.html |
| moderate | Image alt text looks low quality (file name, placeholder or redundant word)extra.alt-quality · WCAG 1.1.1 | 12 | 10 | td > div.annot_link_parent > a > imghttps://www.w3.org/WAI/demos/bad/after/annotated/home.html |
| moderate | Link text is not descriptive out of contextextra.generic-link-text · WCAG 2.4.4 | 2 | 2 | div > p.annot_link_parent > span.annot_link_parent > ahttps://www.w3.org/WAI/demos/bad/after/annotated/home.html |
| moderate | Keyboard focus jumps against the visual reading orderextra.focus-order · WCAG 2.4.3 | 1 | 1 | td > div.annot_link_parent > span.annot_link.prev_sib > ahttps://www.w3.org/WAI/demos/bad/after/annotated/home.html |
| minor | Table header text should not be emptyempty-table-header | 2 | 2 | thhttps://www.w3.org/WAI/demos/bad/after/annotated/tickets.html |
| minor | Link opens a new window without warningextra.new-window | 2 | 2 | div > p.annot_link_parent > span.annot_link_parent > ahttps://www.w3.org/WAI/demos/bad/after/annotated/home.html |
| Severity | Issue | Elements | Pages | Example |
|---|---|---|---|---|
| serious | All touch targets must be 24px large, or leave sufficient spacetarget-size · WCAG 2.5.8 | 28 | 14 | .inaccessible > .report[href$="home.html"]https://www.w3.org/WAI/demos/bad/after/annotated/home.html |
| moderate | All page content should be contained by landmarksregion | 171 | 15 | #logoshttps://www.w3.org/WAI/demos/bad/after/annotated/home.html |
| moderate | Document should have one main landmarklandmark-one-main | 15 | 15 | htmlhttps://www.w3.org/WAI/demos/bad/after/annotated/home.html |
Fix a template once, fix every page that uses it.
| Template (path group) | Pages | Issue types | Elements |
|---|---|---|---|
/WAI/* | 15 | 6 | 434 |
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>
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">
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>
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">
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>
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>
| URL | Title | Issue types | Elements |
|---|---|---|---|
| https://www.w3.org/WAI/demos/bad/after/home.html | Welcome to CityLights! [Accessible Home Page] | 3 | 19 |
| https://www.w3.org/WAI/demos/bad/after/reports/home.html | Accessible Home Page Report | 3 | 40 |
| https://www.w3.org/WAI/demos/bad/after/annotated/home.html | Welcome to CityLights! [Annotated Accessible Home Page] | 4 | 27 |
| https://www.w3.org/WAI/demos/bad/after/news.html | Citylights News [Accessible News Page] | 3 | 17 |
| https://www.w3.org/WAI/demos/bad/after/tickets.html | Citylights Tickets [Accessible Tickets Page] | 3 | 17 |
| https://www.w3.org/WAI/demos/bad/after/survey.html | Citylights Survey [Accessible Survey Page] | 5 | 28 |
| https://www.w3.org/WAI/demos/bad/after/template.html | Citylights Template [Accessible Template Page] | 3 | 17 |
| https://www.w3.org/WAI/demos/bad/after/reports/news.html | Accessible News Page Report | 3 | 40 |
| https://www.w3.org/WAI/demos/bad/after/reports/tickets.html | Accessible Tickets Page Report | 3 | 40 |
| https://www.w3.org/WAI/demos/bad/after/reports/survey.html | Accessible Survey Page Report | 3 | 40 |
| https://www.w3.org/WAI/demos/bad/after/reports/template.html | Accessible Template Report | 3 | 40 |
| https://www.w3.org/WAI/demos/bad/after/annotated/news.html | Citylights News [Annotated Accessible News Page] | 4 | 20 |
| https://www.w3.org/WAI/demos/bad/after/annotated/tickets.html | Citylights Tickets [Annotated Accessible Tickets Page] | 3 | 25 |
| https://www.w3.org/WAI/demos/bad/after/annotated/survey.html | Citylights Survey [Annotated Accessible Survey Page] | 5 | 33 |
| https://www.w3.org/WAI/demos/bad/after/annotated/template.html | Citylights Template [Annotated Accessible Template Page] | 3 | 31 |
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.