vital-scans open quality ledger

LocalGov Drupal Accessibility & Sustainability

Automated weekly accessibility and sustainability monitoring of UK council websites built on LocalGov Drupal.

Sites blocking the scanner (3): www.lbhf.gov.uk, www.hackney.gov.uk, blackburn.gov.uk

A firewall rule, a robots.txt rule or a network block stopped the scanner on these sites, so their results are missing or partial. The fix is on the site’s side.

  • www.lbhf.gov.uk: Blocked.
    • Blocked by a firewall: 1 page(s) got a challenge or refusal instead of the page (HTTP 202 × 1). Identified as AWS WAF challenge (x-amzn-waf-action), Amazon CloudFront.
    • Other pages answered with an error: HTTP 404 × 40.

    Ask the site’s web team to let the user agent vital-scans through its firewall (what to send them).

  • www.hackney.gov.uk: Partly blocked.
    • Blocked by a firewall: 105 page(s) got a challenge or refusal instead of the page (HTTP 403 × 104, HTTP 202 × 1). Identified as Amazon CloudFront, AWS WAF challenge (x-amzn-waf-action).

    Ask the site’s web team to let the user agent vital-scans through its firewall (what to send them).

  • blackburn.gov.uk: Blocked.
    • Unreachable: no page loaded in 1 run(s) (no connection within 10 s (often a firewall dropping traffic from this network)).

    Run Actions → diagnose for this domain to see what the scanner’s network gets. A network block has to be lifted by the site’s team.

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.hackney.gov.uk Partly blocked A 95 ▬ stable +0 1104 1 37 Median axe violations per page over 2 weeks: 1, 1.
www.luton.gov.uk A 95 ▬ stable +0 2946 1 40 Median axe violations per page over 2 weeks: 1, 1.
go.walsall.gov.uk F 36 ▬ stable -2 2534 19 78 Median axe violations per page over 2 weeks: 19, 20.

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.hackney.gov.ukwww.luton.gov.ukgo.walsall.gov.ukW44W45 200
Median axe violations per page by domain and week
Domain2026-W442026-W45
www.hackney.gov.uk11
www.luton.gov.uk11
go.walsall.gov.uk1920

Worst offenders across all domains

Highest-impact issues fleet-wide: legally required findings first, then the rest of each site's conformance target, then AAA and best-practice findings. Within each, ranked by pages affected × severity × people reached.

Top 20 issues across all active domains.
DomainIssueRequirementSeverityPages
go.walsall.gov.uk Buttons must have discernible text (WCAG 4.1.2) Legally required WCAG 4.1.2 (2.0, Level A) Critical 968
go.walsall.gov.uk Certain ARIA roles must contain particular children (WCAG 1.3.1) Legally required WCAG 1.3.1 (2.0, Level A) Critical 968
go.walsall.gov.uk Certain ARIA roles must be contained by particular parents (WCAG 1.3.1) Legally required WCAG 1.3.1 (2.0, Level A) Critical 968
go.walsall.gov.uk <ul> and <ol> must only directly contain <li>, <script> or <template> elements (WCAG 1.3.1) Legally required WCAG 1.3.1 (2.0, Level A) Critical 968
go.walsall.gov.uk Elements must meet minimum color contrast ratio thresholds (WCAG 1.4.3) Legally required WCAG 1.4.3 (2.0, Level AA) Critical 968
www.hackney.gov.uk ARIA input fields must have an accessible name (WCAG 4.1.2) Legally required WCAG 4.1.2 (2.0, Level A) Critical 856
go.walsall.gov.uk Form field has accessible name (WCAG 4.1.2) Legally required WCAG 4.1.2 (2.0, Level A) Moderate 490
www.luton.gov.uk Scrollable element is keyboard accessible (WCAG 2.1.1) Legally required WCAG 2.1.1 (2.0, Level A) Moderate 485
go.walsall.gov.uk Element has its required owned elements (WCAG 1.3.1) Legally required WCAG 1.3.1 (2.0, Level A) Moderate 490
go.walsall.gov.uk Element in required WAI-ARIA context role (WCAG 1.3.1) Legally required WCAG 1.3.1 (2.0, Level A) Moderate 490
go.walsall.gov.uk Text has minimum contrast (WCAG 1.4.3) Legally required WCAG 1.4.3 (2.0, Level AA) Moderate 490
www.hackney.gov.uk Form field has accessible name (WCAG 4.1.2) Legally required WCAG 4.1.2 (2.0, Level A) Moderate 432
go.walsall.gov.uk Elements must only use permitted ARIA attributes (WCAG 4.1.2) Legally required WCAG 4.1.2 (2.0, Level A) Serious 217
www.hackney.gov.uk Frames must have an accessible name (WCAG 4.1.2) Legally required WCAG 4.1.2 (2.0, Level A) Serious 21
go.walsall.gov.uk ARIA attributes must conform to valid values (WCAG 4.1.2) Legally required WCAG 4.1.2 (2.0, Level A) Critical 15
www.hackney.gov.uk Links must have discernible text (WCAG 2.4.4) Legally required WCAG 2.4.4 (2.0, Level A) Serious 2
www.hackney.gov.uk Required ARIA attributes must be provided (WCAG 4.1.2) Legally required WCAG 4.1.2 (2.0, Level A) Critical 1
www.hackney.gov.uk Images must have alternative text (WCAG 1.1.1) Legally required WCAG 1.1.1 (2.0, Level A) Critical 1
www.hackney.gov.uk ARIA hidden element must not be focusable or contain focusable elements (WCAG 4.1.2) Legally required WCAG 4.1.2 (2.0, Level A) Serious 1
www.hackney.gov.uk <ul> and <ol> must only directly contain <li>, <script> or <template> elements (WCAG 1.3.1) Legally required WCAG 1.3.1 (2.0, Level A) Serious 1

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
Google Ads Paragraph line height is at least 1.5 (alfa) 1.00× 3 129
Google Ads Page starts with a level 1 heading (alfa) 1.00× 3 100
Google Ads Target size is at least 44×44 CSS pixels (Enhanced) (alfa) 1.00× 3 129
Google Ads Conversion Tracking Paragraph line height is at least 1.5 (alfa) 1.00× 3 129
Google Ads Conversion Tracking Page starts with a level 1 heading (alfa) 1.00× 3 100
Google Ads Conversion Tracking Target size is at least 44×44 CSS pixels (Enhanced) (alfa) 1.00× 3 129
Google Analytics Paragraph line height is at least 1.5 (alfa) 1.00× 3 129
Google Analytics Page starts with a level 1 heading (alfa) 1.00× 3 100
Google Analytics Target size is at least 44×44 CSS pixels (Enhanced) (alfa) 1.00× 3 129
Drupal Paragraph line height is at least 1.5 (alfa) 1.00× 3 129
Drupal Page starts with a level 1 heading (alfa) 1.00× 3 100
Drupal Target size is at least 44×44 CSS pixels (Enhanced) (alfa) 1.00× 3 129
jQuery Paragraph line height is at least 1.5 (alfa) 1.00× 3 129
jQuery Page starts with a level 1 heading (alfa) 1.00× 3 100
jQuery Target size is at least 44×44 CSS pixels (Enhanced) (alfa) 1.00× 3 129
PHP Paragraph line height is at least 1.5 (alfa) 1.00× 3 129
PHP Page starts with a level 1 heading (alfa) 1.00× 3 100
PHP Target size is at least 44×44 CSS pixels (Enhanced) (alfa) 1.00× 3 129
HSTS Paragraph line height is at least 1.5 (alfa) 1.00× 3 129
HSTS Page starts with a level 1 heading (alfa) 1.00× 3 100
HSTS Target size is at least 44×44 CSS pixels (Enhanced) (alfa) 1.00× 3 129
Google Tag Manager Paragraph line height is at least 1.5 (alfa) 1.00× 3 129
Google Tag Manager Page starts with a level 1 heading (alfa) 1.00× 3 100
Google Tag Manager Target size is at least 44×44 CSS pixels (Enhanced) (alfa) 1.00× 3 129
Microsoft Advertising Text is included in a landmark (alfa) 1.48× 2 87

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
Reduce unused JavaScript Performance 3 251 140.0 MB · 499.4s
Render-blocking requests Performance 3 251 540.5s
Reduce JavaScript execution time Performance 3 251 425.9s
Minimize main-thread work Performance 3 251 382.3s
First Contentful Paint Performance 3 251 —
Largest Contentful Paint Performance 3 251 —
Total Blocking Time Performance 3 251 —
Max Potential First Input Delay Performance 3 251 —
Time to Interactive Performance 3 251 —
Uses third-party cookies Best Practices 3 251 —
Issues were logged in the `Issues` panel in Chrome Devtools Best Practices 3 251 —
WebMCP tools registered Agentic (AI-readiness) 3 251 —
WebMCP form coverage Agentic (AI-readiness) 3 251 —
WebMCP schemas are valid Agentic (AI-readiness) 3 251 —
llms.txt follows recommendations Agentic (AI-readiness) 3 251 —
`ai-catalog.json` schema is valid Agentic (AI-readiness) 3 251 —
Network dependency tree Performance 3 251 —
Accessibility tree is not well-formed Agentic (AI-readiness) 3 250 —
Reduce unused CSS Performance 3 248 10.7 MB · 61.6s
Use efficient cache lifetimes Performance 3 235 196.8s
Speed Index Performance 3 229 —
Browser errors were logged to the console Best Practices 3 221 —
Page prevented back/forward cache restoration Performance 3 138 —
Cumulative Layout Shift Agentic (AI-readiness) 3 116 —
Layout shift culprits Performance 3 116 —

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 17 patterns spanning ≥2 sites.
Pattern Severity Likely source Sites Pages
All page content should be contained by landmarks Serious template 2 1948
Target size is at least 44×44 CSS pixels (Enhanced) Moderate template 3 1409
Paragraph line height is at least 1.5 Moderate template 3 1407
<ul> and <ol> must only directly contain <li>, <script> or <template> elements Critical template 2 969
Elements must meet minimum color contrast ratio thresholds Critical template 2 969
Page starts with a level 1 heading Moderate template 3 1124
Text has enhanced contrast Moderate template 3 925
Text is included in a landmark Moderate template 2 975
First focusable element is link to main content Moderate template 2 975
ARIA role should be appropriate for the element Moderate template 2 969
Form field has accessible name Moderate template 2 922
aria attribute is permitted for element role Moderate template 2 558
Text has minimum contrast Moderate template 2 491
Paragraph font size uses a relative unit Moderate template 2 491
There is content between headings Moderate content 2 434
Heading levels should only increase by one Moderate template 2 428
Headings are structured hierarchically Moderate template 2 216

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.