Every year, the American non-profit WebAIM runs an automatic accessibility check on the home pages of the one million most visited websites. The results are remarkably consistent: the same six problems show up again and again, and together they make up the vast majority of everything the checks find. None of them are hard to fix, and several are created not in code but in the content editor, by the people who write the pages. Here is each problem in plain words: what it is, who runs into it, how to spot it yourself and what to change.
What one million home pages tell us
In the WebAIM Million 2026, the analysis from February 2026, 95.9% of home pages had at least one detectable failure against WCAG, the international guidelines for accessible websites. That is up from 94.8% in the 2025 edition. The checks found an average of 56.1 errors per home page, compared with 51 the year before.
According to WebAIM, about 96% of all detected errors fall into just six categories. This is the share of home pages where each one was found in 2026:
- Low contrast text: 83.9%
- Missing alternative text for images: 53.1%
- Missing labels on form fields: 51%
- Empty links: 46.3%
- Empty buttons: 30.6%
- Missing page language: 13.5%
Text that is hard to read
What it is. Text that does not stand out enough from its background. Light grey on white, white on pale yellow, thin text on top of a photo. The difference between the text colour and the background colour is measured as a _contrast ratio_, a number from 1:1 (no difference at all) to 21:1 (black on white). The guidelines ask for at least 4.5:1 for normal text and 3:1 for large text, which means roughly 24px and up, or about 19px and up when bold.
Who it affects. People with low vision, people with colour blindness and many older visitors, whose eyes need more contrast as they age. And anyone checking your opening hours on a phone on a sunny terrace, where pale grey text simply disappears.
How to spot it yourself. Turn your screen brightness down to the lowest setting, or look at your site on your phone in daylight. If you have to lean in or squint to read something, the contrast is too low. Pay extra attention to footers, captions and text over images.
How to fix it. Make the text darker or the background lighter. On a white background, the medium grey #999999 reaches only about 2.8:1, while the slightly darker #767676 just passes at 4.5:1.
/* Before: too light on white */
.note {
color: #999999;
}
/* After: passes for normal text */
.note {
color: #595959;
}In most site builders you change text colours in the theme or style settings, without touching code.
Images without a description
What it is. _Alt text_ (short for alternative text) is a short written description attached to an image. Visitors normally never see it, but software reads it out. When it is missing, that software has nothing to say about the image.
Who it affects. People who are blind often use a _screen reader_, software that reads the screen aloud. On an image without alt text, it may read the file name instead, such as "IMG underscore 4032 dot jpg", or skip the image entirely. If that image was a banner announcing "Closed on Monday", the message is lost.
How to spot it yourself. Open the image settings in your content management system (CMS) and look for a field called "Alternative text", "Alt text" or "Image description". If it is empty for an image that carries meaning, that is the problem.
How to fix it. Describe what the image is there for, not just what it shows. Keep it short, usually one sentence.
- Bad: "image", "photo1.jpg", or "bakery, bread, Ghent, best bakery, fresh bread"
- Good: "Baker taking fresh sourdough loaves out of a wood-fired oven"
- For a logo that links to the home page: "Bakery Janssens, home"
Purely decorative images, such as a background texture or a divider, should have an _empty_ alt text so screen readers skip them. Many CMSs have a "decorative image" option for this.
Form fields without a label
What it is. Every field in a form needs a visible name, such as "Email address", that is linked to the field in the page code. A common shortcut is to put the hint inside the field as grey placeholder text, which disappears as soon as you start typing and is often not linked properly.
Who it affects. A screen reader user arriving in a contact form with three empty boxes may hear only "edit text, blank" three times, with no way of knowing which box is for the name, the email or the message. People who control their computer by voice cannot say "click email" if the field has no name.
How to spot it yourself. Click on the label text next to a field. If the cursor jumps into the field, the two are connected. If nothing happens, or there is no label outside the field at all, it needs fixing.
How to fix it. Give each field a visible label and link it to the field. In code that looks like this:
<!-- Before: only a placeholder --> <input type="email" placeholder="Email" /> <!-- After: a label linked to the field --> <label for="email">Email address</label> <input type="email" id="email" />
The for on the label and the id on the field share the same value, which is what connects them. Most form builders do this automatically, as long as you fill in the label setting and do not hide it.
Links and buttons that say nothing
In both cases, something you can click has no text that software can read out.
Empty links
What it is. A link that contains only an icon or an image without alt text, so it has no name. Social media icons and linked logos are the classic examples.
Who it affects. Screen reader users can ask for a list of all links on a page to find their way. Empty links show up as just "link", or as a long web address read out letter by letter. Someone looking for your Instagram page has to guess.
How to spot it yourself. Look for links that are only an icon or a picture: social icons, a logo, a small arrow. Then check in your CMS whether each one has a text or alt text that says where it goes.
How to fix it. Give the icon or image a text alternative that names the destination: "Instagram", "Facebook", "Bakery Janssens, home".
Empty buttons
What it is. The same thing, but for buttons: an icon-only button such as a magnifying glass for search, three lines for the menu, a cross to close a pop-up or arrows on an image slider.
Who it affects. On a phone, a screen reader user who lands on the menu button hears only "button". They cannot tell whether it opens the menu, starts a search or closes something, so they may never reach the rest of your site.
How to spot it yourself. Every button that shows only an icon needs a name.
How to fix it. Add a short text that screen readers read but that does not change the look:
<button> <svg>...</svg> <span class="visually-hidden">Search</span> </button>
The visually-hidden class is a common helper that hides text on screen while keeping it available for screen readers; many themes already include one. In a site builder, look for a "label" or "accessible name" field in the button settings.
A page that does not say its language
What it is. Each page should state in its code which language it is written in. This is a single setting, usually in the site settings or the theme.
Who it affects. A screen reader uses that setting to choose its voice and pronunciation. If a Dutch page is marked as English, or not marked at all, the text is read out with English pronunciation and becomes very hard to follow. This matters a lot for multilingual sites, which are common in Belgium: every language version must say its own language.
How to spot it yourself. Open your page, view the page code (Ctrl+U in most browsers on Windows, Cmd+Option+U on a Mac), and look at one of the first lines. You should see something like this:
<html lang="nl"></html>
Here nl means Dutch. English is en, French fr and German de. If the lang part is missing or names the wrong language, change the site language in your CMS or ask your developer to correct it.
Writing tips for content editors
Several of these problems are created every day in the CMS, by people who never touch code. A few habits prevent most of them.
- Write link text that makes sense on its own. "Read more" and "click here" say nothing when read out in a list of links. Write "Read more about our opening hours" or "Download the 2026 price list (PDF, 2 MB)" instead.
- Fill in alt text for every meaningful image, and describe its purpose. Ask yourself what a visitor would miss if the image did not load. That is your alt text.
- Mark decorative images as decorative rather than inventing a description for them.
- Use headings in order. A page has one main heading, then level 2 headings for sections and level 3 for subsections, without skipping levels. Pick headings for their meaning, not for their size; change the size in the styling instead. Screen reader users jump between headings to scan a page.
- Do not rely on colour alone. "Required fields are shown in red" does not help someone who cannot see red. Add a word or a symbol as well.
What automatic checks cannot judge
Automatic checks are very good at finding these six problems, because each one can be measured: a colour pair either reaches 4.5:1 or it does not.
But a check can only tell you _that_ an image has alt text, not whether the text is any good. "Photo" passes the check while helping no one. In the same way, a check sees that a link has text, but not that "click here" is meaningless, and it cannot tell whether your page is easy to use with a keyboard alone or whether your language is clear. Automatic checks find a good share of common issues, but not all of them.
So after fixing what a check reports, look for yourself. Read your alt texts and link texts out loud. Try moving through the page with only the Tab key. Zoom your browser to 200% and see whether everything still fits and works.
Check where your site stands
The fastest way to find out which of these six problems are on your own site is to check a page for free. The report explains in plain words what is wrong, who it affects, where it is on the page and how to fix it, and the ibin guides walk you through the repairs step by step. Once you have fixed your home page, sign in with your email address to check up to 200 pages of the same site for free.
See how your own site does
Check a page for free, without an account. You get a plain list of what to fix first, with pictures of where each problem is.