← All guides

The real WCAG failure on gov.uk that axe doesn't report

By Jesús Quintana Fernández ·

The UK government’s site is the most cited accessibility reference on earth. GOV.UK’s design system is studied, copied, and praised. And its search button fails WCAG 2.2 AA — in a way the industry’s default scanner does not report.

The finding

The “Search GOV.UK” button renders its label in #1d70b8 on a #d2e2f1 background at 13px. That is a contrast ratio of 3.91:1. Normal text at that size needs 4.5:1 (criterion 1.4.3, level AA). It fails — and it fails for every low-vision user in a glare-lit room, which is the user WCAG writes for.

I know because my tool computed it. Not sampled, not estimated: the rendered audit loads the page in Chromium, resolves the effective colors (including transparency stacks), applies the official relative-luminance formula, and compares against the threshold at the element’s actual size and weight.

Why axe doesn’t tell you this

Run axe-core on GOV.UK’s homepage and the color-contrast rule lands in “incomplete”, not “violations”. That is a defensible engineering choice — contrast is genuinely hard to compute in the general case (gradients, background images, z-stacks), and axe would rather say “needs review” than guess. On today’s run, axe reports one violation type (region); contrast isn’t in the list.

But here’s the thing about “incomplete”: agents don’t read it as a task. They read it as noise. An AI coding assistant running the default pipeline gets a violations list, and an incomplete list, and acts on the first. The failure mode isn’t that axe is wrong — it’s that the honest shrug gets dropped on the floor.

So a11y-toolkit makes the opposite bet: compute it. Resolve the real background through every alpha layer, apply the formula, and say the number. Where it truly can’t be computed (text over photos), it says so in the findings and points you at pixel-sampling instead of pretending.

Reproduce it yourself

The toolkit is a free MCP server for AI agents (19 tools, zero dependencies at the core). Or use the online analyzer:

Try it now — free full report

The audit returns the ratio, the two colors, and the exact element — plus 49 other criteria signals (target sizes, focus traps, shadow DOM, 320px reflow, form errors, the works).

The uncomfortable general point

Automation covers roughly 92% of WCAG 2.2 A/AA criteria. Everyone says it; almost no tool behaves as if it were true. The two honest failure modes are:

  1. Overclaiming — the overlay vendors, one of which took a $1M FTC fine for it.
  2. Under-delivering the checkable part — filing computable facts as “incomplete” and letting them vanish.

The first is a lie. The second is a shrug. Users with low vision are failed by both. I built a toolkit that does neither: it computes everything computable, refuses to compute what isn’t, prints the boundary between them, and hands you a hash-verified evidence pack for the human who signs the rest.

That last part matters most. A conformance claim needs a person behind it — reachable, attributable, dated. The machine’s job is to shrink and sharpen that person’s work to exactly what judgment it actually requires.


a11y-toolkit: 19 MCP tools + 5 prompts, 50 of 54 WCAG 2.2 A/AA criteria with automated signals, zero dependencies at the core, es/en, MIT. Available on PyPI, the MCP Registry, and Zenodo (DOI: 10.5281/zenodo.22843722).