Skip to content
← All articles

Website Accessibility: Why Overlay Widgets Do Not Work and What to Do Instead

Short answer. Accessibility means the site can be used with a keyboard, a screen reader and at increased zoom. An "accessibility widget" — the floating button that changes font size and colours — does not create it: the overlay restyles the same markup, while the cause of inaccessibility is in the markup. The practical minimum is semantics, contrast, keyboard support and labelled fields, and half of it can only be checked by hand.

Who is legally required to be accessible, and who simply benefits

Legal exposure depends on jurisdiction: in the United States it comes through the ADA and Section 508, in the European Union through the European Accessibility Act and EN 301 549, and public-sector sites in most countries have their own rules on top. What all of them have in common is that they reference WCAG at level AA rather than inventing their own criteria. The exact scope and deadlines change — verify them against the current legislation, not a blog post.

For a commercial site with no statutory duty, accessibility still pays off for three reasons, none of them charitable:

  • Part of your audience simply cannot buy. Not only blind users: a temporary cast, bright sunlight on a phone screen, a noisy train, age-related long-sightedness — the same barriers as permanent impairments.
  • Accessible markup is semantic markup. Ordered headings, labelled fields and meaningful link text serve the screen reader and the search crawler equally.
  • Accessibility catches ordinary interface bugs. A form you cannot complete with the keyboard is usually broken with a mouse too — it was just noticed later.
Diagram: the same interface experienced through a screen reader, magnified zoom and keyboard navigation
Accessibility is not a separate version of the site but a property of the main one: the same interface has to work by voice, by keyboard and at high zoom.

Accessibility overlays: why a button does not make a site accessible

The quickest-looking fix is an overlay widget: a floating icon hiding toggles for font size, colour scheme, letter spacing and image suppression. It looks like a requirement satisfied, but it covers only a small part of the job.

The overlay works on top of the same markup. It can change appearance; it cannot repair the cause. If an image has no description, the screen reader stays silent at any font size. If a button is a div with no role, growing it does not make it a button. If a field is not associated with a label, the reader still cannot say what to type.

The intended user usually does not use it. A blind visitor arrives with their own screen reader; a low-vision visitor with system magnification and their own contrast settings. Those tools are already tuned to that person far better than any on-page panel.

An overlay can actively interfere. Widgets that aggressively rewrite the page and inject their own ARIA can conflict with screen readers and degrade what previously worked. That is precisely why the assistive-technology community treats overlays with scepticism.

An overlay is a supplement, not a substitute. Installing one is defensible when a formal requirement expects such a version to exist. Believing the job is done once the widget is live is the most expensive mistake in this field: the underlying barriers stay exactly where they were, and the sense of a closed task stops anyone from noticing them.

The claim is testable in a minute: switch the widget on and try to walk the homepage using only Tab. If focus disappears, jumps around or gets stuck inside a modal, the widget did not help — because the problem was never font size.

The WCAG principles: POUR

The standard rests on four principles, and any defect you find sorts neatly into one of them.

Perceivable

  • Images carry an alt that describes meaning, not the file name.
  • Video has captions; important audio has a transcript.
  • Colour is not the only carrier of meaning: "fields marked in red" is invisible to a colour-blind user.
  • Text contrast is at least 4.5:1, or 3:1 for large text.

Operable

  • Every function works from the keyboard, including menus, modals and sliders.
  • Focus is visible, and the tab order matches the visual order.
  • Nothing flashes more than three times per second.
  • Timed interactions can be extended or turned off.

Understandable

  • The page language is declared, or a reader will pronounce the text with the wrong phonetics.
  • The interface behaves predictably: focusing a field does not navigate on its own.
  • Form errors explain what is wrong and how to fix it.

Robust

  • Markup is valid and elements are not nested arbitrarily.
  • ARIA is used sparingly and never contradicts the native semantics.

The practical minimum that removes most barriers

Full WCAG is large, but the overwhelming majority of real problems on an ordinary site are the seven items below.

1. Semantic markup instead of a pile of blocks

<!-- Bad: a block with a click handler -->
<div class="nav">
  <div class="nav__item" data-href="/en">Home</div>
</div>

<!-- Good: a link stays a link, navigation stays navigation -->
<nav aria-label="Main navigation">
  <a href="/en">Home</a>
</nav>

A clickable div is skipped by keyboard navigation, announces no role to a screen reader and cannot be opened in a new tab with a middle click. A link or a button gets all of that for free.

2. Meaningful image descriptions

<!-- Decorative: empty alt so the reader skips it -->
<img src="divider.png" alt="">

<!-- Informative: describe the meaning, not the appearance -->
<img src="chart.png" alt="Revenue grew 45% in the third quarter">

<!-- Image link: alt describes where the link goes -->
<a href="/en/pricing"><img src="banner.png" alt="Plans and pricing"></a>

An empty alt is a tool rather than a mistake: it tells the reader "skip this, it is decoration". The mistake is omitting the attribute, which makes the reader announce the file name.

3. Labelled form fields

<!-- Bad: the label lives in the placeholder and vanishes on input -->
<input type="email" placeholder="Your email">

<!-- Good: an explicit association between label and field -->
<label for="email">Email address</label>
<input type="email" id="email" name="email" autocomplete="email"
       aria-describedby="email-hint">
<p id="email-hint">We will send your order confirmation here</p>

A placeholder is a hint, not a label: it disappears as soon as typing starts, has low contrast and is not announced by every reader. The autocomplete attribute helps far beyond accessibility — it saves everyone time.

4. Contrast

Light grey text on white is the most common finding of any audit. The minimum is 4.5:1 for body text and 3:1 for large text, and it applies to button labels, field hints and text over photographs. Check the :disabled state and placeholders separately: they are often faded to the point of being unreadable.

5. Keyboard support and visible focus

Walk the page with Tab from top to bottom. Everything interactive must receive focus, the order must match the visual layout, and the focus ring must never be removed without a replacement. The rule is simple: outline: none with no visible focus style of your own is a defect, not a design decision.

6. Ordered headings

One h1 per page, then h2 and h3 by nesting, with no level skipped for the sake of font size. Screen readers navigate by headings, and for a blind visitor that is the equivalent of skimming a page by eye.

7. Zoom and touch target size

The page must stay usable at 200% zoom: no horizontal scrolling, no overlapping blocks. Touch targets on mobile should be at least 44 pixels on each side, or they are unreachable both for someone with a tremor and for anyone tapping while walking.

Diagram of the practical minimum: semantics, image descriptions, field labels, contrast, keyboard, headings and zoom
Seven items of the practical minimum remove most real barriers — and not one of them is solved by a toggle button.

ARIA: first, do not use ARIA

The first rule of ARIA is not to use it when a native element does the job. A real button already announces its role, takes focus and responds to Space and Enter; a div with role="button" has to be re-equipped by hand, and part of the behaviour will still differ.

<!-- Redundant and fragile -->
<div role="button" tabindex="0" aria-pressed="false">Submit</div>

<!-- Sufficient -->
<button type="submit">Submit</button>

<!-- ARIA belongs where no native element exists -->
<div role="status" aria-live="polite">Your request has been sent</div>

Wrong ARIA is worse than none: the attribute overrides what the browser was already communicating, and the reader starts describing the element incorrectly. When in doubt, drop the ARIA and use the native tag.

Testing: automation catches less than half

Automated scanners find what can be formalised: a missing alt, insufficient contrast, an unlabelled field, duplicate identifiers. Everything else — whether descriptions make sense, whether focus order is logical, whether errors are understandable — takes a human. So testing has two halves, and the second cannot be skipped.

A perfect automated score is not a passing grade. It only means no formalisable violation was found. Studies of automated tooling consistently put its coverage at a minority of real WCAG failures — the rest live precisely in the judgement calls a scanner cannot make.

The automated half. Built-in browser dev tools can run an accessibility audit, and axe-based extensions give a detailed list of violations with the offending nodes. Do not run it on the homepage alone: typical defects live on product pages, in carts and in forms.

The manual half — four checks, a couple of minutes each:

  1. Keyboard only. Take your hand off the mouse and walk a key scenario: menu, form, modal, submit. Check that Escape closes the modal and that focus does not escape behind it.
  2. Screen reader. Every modern operating system ships one. Half a minute on the homepage is enough to hear whether it is clear where you are and what the links say.
  3. 200% zoom. Magnify the page and look for horizontal scrolling and overlapping content.
  4. Images off. The fastest way to see where alt text is missing or meaningless.

It helps to capture the page's general state — status codes, headers, speed — before an audit, so that inaccessibility is not confused with an ordinary fault: use the site audit, the header check and the speed test. A slow page hurts everyone, but it hurts assistive-technology users more: the reader announces what has already rendered.

Testing diagram: an automated scanner covers part of the violations, the rest are found by keyboard, screen reader, zoom and disabled images
Automation covers the formalisable part; everything else is caught by four manual checks of a couple of minutes each.

Typical violations and how to fix them

ViolationWho it breaksHow to fix
Clickable div instead of a button or linkKeyboard, screen readerUse a native button or a
outline: none with no replacementEveryone navigating by TabProvide a visible focus style of your own
Field label only in the placeholderScreen readers, cognitive loadAn explicit label for
Light grey text on whiteLow-vision users, anyone in sunlightRaise contrast to 4.5:1
Headings picked by font sizeScreen-reader navigationOrder levels by meaning, set size in CSS
Modal with no focus trap and no EscapeKeyboard usersKeep focus inside, close on Escape, return focus afterwards
Meaning conveyed by colour aloneColour-blind usersAdd text, an icon or a label
Page language not declaredScreen readersSet the language attribute on the root element
Video autoplaying with soundAlmost everyoneDisable autoplay, provide controls

Accessibility and SEO: where they overlap

The overlap is real but should not be turned into a ranking promise. What genuinely coincides is document structure:

  • Ordered headings help a screen reader and a crawler understand structure in the same way.
  • Image descriptions serve accessibility and are the only way search can interpret a picture; how to write them is covered in image optimisation.
  • Meaningful link text instead of "read more" benefits both.
  • Speed and layout stability are part of the experience, and their metrics are covered in the Web Vitals guide.

What accessibility does not do: it will not lift your rankings on its own and it does not replace work on content. Treating it as an SEO tactic is a route to disappointment.

Overlap diagram: document structure, image descriptions and speed serve both assistive technology users and search crawlers
The overlap between accessibility and search is document structure, descriptions and speed; everything else belongs to one side only.

Frequently asked questions

Is installing an accessibility widget enough?

No. The overlay restyles the same markup and does not repair the cause: missing descriptions, elements unreachable by keyboard, unlabelled fields. It can make sense as a supplement, or where such a version is formally expected, but it does not replace the underlying work.

Where do I start on a tight budget?

With the keyboard and contrast. Walk a key scenario with Tab and raise text contrast — the two cheapest fixes with the most visible effect. Field labels and image descriptions come next.

Should I build a separate version for blind users?

No, and it is the worst available option. A separate version almost always falls behind on content and dies first at the next redesign. The main version is the one that has to be accessible.

How do I know whether the mandatory rules apply to us?

It depends on jurisdiction, sector and whether you serve the public, and the wording is worth checking with a lawyer rather than inferred from a neighbouring site. What is stable across regimes is the reference point: WCAG level AA.

The scanner says 100 out of 100. Does that mean we are fine?

No. That score only means no formalisable violation was found. Whether descriptions are meaningful, whether focus order is logical and whether error messages make sense are not assessed by automation — they are checked by hand.

Will accessibility ruin the design?

Not if it is handled during design. It becomes expensive and visible only when bolted onto a finished interface: visible focus, contrast and target sizes then have to be squeezed into an already approved layout.

Accessibility checklist

  • A key scenario can be completed with the keyboard alone, with focus always visible.
  • Text contrast is at least 4.5:1, including buttons, hints and disabled states.
  • Informative images have a meaningful alt; decorative ones have an empty attribute.
  • Every form field is associated with a label, not just a placeholder.
  • Form errors explain cause and remedy in text, not by colour alone.
  • Headings follow their levels and there is one h1 per page.
  • The page language is declared.
  • Modals trap focus, close on Escape and return focus to the trigger.
  • At 200% zoom there is no horizontal scrolling and no overlap.
  • Touch targets on mobile are at least 44 pixels.
  • An automated audit has been run and the four manual checks completed.
  • Any accessibility widget in place is treated as a supplement, not as the result.

Check your website right now

Audit your site's SEO →
More articles: SEO
SEO
Website Migration Checklist: Avoid SEO and Downtime Pitfalls
16.03.2026 · 401 views
SEO
Sitemap XML: Structure, Limits, Generation and Validation
16.03.2026 · 363 views
SEO
robots.txt Guide: Syntax, Rules, Testing and Ready-Made Files
16.03.2026 · 337 views
SEO
Subdomain vs Subdirectory for SEO: Which Structure Wins?
16.03.2026 · 304 views