vital-scans open quality ledger

Weekly quality ledger

Accessibility and sustainability, measured continuously with open source engines. Thousands of pages per domain, scanned slowly and politely across each week.

Domains ranked by accessibility score (best first). Trajectory compares the score against ~4 weeks ago. Counts are medians per page over the last 7 days, comparable across sites of any size.
DomainScoreTrajectoryPages audited (7d)Median axe / pageMedian Alfa / pageTrend
www.cms.gov A 100 ▬ stable +0 2550 0 65 Median axe violations per page over 17 weeks: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.
www.medicaid.gov A 100 ▲ improving +30 6805 0 83 Median axe violations per page over 17 weeks: 6, 6, 6, 6, 6, 4, 0, 0, 0, 0, 0, 6, 6, 0, 0, 0, 0.
data.healthcare.gov A 100 ▬ stable +0 1256 0 37 Median axe violations per page over 17 weeks: 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.
openpaymentsdata.cms.gov A 100 ▬ stable +0 225 0 73 Median axe violations per page over 17 weeks: 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0.
data.medicaid.gov A 100 ▬ stable +0 2163 0 37 Median axe violations per page over 17 weeks: 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.
data.cms.gov A 95 ▬ stable +0 2021 1 59 Median axe violations per page over 17 weeks: 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.
www.healthcare.gov A 95 ▬ stable +0 1138 1 50 Median axe violations per page over 17 weeks: 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1.
www.medicare.gov A 90 ▬ stable +0 1563 2 53 Median axe violations per page over 17 weeks: 0, 0, 0, 0, 0, 0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2.
www.cdc.gov B 75 ▬ stable +0 2908 5 79 Median axe violations per page over 17 weeks: 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5.
nih.gov D 63 ▬ stable +0 26 8 90 Median axe violations per page over 16 weeks: 3, 3, 3, 2, 7, 8, 8, 8, 8, 10, 8, 8, 8, 8, 8, 8.

Scores are a relative, automated signal based on axe violations per page (axe runs on every page; Alfa is sampled and reported separately). Automated testing finds only ~⅓ of barriers — use scores to compare and track direction, not as a pass/fail.

Median axe violations per page, all domains — lower is better
www.cms.govwww.medicaid.govdata.healthcare.govopenpaymentsdata.cms.govdata.medicaid.govdata.cms.govwww.healthcare.govwww.medicare.govwww.cdc.govnih.govW24W32W40 100
Median axe violations per page by domain and week
Domain2026-W242026-W252026-W262026-W272026-W282026-W292026-W302026-W312026-W322026-W332026-W342026-W352026-W362026-W372026-W382026-W392026-W40
www.cms.gov00000000000000000
www.medicaid.gov66666400000660000
data.healthcare.gov00000000000000000
openpaymentsdata.cms.gov33333333000000000
data.medicaid.gov11110000000000000
data.cms.gov11111111111111111
www.healthcare.gov11111111111111111
www.medicare.gov00000000222222222
www.cdc.gov55555555555555555
nih.gov—33327888810888888

Worst offenders across all domains

Highest-impact issues fleet-wide, ranked by pages affected × severity × people reached — where to focus effort first.

Top 20 issues across all active domains.
DomainIssueSeverityPages
www.healthcare.gov ARIA attributes must conform to valid values (WCAG 4.1.2) Critical 1102
www.medicare.gov All page content should be contained by landmarks (WCAG criterion undetermined) Serious 1185
www.cdc.gov All page content should be contained by landmarks (WCAG criterion undetermined) Serious 1038
www.medicaid.gov Text has enhanced contrast (WCAG 1.4.6) Moderate 811
www.medicaid.gov Target size is at least 44×44 CSS pixels (Enhanced) (WCAG 2.5.5) Moderate 811
www.medicaid.gov Scrolling content can be accessed by keyboard (WCAG criterion undetermined) Moderate 811
data.cms.gov Banner landmark should not be contained in another landmark (WCAG criterion undetermined) Moderate 805
data.medicaid.gov Text has minimum contrast ratio of 4.5:1 (WCAG 1.4.8) Moderate 688
data.medicaid.gov Target size is at least 44×44 CSS pixels (Enhanced) (WCAG 2.5.5) Moderate 688
www.medicaid.gov Text has minimum contrast ratio of 4.5:1 (WCAG 1.4.8) Moderate 681
data.cms.gov Scrollable region must have keyboard access (WCAG 2.1.1) Serious 419
data.cms.gov Text has minimum contrast ratio of 4.5:1 (WCAG 1.4.8) Moderate 649
data.cms.gov Target size is at least 44×44 CSS pixels (Enhanced) (WCAG 2.5.5) Moderate 649
data.medicaid.gov aria-hidden element does not contain focusable elements (WCAG 4.1.2) Moderate 574
data.healthcare.gov Text has minimum contrast ratio of 4.5:1 (WCAG 1.4.8) Moderate 596
data.healthcare.gov Target size is at least 44×44 CSS pixels (Enhanced) (WCAG 2.5.5) Moderate 596
www.healthcare.gov Text has minimum contrast ratio of 4.5:1 (WCAG 1.4.8) Moderate 555
www.healthcare.gov Target size is at least 44×44 CSS pixels (Enhanced) (WCAG 2.5.5) Moderate 555
data.healthcare.gov aria-hidden element does not contain focusable elements (WCAG 4.1.2) Moderate 507
www.healthcare.gov aria attribute is permitted for element role (WCAG criterion undetermined) Moderate 532

Cross-technology issues

Accessibility findings that recur with the same technology across multiple sites — the strongest signal that a barrier lives in a shared CMS, theme, or widget rather than in one site's content. Ranked by lift × number of sites affected. Association, not proof of cause: confirm before attributing.

Top 25 technology ↔ finding associations spanning ≥2 sites.
Technology Finding Lift Sites Pages
Bootstrap Accessible name of link or button matches visible label (alfa) 2.96× 4 12
Bootstrap Wrap all page content in landmarks (header, nav, main, footer) so users can navigate by region. (axe) 3.24× 3 225
Tealium Text has minimum contrast ratio of 4.5:1 (alfa) 1.19× 8 374
HSTS Text has minimum contrast ratio of 4.5:1 (alfa) 1.00× 9 377
HSTS Target size is at least 44×44 CSS pixels (Enhanced) (alfa) 1.00× 9 413
Google Analytics Text has minimum contrast ratio of 4.5:1 (alfa) 1.00× 9 381
Google Analytics Target size is at least 44×44 CSS pixels (Enhanced) (alfa) 1.00× 9 417
Tealium Target size is at least 44×44 CSS pixels (Enhanced) (alfa) 1.09× 8 374
Drupal Text has minimum contrast ratio of 4.5:1 (alfa) 1.17× 7 283
Acquia Cloud Platform Text has minimum contrast ratio of 4.5:1 (alfa) 1.17× 7 283
Amazon Web Services Text has minimum contrast ratio of 4.5:1 (alfa) 1.17× 7 283
PHP Text has minimum contrast ratio of 4.5:1 (alfa) 1.17× 7 283
jQuery Target size is at least 44×44 CSS pixels (Enhanced) (alfa) 0.99× 8 324
Drupal aria-hidden element does not contain focusable elements (alfa) 1.58× 5 159
Acquia Cloud Platform aria-hidden element does not contain focusable elements (alfa) 1.58× 5 159
Amazon Web Services aria-hidden element does not contain focusable elements (alfa) 1.58× 5 159
PHP aria-hidden element does not contain focusable elements (alfa) 1.58× 5 159
jQuery Text has minimum contrast ratio of 4.5:1 (alfa) 0.96× 8 288
DataTables Wrap all page content in landmarks (header, nav, main, footer) so users can navigate by region. (axe) 3.80× 2 36
Drupal Target size is at least 44×44 CSS pixels (Enhanced) (alfa) 1.07× 7 283
Acquia Cloud Platform Target size is at least 44×44 CSS pixels (Enhanced) (alfa) 1.07× 7 283
Amazon Web Services Target size is at least 44×44 CSS pixels (Enhanced) (alfa) 1.07× 7 283
PHP Target size is at least 44×44 CSS pixels (Enhanced) (alfa) 1.07× 7 283
YouTube Table header has scope (alfa) 3.69× 2 12
Bootstrap page-has-heading-one (axe) 3.61× 2 40

Common Lighthouse recommendations

Non-accessibility issues Google Lighthouse flagged on multiple sites' sampled pages — performance, best-practices, SEO, and AI-readiness. Recurring across independent government sites usually points at a shared platform, theme, or CDN, where one coordinated fix helps everyone. Ranked by number of sites affected. Accessibility audits are omitted (they overlap with axe-core).

Top 25 Lighthouse recommendations spanning ≥2 sites.
Recommendation Category Sites Pages Est. saving
WebMCP tools registered Agentic (AI-readiness) 9 983 —
WebMCP form coverage Agentic (AI-readiness) 9 983 —
WebMCP schemas are valid Agentic (AI-readiness) 9 983 —
llms.txt follows recommendations Agentic (AI-readiness) 9 983 —
Network dependency tree Performance 9 976 —
Reduce unused JavaScript Performance 9 970 515.3 MB · 2079.8s
Time to Interactive Performance 9 957 —
Minimize main-thread work Performance 9 954 736.9s
Reduce JavaScript execution time Performance 9 954 734.8s
Reduce unused CSS Performance 9 946 75.8 MB · 407.3s
Largest Contentful Paint Performance 9 916 —
Use efficient cache lifetimes Performance 9 886 2137.9s
First Contentful Paint Performance 9 882 —
Max Potential First Input Delay Performance 9 819 —
Speed Index Performance 9 817 —
Total Blocking Time Performance 9 777 —
Legacy JavaScript Performance 9 318 56.0s
Cumulative Layout Shift Agentic (AI-readiness) 9 317 —
Layout shift culprits Performance 9 317 —
Forced reflow Performance 9 307 —
Initial server response time was short Performance 9 163 45.5s
Render-blocking requests Performance 8 945 1767.3s
Font display Performance 8 666 46.0s
Missing source maps for large first-party JavaScript Best Practices 8 618 —
Issues were logged in the `Issues` panel in Chrome Devtools Best Practices 8 354 —

Recurring patterns across domains

The same underlying rule failing on multiple independent sites — the strongest signal of a shared CMS template, design-system component, or widget bug rather than a one-off content issue. Ranked by fix leverage: sites affected × severity × pages, not raw count.

Top 25 patterns spanning ≥2 sites.
Pattern Severity Likely source Sites Pages
Target size is at least 44×44 CSS pixels (Enhanced) Moderate template 10 4126
Text has minimum contrast ratio of 4.5:1 Moderate template 10 3811
Text has enhanced contrast Moderate template 9 1758
All page content should be contained by landmarks Moderate template 6 2575
aria-hidden element does not contain focusable elements Moderate template 6 1659
Scrolling content can be accessed by keyboard Moderate template 7 1380
Form field label is visible Moderate template 10 923
aria attribute is permitted for element role Moderate content 7 806
Heading levels should only increase by one Moderate template 8 649
Landmarks should have a unique role or role/label/title (i.e. accessible name) c Moderate unknown 8 411
Text has sufficient color contrast (Enhanced) Moderate template 5 624
Document should have one main landmark Moderate template 4 611
Scrollable region must have keyboard access Serious content 3 436
Page should contain a level-one heading Moderate template 5 376
Headings are structured hierarchically Moderate template 8 229
Elements must meet minimum color contrast ratio thresholds Serious unknown 5 226
Images must have alternative text Critical template 3 276
First focusable element is link to main content Moderate template 3 534
Target size is at least 24×24 CSS pixels or has spacing (Minimum) Moderate template 6 232
Accessible name of link or button matches visible label Moderate template 8 163
<ul> and <ol> must only directly contain <li>, <script> or <template> elements Serious template 7 105
Table header has scope Moderate template 6 146
<html> element must have a lang attribute Serious template 2 273
Links must be distinguishable without relying on color Serious template 4 124
Presentational children of an element are not focusable Moderate unknown 6 112
Blocked targets (1)

These sites returned only access-denied responses to the scanner, so no accessibility or sustainability data could be collected. This is typically a WAF or bot manager blocking automated traffic, not a scan failure. See WAF-ALLOWLIST.md for how the scanner can be allowlisted.

  • hhs.gov — HTTP 403 (2026-W40)

Tools

Why this exists

Continuous measurement beats one-off audits. This ledger tracks whether each site is getting more accessible and lighter over time, using axe-core and Alfa (the open source engine behind Siteimprove) for accessibility, and page weight with Sustainable Web Design CO₂ estimates for sustainability. Everything here is open: the scanner, the data, and the reports.

This data is also available beyond the web page: a read-only JSON API (no auth, no server), a machine-discovery API catalog, and for coding agents an llms.txt guide plus a local MCP server.