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 2567 0 64 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 6785 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 1466 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 2234 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 2043 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 2000 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 3030 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 ▼ worsening -4 25 8 89 Median axe violations per page over 16 weeks: 3, 3, 3, 2, 7, 8, 8, 8, 8, 10, 8, 8, 8, 8, 8, 9.

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—33327888810888889

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.medicare.gov All page content should be contained by landmarks (WCAG criterion undetermined) Serious 1722
www.cdc.gov All page content should be contained by landmarks (WCAG criterion undetermined) Serious 1692
www.healthcare.gov ARIA attributes must conform to valid values (WCAG 4.1.2) Critical 1102
www.medicaid.gov Text has enhanced contrast (WCAG 1.4.6) Moderate 1273
www.medicaid.gov Target size is at least 44×44 CSS pixels (Enhanced) (WCAG 2.5.5) Moderate 1273
www.medicaid.gov Scrolling content can be accessed by keyboard (WCAG criterion undetermined) Moderate 1273
data.cms.gov Banner landmark should not be contained in another landmark (WCAG criterion undetermined) Moderate 1093
www.medicaid.gov Text has minimum contrast ratio of 4.5:1 (WCAG 1.4.8) Moderate 1049
data.medicaid.gov Text has minimum contrast ratio of 4.5:1 (WCAG 1.4.8) Moderate 1029
data.medicaid.gov Target size is at least 44×44 CSS pixels (Enhanced) (WCAG 2.5.5) Moderate 1029
data.medicaid.gov aria-hidden element does not contain focusable elements (WCAG 4.1.2) Moderate 863
data.cms.gov Scrollable region must have keyboard access (WCAG 2.1.1) Serious 558
data.cms.gov Text has minimum contrast ratio of 4.5:1 (WCAG 1.4.8) Moderate 884
data.cms.gov Target size is at least 44×44 CSS pixels (Enhanced) (WCAG 2.5.5) Moderate 884
data.healthcare.gov Text has minimum contrast ratio of 4.5:1 (WCAG 1.4.8) Moderate 725
data.healthcare.gov Target size is at least 44×44 CSS pixels (Enhanced) (WCAG 2.5.5) Moderate 725
www.cdc.gov Images must have alternative text (WCAG 1.1.1) Critical 339
data.healthcare.gov aria-hidden element does not contain focusable elements (WCAG 4.1.2) Moderate 623
www.cdc.gov Landmarks should have a unique role or role/label/title (i.e. accessible name) c (WCAG criterion undetermined) Moderate 584
www.healthcare.gov Text has minimum contrast ratio of 4.5:1 (WCAG 1.4.8) Moderate 555

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
DataTables Presentational children of an element are not focusable (alfa) 8.64× 2 6
Bootstrap Accessible name of link or button matches visible label (alfa) 2.77× 4 17
YouTube Give every <iframe> a descriptive title attribute. (axe) 5.24× 2 6
Tealium Text has minimum contrast ratio of 4.5:1 (alfa) 1.23× 8 510
HSTS Target size is at least 44×44 CSS pixels (Enhanced) (alfa) 1.01× 9 572
HSTS Text has minimum contrast ratio of 4.5:1 (alfa) 1.00× 9 516
Google Analytics Text has minimum contrast ratio of 4.5:1 (alfa) 1.00× 9 521
Google Analytics Target size is at least 44×44 CSS pixels (Enhanced) (alfa) 1.00× 9 577
Tealium Target size is at least 44×44 CSS pixels (Enhanced) (alfa) 1.11× 8 510
Bootstrap Wrap all page content in landmarks (header, nav, main, footer) so users can navigate by region. (axe) 2.82× 3 366
Drupal Text has minimum contrast ratio of 4.5:1 (alfa) 1.21× 7 403
Acquia Cloud Platform Text has minimum contrast ratio of 4.5:1 (alfa) 1.21× 7 403
Amazon Web Services Text has minimum contrast ratio of 4.5:1 (alfa) 1.21× 7 403
PHP Text has minimum contrast ratio of 4.5:1 (alfa) 1.21× 7 403
Bootstrap Table header has scope (alfa) 2.70× 3 19
jQuery Target size is at least 44×44 CSS pixels (Enhanced) (alfa) 1.00× 8 465
Drupal aria-hidden element does not contain focusable elements (alfa) 1.56× 5 234
Acquia Cloud Platform aria-hidden element does not contain focusable elements (alfa) 1.56× 5 234
Amazon Web Services aria-hidden element does not contain focusable elements (alfa) 1.56× 5 234
PHP aria-hidden element does not contain focusable elements (alfa) 1.56× 5 234
jQuery Text has minimum contrast ratio of 4.5:1 (alfa) 0.97× 8 409
Drupal Target size is at least 44×44 CSS pixels (Enhanced) (alfa) 1.09× 7 403
Acquia Cloud Platform Target size is at least 44×44 CSS pixels (Enhanced) (alfa) 1.09× 7 403
Amazon Web Services Target size is at least 44×44 CSS pixels (Enhanced) (alfa) 1.09× 7 403
PHP Target size is at least 44×44 CSS pixels (Enhanced) (alfa) 1.09× 7 403

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 1359 —
WebMCP form coverage Agentic (AI-readiness) 9 1359 —
WebMCP schemas are valid Agentic (AI-readiness) 9 1359 —
llms.txt follows recommendations Agentic (AI-readiness) 9 1359 —
Network dependency tree Performance 9 1349 —
Reduce unused JavaScript Performance 9 1337 691.6 MB · 2744.9s
Minimize main-thread work Performance 9 1320 998.3s
Reduce JavaScript execution time Performance 9 1320 998.8s
Time to Interactive Performance 9 1316 —
Reduce unused CSS Performance 9 1301 105.3 MB · 576.7s
Render-blocking requests Performance 9 1300 2325.2s
Largest Contentful Paint Performance 9 1253 —
Use efficient cache lifetimes Performance 9 1229 3016.3s
First Contentful Paint Performance 9 1204 —
Max Potential First Input Delay Performance 9 1128 —
Speed Index Performance 9 1098 —
Total Blocking Time Performance 9 1078 —
Font display Performance 9 949 64.0s
Cumulative Layout Shift Agentic (AI-readiness) 9 440 —
Layout shift culprits Performance 9 438 —
Legacy JavaScript Performance 9 422 73.0s
Forced reflow Performance 9 386 —
Browser errors were logged to the console Best Practices 9 262 —
Initial server response time was short Performance 9 209 53.3s
Missing source maps for large first-party JavaScript Best Practices 8 806 —

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 5680
Text has minimum contrast ratio of 4.5:1 Moderate template 10 5166
All page content should be contained by landmarks Moderate template 6 3984
Text has enhanced contrast Moderate template 9 2627
Scrolling content can be accessed by keyboard Moderate template 7 2133
aria-hidden element does not contain focusable elements Moderate template 6 2281
Form field label is visible Moderate template 10 1096
Heading levels should only increase by one Moderate template 8 986
aria attribute is permitted for element role Moderate content 7 955
Landmarks should have a unique role or role/label/title (i.e. accessible name) c Moderate content 9 650
Text has sufficient color contrast (Enhanced) Moderate template 5 839
Document should have one main landmark Moderate template 4 990
First focusable element is link to main content Moderate template 4 784
Elements must meet minimum color contrast ratio thresholds Serious template 6 343
Page should contain a level-one heading Moderate template 5 615
Headings are structured hierarchically Moderate template 8 351
Images must have alternative text Critical template 3 446
Scrollable region must have keyboard access Serious content 3 578
Accessible name of link or button matches visible label Moderate template 8 260
Target size is at least 24×24 CSS pixels or has spacing (Minimum) Moderate template 6 322
<ul> and <ol> must only directly contain <li>, <script> or <template> elements Serious template 7 153
<html> element must have a lang attribute Serious template 2 446
Table header has scope Moderate template 6 222
Links must be distinguishable without relying on color Serious template 4 206
Presentational children of an element are not focusable Moderate template 6 185
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.