Accessibility statement

This site is scanned by the engine it sells

An accessibility company whose own site fails is not making an argument, it is making a confession. So this page states the standard we hold ourselves to, the gate that enforces it, and the things we know are not perfect.

The statement

What we hold this site to

Scope. Every page on klarvoaccess.com. Not a sample, not the home page — every route in the sitemaps, which is how the gate below discovers what to scan.

Standard. WCAG 2.2 Level AA as the floor, with Level AAA where it costs nothing to be better. In practice that means body text at a contrast ratio of at least 7:1 rather than the 4.5:1 the standard asks for, a visible focus indicator on every interactive element, primary controls at least 44 by 44 pixels, full support for reduced-motion preferences, and a layout that reflows at 400 per cent zoom without horizontal scrolling.

Technique. No accessibility widget, no overlay, no consent banner. The site is static HTML with one small piece of JavaScript — the scan form — which works as a plain form if that JavaScript never loads. There are no cookies and no third-party requests of any kind, which is enforced by a build gate rather than by good intentions.

Date. This statement describes the site as deployed. It is not a certificate: our own automation cannot issue one, and neither can anyone else's. Conformance for a scope and a date is established by a human audit, which is a service we sell and which we are not going to pretend a build script replaces.

The gate

What runs on every change

Five gates have to pass before this site can deploy. None of them is advisory, and we distinguish the ones that run on every commit from the one that is too expensive to.

  1. The route walk — every change. Every URL in the built sitemaps is loaded and checked against the complete rule set (WCAG 2.0, 2.1 and 2.2 at A and AA, plus best-practice rules), and a single violation on a single route fails the build. The same walk asserts one h1 per page, a per-route title, an honest landmark structure, a working skip link, and a self-referential canonical.
  2. The product's own scan — before release, and published either way. Routes go through the production engine's own scan: all 3 engines (axe-core, HTML_CodeSniffer, IBM Equal Access) and all 9 probes — the identical code path a customer's store goes through. It runs per release rather than per commit because each route means a real browser render. The current result: zero violations and one confirmed-intentional heuristic finding — and the next section tells that story in full, including the four scanner defects the earlier run caught. If our scanner is wrong about our own site, that is a bug in the product, not an exception for us.
  3. The contrast gate. Every text and background pair the design system can produce is computed from the design tokens and asserted against 7:1 for body text — including the composited stacks where translucent white text sits over the severity bands behind the scrim. Automated tools check 1.4.3 at the AA threshold; this is what keeps the AAA promise honest.
  4. The claims lint. The rendered text of every page is checked against our own claims law: no percentage scores, no "fully compliant", no permanence or legal-immunity language, and no certification language outside the audit tier where it is true. The gate also requires the sentence "an automated finding is evidence, not a certificate" to be present on every page that asks for money.
  5. The link and host gates. Every internal link must resolve, every page must be reachable from the home page within three clicks with no orphans, and the built output must contain no development host and no third-party host at all.

Alongside those, a keyboard-only walk and a screen-reader pass are run by hand on the primary journeys before release, because a gate that only a machine can pass is not the standard we are claiming.

The dashboard, too

The same discipline covers the product's own dashboard: every route is required to yield zero violations from the full rule set, the scan lifecycle is announced to assistive technology, focus moves to the result when a scan completes, a skip link is the first focusable element on every route, and each route sets its own document title. That gate has been in place since long before this marketing site existed.

Being straight about it

What we know is imperfect

A statement with no known issues in it is a statement nobody checked. Ours is a short story with a good ending, and the whole of it stays on this page:

An earlier run of our own product against this site returned thirty-one findings on the home page. We read every one, concluded that thirty of them were defects in our scanner rather than in the site, and published that conclusion here. Then we fixed the scanner:

  • 2.5.8 Target Size had flagged twenty-eight ordinary links inside sentences. WCAG exempts targets in a block of text; the probe now applies that Inline exception before counting, and names it in the finding it emits. We kept the change the false findings prompted anyway — inline links here carry vertical padding, so their pointer target is at least 24 pixels tall even though the standard would let us leave them at sixteen.
  • 1.4.12 Text Spacing had counted containers that were already clipping by design. The criterion is about content lost because the spacing adaptation was applied, so the probe now measures before and after and counts only new clipping.
  • The same pass caught two wrong levels. The engine carried 3.2.6 Consistent Help and 3.3.7 Redundant Entry at Level AA, from earlier drafts of WCAG 2.2. The published Recommendation makes both Level A, and every finding and conformance table now says so.
  • And it surfaced a defect the findings could not name: this site's strict Content-Security-Policy was silently blocking the three injected engines, so scans of this site ran on the probes alone and reported themselves failed. The scanner now bypasses the target page's CSP for its own instruments — what any auditor's tooling does, changing nothing about what a visitor receives — which matters for every hardened store, not just ours.

The most recent run of the fixed engine against this site: six pages, all three engines and the full probe set on every one, zero violations, and exactly one finding — 3.2.6 Consistent Help (Level A), a heuristic noticing that our contact route appears in the footer everywhere and also in the body of some pages. Its own description asks a human to confirm the placement is intended. We have, and we are content with it.

We could have quietly published none of that. Publishing it is the more useful thing, and finding four product defects by pointing the product at ourselves is the only version of the dogfood claim that is actually true.

The rest of what we know:

  • Automated coverage is partial, here as everywhere. Of the 55 WCAG 2.2 A and AA success criteria, 39 have at least one automated rule or probe behind them and 16 have none. Passing our gate means no machine-detectable violation, which is not the same as conformance.
  • The per-route product scan is not yet automated end to end. The public scan endpoint applies a ten-minute cooldown per target host — correctly, so the funnel cannot be used to hammer anyone — which means it cannot scan twenty-five routes of one site in a sitting. Running the full set needs the authenticated scanning path a paying customer's monitoring uses, and that is the next piece of work on this page. Until then the per-route gate is the rule-set walk above, and the product scan is run on a curated set.
  • This site has not had an independent third-party audit. We audit customers' stores; nobody outside has audited ours. Saying so seems more useful than the alternative, and it is on the list.
  • The hero animation is decorative. It plays once and is fully disabled when your system asks for reduced motion. If it ever fails to respect that preference, that is a defect — tell us.
  • Long tables scroll horizontally inside their own container on narrow screens. The page never scrolls sideways, but a wide comparison table does, which is a compromise rather than an ideal.

Found something?

Tell us, and we will fix it

Email accessibility@klarvoaccess.com with the page, what you were trying to do, and what your browser and assistive technology are. You do not need to know which success criterion it is — describing what happened is more useful.

We aim to acknowledge within two working days and to tell you either what we changed or why we think it is working as intended. If you disagree with our answer, say so; you are more likely to be right than we are.

Hold your own store to this.

The gate on this site is the product. Point it at your store and see what it says — free, no signup.