a product of althor.dev

Measured 2026-08-08 · refreshed monthly · a sample, not a census

The .gov accessibility index

We ran an automated WCAG 2.1 Level AA scan against the homepage of a sample of 300 state or territory domains from the federal .gov registry, and published every result, including the ones that failed, timed out, or refused us.

This is a sample of 300 entities drawn from 1405 registry rows of state or territory type, not a census of them. The draw is deterministic and spread across jurisdictions so no one state dominates. The exact rule and seed are on the methodology page, so anyone with the public registry file can reproduce the same cohort.

300
entities in the sample
155
homepages successfully analyzed
57.4%
of the 155 analyzed pages had at least one detected violation
848
failing elements across those 155 pages

Every percentage on this site is computed over the 155 entities whose homepage was successfully analyzed, never over the whole sample. 89 of those 155 had at least one violation detected by axe-core against the wcag21a, wcag21aa, wcag2a, wcag2aa rule set. The remaining 145 of 300 sampled entities produced no measurement at all; those outcomes are listed below and are published as failures, never as clean results and never inside a rate.

These results come from one automated pass with axe-core. Automated testing detects a subset of WCAG issues; a page with no detected violations has not been shown to conform to WCAG 2.1 Level AA, and a page with detected violations has not been shown to violate any law. This is a dated measurement, not a legal determination and not a certification.

What happened to every entity we tried

Every attempted entity lands in exactly one of these outcomes. Nothing is dropped.
OutcomeEntitiesShareMeaning
Scanned15551.7%The homepage loaded and was analyzed.
Blocked by the site227.3%The site refused the request (bot protection or access control).
Timed out237.7%The homepage did not finish loading within the timeout.
HTTP error62.0%The homepage returned an HTTP error status.
Connection failed3210.7%The connection could not be completed.
DNS did not resolve5518.3%The domain did not resolve in DNS at scan time.
Skipped (robots.txt)62.0%The site's robots.txt disallows our crawler, so we did not scan it.
Scan error10.3%The page loaded but the engine could not analyze it.

Distribution by impact

axe-core assigns each violated rule an impact. Counts are over the 155 analyzed homepages.
ImpactPages with at least oneShare of analyzed pagesRule violations
critical3925.2%65
serious8252.9%136
moderate106.5%10
minor00.0%0

Most common violations

Ranked by how many analyzed homepages violated the rule.
RuleImpactPagesElementsWCAGWhat axe checks
color-contrastserious303031.4.3Elements must meet minimum color contrast ratio thresholds
link-nameserious281212.4.4, 4.1.2Links must have discernible text
button-namecritical19264.1.2Buttons must have discernible text
aria-prohibited-attrserious17254.1.2Elements must only use permitted ARIA attributes
aria-allowed-attrcritical15174.1.2Elements must only use supported ARIA attributes
image-altcritical12591.1.1Images must have alternative text
listserious11261.3.1<ul> and <ol> must only directly contain <li>, <script> or <template> elements
frame-titleserious11124.1.2Frames must have an accessible name
meta-viewportmoderate10101.4.4Zooming and scaling must not be disabled
link-in-text-blockserious9161.4.1Links must be distinguishable without relying on color
aria-required-childrencritical7141.3.1Certain ARIA roles must contain particular children
html-has-langserious663.1.1<html> element must have a lang attribute
aria-hidden-focusserious4274.1.2ARIA hidden element must not be focusable or contain focusable elements
document-titleserious442.4.2Documents must have <title> element to aid in navigation
labelcritical444.1.2Form elements must have labels
listitemserious31131.3.1<li> elements must be contained in a <ul> or <ol>
nested-interactiveserious344.1.2Interactive controls must not be nested
aria-command-nameserious334.1.2ARIA commands must have an accessible name
aria-progressbar-nameserious331.1.1ARIA progressbar nodes must have an accessible name
aria-required-parentcritical2331.3.1Certain ARIA roles must be contained by particular parents

Most commonly implicated WCAG success criteria

A page counts once per criterion, however many rules mapped to it. Criterion numbers refer to WCAG 2.1.
Success criterionPages
4.1.255
1.4.330
2.4.428
1.3.118
1.1.117
1.4.410
1.4.19
3.1.16
2.4.24
2.1.11
2.1.31

By state and territory

Every entity we attempted, grouped by the registry's State column.
State or territoryAttemptedAnalyzedAnalyzed with a violation
Alabama641
Alaska653
American Samoa543
Arizona500
Arkansas620
California421
Colorado631
Connecticut543
Delaware554
District of Columbia511
Florida542
Georgia631
Guam322
Hawaii430
Idaho511
Illinois530
Indiana510
Iowa640
Kansas633
Kentucky632
Louisiana653
Maine631
Maryland622
Massachusetts542
Michigan633
Minnesota521
Mississippi442
Missouri421
Montana653
Nebraska622
Nevada621
New Hampshire630
New Jersey653
New Mexico633
New York511
North Carolina654
North Dakota641
Northern Mariana Islands311
Ohio511
Oklahoma633
Oregon665
Pennsylvania641
Puerto Rico311
Rhode Island631
South Carolina633
South Dakota532
Tennessee520
Texas632
U.S. Virgin Islands321
Utah622
Vermont600
Virginia620
Washington621
West Virginia621
Wisconsin633
Wyoming500

The corpus and the method, in brief

The entity list is CISA's authoritative .gov registry (cisagov/dotgov-data, public domain), filtered to the State or territory domain type, then sampled down to 300 entities. Corpus fingerprint: sha256 16041b3dcffcdb81….

Each entity's homepage was loaded once in headless Chromium and analyzed with axe-core using the wcag21a, wcag21aa, wcag2a, wcag2aa tag set, which is the WCAG 2.1 Level A and AA rule set. We fetch and honor each site's robots.txt, identify ourselves in the User-Agent, cap concurrency, and make one homepage request per entity per run.

Full methodology: sampling rule and seed, engine versions, limits, conduct rules, and regulatory context with sources · Download the whole dataset (CC BY 4.0).

Reproduce any result

The engine is open source. Any row here can be re-run on your own machine:

npx github:st0rm-bless3d/a11yscan#v0.1.1 https://example.gov/ --min-impact serious

The CLI's default rule set is wider than this index's. It also enables wcag22aa and axe's best-practice rules, so it reports a superset of what we count here. See the methodology for the exact tag set.