Axe, WAVE, and Lighthouse Disagree. That Is the Point.

November 11, 2026

Run axe on a product page and it reports 12 violations. Run WAVE and it reports 9, but two of them are things axe never mentioned. Run Lighthouse and it reports 4, with a score of 92 that looks like a pass. A team that picks one scanner and trusts it completely is making a decision based on whichever slice that tool happens to see, and the slice is smaller than anyone admits.

Three scanners, three answers

Axe-core is the engine under most CI gates, and it is the strongest of the three on ARIA and form wiring: missing accessible names, invalid ARIA attributes, duplicate ids, form controls with no label. It runs in the browser, it is fast, and its rules map to WCAG criteria with impact levels, critical through minor. What it cannot do is judge meaning. An alt attribute that says image123.jpg passes axe and fails the shopper, because axe checks presence, not sense.

WAVE is the visual one. It draws the page with icons on the elements themselves, which makes it the best of the three for showing a developer exactly where the problem sits, and it catches structural issues axe underplays, like heading order and reading order problems. Lighthouse is the bluntest: it runs axe-core under the hood, then wraps the result in a 0 to 100 score that executives love and that hides everything. A 92 looks like a pass. It is not a conformance claim, and Google says so in the tool itself.

What each one is blind to

The shared blind spot is the one that matters most. No scanner can tell you whether focus order follows the visual order, whether a modal traps focus, whether the alt text describes the product, or whether a keyboard user can finish checkout. Automated testing catches roughly a quarter to a third of WCAG issues, and the exact share depends on who is counting. The rest needs a person with a keyboard and a screen reader, and no scanner update will change that, because meaning is not a property a rule can compute.

Each tool also has its own gaps. Axe does not reliably test target size, because 2.5.8 needs layout-aware measurement of computed sizes and gaps. WAVE flags contrast on text it can see and misses text inside images. Lighthouse samples a page once, at one viewport, and says nothing about what happens at 200 percent zoom or on the second step of a multi-step form. A monitoring setup built on one of them has a hole shaped exactly like that tool.

How to run all three without drowning

Use them for what each is good at. Axe goes in CI, gated on new critical and serious violations on the critical path, because it is the only one of the three built for a gate. WAVE goes in the developer's browser for the visual pass on a changed template, because seeing the icon on the element is faster than reading a JSON report. Lighthouse goes in the release checklist for the trend line, never as a pass or fail, because a score is a trend, not a verdict. Then pair all three with a manual pass on every template change: a keyboard-only walkthrough of the changed flow. For the CI threshold side of this, see where to set the axe threshold so alerts mean something, and for the alert side, what a real monitoring alert looks like.

Frequently asked questions

Which scanner should we use if we can only run one?

Axe-core, in CI, because it is built for gating and its rules map to WCAG criteria with impact levels. But know what you are giving up: WAVE's visual placement and Lighthouse's trend line, and none of them replace a manual keyboard pass.

Why does Lighthouse give a high score when axe reports violations?

Lighthouse runs axe-core and then weights and rolls the results into a 0 to 100 score. The score hides severity and count. A page can score 92 with real failures on it, which is why a score is never a conformance claim.

Can any scanner catch a keyboard trap?

No. A keyboard trap, a focus order that jumps around the page, and a modal that does not trap focus are all things a scanner cannot judge. They need a person tabbing through the page with a keyboard.

Does a zero from all three scanners mean the page is accessible?

No. It means no rule fired. Automated checks catch roughly a quarter to a third of WCAG issues. A scan that returns zero errors does not mean the checkout works with a keyboard, and it does not mean the alt text makes sense.