What the million home pages show
95.9 percent of the pages had one or more WCAG 2 failures that a scan can find. The count on each page went up 10.1 percent from 2025. The same six failure types are at the top of the table for the seventh year. Low contrast text is on 83.9 percent of the pages. An image with no alt text is on more than half.
Figure 1
Percent of the one million home pages with each failure type, 2026
WebAIM, WAVE engine, February 2026
Four of the six types are less frequent than in 2019. A page with no document language fell from 33.1 percent to 13.5 percent. Empty buttons went in the other direction, from 25 percent to 30.6 percent.
WebAIM is the accessibility group at Utah State University. Each year from 2019 on, it scans the one million most visited home pages with its WAVE engine and publishes the counts. The 2026 report is the first in six years where the count went up. WebAIM points at the growth of the pages themselves. The mean home page holds 1,437 elements, 22.5 percent more than one year before. More of that code comes from frameworks and from AI tools.
What the same scan finds on 833 eye care websites
In September 2026 Handrail Audit did an automated scan of 929 websites of eye care practices in Los Angeles County. The list came from six Google Places queries. 833 websites answered. 96 did not. 18 refused the scanner through robots.txt. 38 sent the browser to a different company. 19 answered with a code that says the page is not there, and 21 no longer resolve.
784 of the 833 websites, which is 94.1 percent, have one or more failures. 634, which is 76.1 percent, have a failure on the booking path. That is an image with no alt text, a link with no name, a button with no name, or a form field with no label. 394, which is 47.3 percent, have one or more critical failures.
Low contrast text leads here too, on 69.1 percent of the websites. Links with no name are on 53.2 percent. Frames with no name are on 35.5 percent, and the frame is almost always the booking widget or the map. Images with no alt text are on 32.8 percent. On an eye care website, an image with no alt text is invisible to the patient with low vision. That patient is the patient the practice exists to help.
Figure 2
Percent of the 833 eye care websites with each failure type
The ten most frequent axe-core rules, own markup only, September 2026
On four of the six WebAIM types, the eye care websites do better than the million. Low contrast is on 69.1 percent against 83.9. Missing alt text is on 32.8 percent against 53.1. Form fields with no label are on 7.4 percent against 51.0. One cause is that many practices put the appointment form in a vendor widget, which the scan does not count.
Links with no name go in the other direction, 53.2 percent against 46.3. The two scans use different engines and a different count of pages. Compare the two as a direction and not as a measurement.
The median website has 15 failures. The mean is 22.1. 49 websites, which is 5.9 percent, gave 0. A count of 0 is not proof. A parked domain and a page that refuses bots also scan clean. Thus Handrail Audit opens each one by hand before it says that a website is clean.
Figure 3
How many failures one eye care website has
Count of websites in each band. Own markup, each element counted one time
What a scan cannot see
An automated scan finds approximately one third of the barriers on a website. In the August 2026 study of 42 practices by Handrail Audit, one website passed the scan. A person then found 11 section titles that are bold text and not headings. A patient who uses a screen reader moves through a page by its headings, and on that page the patient cannot move at all. Each count on this page is a minimum.
Ask for a price
If you want the count for your own website, and the list of what an ADA claim would cite, the form on the home page asks for the address and nothing more.
Price my websiteSource: WebAIM, The WebAIM Million, 2026 report. The Handrail Audit scan: 929 domains, 4 to 5 September 2026, axe-core 4.12.1, three pages maximum for each website, own markup only, each element counted one time.