The most common accessibility errors on websites are text with too little contrast, images without alt text, form fields without labels, empty links, empty buttons and a missing language setting. That is the finding of the 2026 WebAIM Million report, which automatically tests the homepages of one million popular websites. According to the report, 96% of all detected errors fall into those six categories.
The good news: you can fix most of these errors with a few lines of HTML or a different way of working in your CMS. This article lists the ten most common errors, with the matching WCAG criterion and a concrete fix. It is part of our complete guide to website accessibility.
What does the WebAIM Million report say?
The WebAIM Million report is an annual automated accessibility test of the homepages of the one million most popular websites. The 2026 edition is based on measurements from February 2026, using WebAIM's WAVE tool, which tests for errors against WCAG 2.2 level A and AA.
The key figures from the report:
- 95.9% of homepages had automatically detectable WCAG errors, compared with 94.8% in 2025.
- On average there were 56.1 errors per homepage, compared with 51 in 2025.
- According to WebAIM, the six most common error types have been the same for seven years.
| Error (WebAIM Million 2026) | Share of homepages 2026 | 2025 |
|---|---|---|
| Low-contrast text | 83.9% | 79.1% |
| Missing alt text on images | 53.1% | 55.5% |
| Form fields without labels | 51% | 48.2% |
| Empty links | 46.3% | 45.4% |
| Empty buttons | 30.6% | 29.6% |
| Missing document language | 13.5% | 15.8% |
Errors 7 to 10 in this list come from other measurements in the same report: heading structure, vague link text, ARIA use and skip links. WebAIM doesn't count them in the top six, but they were measured and they affect many sites.
A caveat WebAIM makes itself: automated tools don't find every error. The report states that the absence of detected errors does not mean a page is accessible or conforms to WCAG. The real picture is therefore worse than these figures show.
1. Text with too little colour contrast
Low contrast is the most common accessibility error: WebAIM found it on 83.9% of homepages, with an average of 34 instances per page. It is text whose colour doesn't stand out enough from the background.
- WCAG criterion: 1.4.3 Contrast (Minimum), level AA. Normal text needs at least 4.5:1, large text (18 point, or 14 point bold) at least 3:1, according to the WCAG 2.2 specification.
- Why it matters: people with low vision, older people and anyone using their phone in the sun can't read light grey text or text over a photo.
The fix lives in your brand styling and CSS, not in the HTML. Choose text colours that reach at least 4.5:1 in a contrast checker, and put a dark overlay under text that sits on top of an image. You will find more about colour contrast in the glossary.
2. Images without alt text
Missing alt text is the second most common error: 53.1% of homepages had at least one image without an alt attribute. According to WebAIM, 16.2% of all images had no alt text, an average of 10.8 per homepage.
- WCAG criterion: 1.1.1 Non-text Content, level A.
- Why it matters: a screen reader then reads nothing, or the file name. With a linked image, the user doesn't know where the link goes. WebAIM reports that 45% of images without alt text were linked.
Give informative images a short description of what they convey in that context. Give purely decorative images an empty alt, so a screen reader skips them.
<!-- Informative image -->
<img src="team.jpg" alt="Our five-person support team at the front desk in Leeds">
<!-- Linked image: describe the purpose of the link -->
<a href="/prijzen"><img src="pricing-icon.svg" alt="View pricing"></a>
<!-- Decorative image: empty alt -->
<img src="wave-line.svg" alt="">
Good alt text also helps search engines and AI systems understand your images; see content that AI cites.
3. Form fields without labels
A form field without a label is the third most common error: 51% of homepages had at least one. According to WebAIM, 33.1% of all form fields were not properly labelled.
- WCAG criteria: 1.3.1 Info and Relationships (A), 3.3.2 Labels or Instructions (A) and 4.1.2 Name, Role, Value (A).
- Why it matters: a screen reader only says "edit text", without telling you what to fill in. A placeholder disappears as soon as you type, so sighted users forget the question too.
Link a visible label to every field with for and id. A search field with only an icon can get an aria-label.
<label for="email">Email address</label>
<input type="email" id="email" name="email" autocomplete="email">
<!-- Search field without a visible label -->
<input type="search" name="q" aria-label="Search the site">
For order forms and checkouts, the article on accessible forms and checkout goes deeper into error messages and required fields.
4. Empty links
An empty link is a link without text that a screen reader can read out. WebAIM found empty links on 46.3% of homepages. Usually it is a social media icon or a logo without alt text.
- WCAG criteria: 2.4.4 Link Purpose (In Context), level A, and 4.1.2 Name, Role, Value, level A.
- Why it matters: the user only hears "link" and doesn't know where it goes.
<!-- Wrong: icon without text -->
<a href="https://www.linkedin.com/company/example"><svg>…</svg></a>
<!-- Right: text for the screen reader, icon hidden -->
<a href="https://www.linkedin.com/company/example">
<svg aria-hidden="true" focusable="false">…</svg>
<span class="visually-hidden">Follow us on LinkedIn</span>
</a>
5. Empty buttons
An empty button is a button without an accessible name, and WebAIM found one on 30.6% of homepages. Think of a hamburger menu, a close icon or a search button with only an icon.
- WCAG criterion: 4.1.2 Name, Role, Value, level A. For an image used as a button, also 1.1.1.
- Why it matters: if you can't see the button, you don't know what it does and won't dare to press it.
<button type="button" aria-label="Open menu" aria-expanded="false">
<svg aria-hidden="true" focusable="false">…</svg>
</button>
6. Missing document language
A page without a language setting doesn't tell the browser what language the text is in. According to WebAIM, it was missing on 13.5% of homepages.
- WCAG criterion: 3.1.1 Language of Page, level A. For passages in another language: 3.1.2 Language of Parts, level AA.
- Why it matters: a screen reader may then read English text with, for example, a French pronunciation, which is often unintelligible.
<html lang="en">
…
<p>Our approach is pure <span lang="fr">savoir-faire</span>.</p>
</html>
7. A messy heading structure
Headings are a page's table of contents for screen reader users, and on many sites it doesn't add up. WebAIM counted skipped heading levels, such as a jump from H2 to H4, on 41.8% of homepages. 18.1% had more than one H1, and 7.5% had no headings at all.
- WCAG criteria: 1.3.1 Info and Relationships (A) and 2.4.6 Headings and Labels (AA).
- Why it matters: WebAIM writes that headings are the main way screen reader users navigate content.
A skipped level is not always a WCAG failure in itself, but it makes the structure unclear. Use headings in order, and choose a heading level based on structure, not font size. Bold text that looks like a heading but isn't a heading in the code is a failure under 1.3.1.
8. Vague link text
Vague link text such as "click here", "more" or "continue" says nothing about where the link goes. WebAIM found such link text on 15.2% of homepages, with an average of 5.3 instances per page.
- WCAG criterion: 2.4.4 Link Purpose (In Context), level A.
- Why it matters: screen reader users often have a list of all links read out. Ten times "read more" is then useless.
Put the destination in the link text: "see our opening hours" instead of "click here". This is the error you can most easily prevent as a content editor.
9. ARIA used incorrectly
WAI-ARIA is a set of HTML attributes that gives extra information to assistive technology, but using it incorrectly makes a page worse. WebAIM counted more than 133 ARIA attributes per homepage on average. Pages with ARIA had an average of 59.1 errors, compared with 42 on pages without.
WebAIM stresses that this is a correlation, not proof that ARIA causes the errors; pages with ARIA are also more complex. One concrete finding, though: 22% of ARIA menus (role="menu") caused accessibility problems because of missing code or keyboard support.
- WCAG criterion: usually 4.1.2 Name, Role, Value, level A.
- Fix: use plain HTML elements first, such as
<button>,<nav>and<a>. They already have the right role and keyboard support built in. Only add ARIA where HTML falls short.
10. A missing or broken skip link
A skip link is a link at the top of the page that lets keyboard users skip the navigation and go straight to the content. According to WebAIM, 17.1% of homepages had a skip link, and one in ten of those didn't work.
- WCAG criterion: 2.4.1 Bypass Blocks, level A. A skip link is a common way to meet it; headings and landmarks such as
<main>help too. - Why it matters: without a skip link, a keyboard user has to tab through the whole menu again on every page.
<body>
<a href="#content" class="skiplink">Skip to content</a>
<header>…</header>
<main id="content">…</main>
</body>
Don't hide the skip link with display: none, because then it won't work. Make it visible as soon as it receives focus.
Which errors do automated tools find, and which do they miss?
Automated tools find whether something is missing, but rarely whether something is right. That distinction determines how much manual work you have left after a scan.
| Error | Automatically detectable | What stays manual |
|---|---|---|
| Low contrast | Only with a rendered page | Text over images, gradients and hover states |
| Missing alt text | Yes | Whether the alt text describes the image well |
| Fields without labels | Yes | Whether the label is clear |
| Empty links and buttons | Yes | Whether the name describes the function well |
| Missing document language | Yes | Whether the language set is correct |
| Heading structure | Partly, such as skipped levels | Whether headings describe the content well |
| Vague link text | Partly, known phrases like "click here" | Whether a link is clear in context |
| ARIA | Technical errors in attributes | Whether keyboard operation works |
| Skip link | Whether it is present | Whether it becomes visible and jumps to the content |
Colour contrast deserves separate attention. To measure contrast, a tool needs to know what colour the text and background actually end up with, including stylesheets, images and layers. That requires the page to actually be rendered. A test that only analyses the HTML therefore can't measure contrast reliably. For that reason Flowproof reports contrast as something to check manually, rather than giving a result that isn't correct.
How to combine automated and manual testing is covered in testing website accessibility. The criteria themselves are explained in WCAG 2.2 explained.
How to check this on your own site
Follow these steps to track down the ten errors on your own site:
- Run an automated test on your homepage, a landing page, a product page and your most important form. It finds missing alt text, labels, empty links and buttons, and the document language.
- Measure contrast with a contrast checker, especially for light shades, brand colours and text over photos.
- Review your heading structure with a browser extension that shows the headings as a list, and check whether that list reads like a table of contents.
- Read your link text on its own, away from the surrounding text, and replace every "click here" or "read more".
- Tab through the page using only the keyboard: does the skip link work, can you see the focus, and can you open and close menus?
- Check the alt text in your media library for content, not just for presence.
Flowproof's accessibility check is included in the paid Pro and Business plans. It tests with axe-core against WCAG 2.0, 2.1 and 2.2 level A and AA, shows the success criterion, level and severity for each finding, and also checks whether you have a skip link and a link to your accessibility statement. You can create a free account and upgrade afterwards.