WordPress accessibility plugin vs fixing the theme: which one actually works
A WordPress accessibility plugin adds a toolbar or a script on top of your pages, while fixing the theme changes the code your pages are made of. A plugin is quick and cheap to install, but it cannot repair most of what a screen reader or keyboard user hits: missing labels, unnamed buttons, broken focus order, empty links. Fixing the theme, or the content in it, repairs the source of the error. For most small business sites the right answer is to fix the theme and content first, and to use a plugin only for a narrow job such as a skip link or a scan inside the dashboard. Here is how the two compare, what each plugin type really does, and how to decide.
WordPress accessibility plugin vs fixing the theme: side by side
| Overlay or toolbar plugin | Scanner plugin | Fixing the theme and content | |
|---|---|---|---|
| What it does | Adds a button with text size, contrast and similar controls; may try to patch pages in the browser | Scans in the dashboard and lists errors | Edits templates, CSS, menus, forms and content |
| Fixes the source code? | No, it works on top of it | No, it only reports | Yes |
| Typical cost | A monthly or yearly subscription | Free tier or paid plan | Your time or a developer's hours |
| Effort | Minutes | Minutes | Hours to days, once |
| Helps keyboard and screen reader users? | Rarely beyond what they already have | Only after you fix what it finds | Yes: this is what they use |
| Risk | Adds third-party code to every page; claims about "compliance" have drawn regulator action | Adds plugin weight; may flag only a subset of errors | A theme update can undo changes unless you use a child theme |
What an accessibility plugin for WordPress really does
"WordPress accessibility plugin" covers three different things, and mixing them up is how owners overspend:
1. Overlay or widget plugins
These add a floating icon. Visitors click it to enlarge text, change contrast or pause animation. Some also run scripts that try to add missing labels in the browser after the page loads. Disability advocacy groups have objected for years, and the Overlay Fact Sheet, signed by hundreds of accessibility practitioners, explains why. Screen reader and keyboard users already have their own tools, and a script that guesses labels cannot know what your button does. In January 2025 the US Federal Trade Commission ordered the overlay company accessiBe to pay $1 million over claims about its tool, which shows regulators are watching the claims. For alternatives, see accessiBe alternatives and UserWay alternatives.
2. Scanner plugins
These run checks inside the WordPress dashboard and list issues on your pages. They are useful for finding problems, but they fix nothing and see a subset of errors, the same ones free browser tools such as WAVE and axe find. Treat one as a convenience, not a repair. The five free tools in website accessibility checker free do the same job without adding code to your site.
3. Small helper plugins
Some plugins do one real thing: add a skip-to-content link, show keyboard focus outlines, or add a field for image descriptions in the media library. These can be fine because they change the markup rather than layer a widget over it. Read what any plugin changes in the page source before trusting it.
What fixing the theme looks like
Most of the errors scanners find on WordPress come from a short list of causes, each with a direct fix:
- Low contrast text. Change theme colours or add CSS to darken the text or button background until the pair reaches 4.5 to 1 (3 to 1 for large text). Check each pair in the WebAIM Contrast Checker.
- Images with no description. Fill in the Alt Text field in the media library for each meaningful image; leave decorative images empty. This is content work, no plugin needed.
- Icon links and buttons with no name. Social icons and the menu toggle need visible text or an aria-label. This is a template edit, often one line in the header file or the page builder's settings.
- Form fields without labels. Contact form plugins have a setting to show real labels instead of only placeholders.
- Missing focus outline. Many themes remove the outline with CSS. Restore it so keyboard users can see where they are.
- Heading order. Use h1 once, then h2 and h3 in order. Use headings for structure, not for size.
- Page language and title. The language attribute is normally set from the WordPress site language; check the setting.
Make theme edits in a child theme, or in the page builder's own settings, so a theme update does not erase them. Keep a note of each change and its date.
Does a plugin or a theme fix lower the risk of a complaint?
Complaints and demand letters point to specific barriers on specific pages. A widget does not remove those barriers, so it does not change what a person using a screen reader meets. Fixing the barrier does. No plugin or fix can guarantee that nobody will complain, and we are not lawyers. What you can show is a dated scan, a fix log and a statement; see the accessibility statement template.
When a plugin is a fair choice
- You want a dashboard scanner as a monthly reminder, and you will act on what it lists.
- You need a skip link or focus outline and your theme does not offer one.
- You want a text-size control for your own visitors as an extra, not instead of fixing the code.
When fixing the theme is the better path
- Your errors are contrast, unnamed buttons, unlabeled fields or missing alt text. That is almost always the case.
- You have a form, booking or checkout that people must use.
- You have received a complaint and want records that match the code.
- You want to publish a statement you can stand behind.
What does each route cost?
A plugin subscription is a recurring fee, and it recurs forever for a result that does not repair the source. Fixing the theme is mostly one-off. If you do it yourself, it costs your time. With a developer, accessible.org lists fix labour at $100 to $200 an hour, and Linnflux lists code fixes starting at $2,900 for a small site. A written list of exactly what to change, which you hand to your own web person or apply yourself, is the cheapest way to pay for expertise once. See website accessibility remediation cost for hours per error type.
A simple plan for a WordPress site
- Deactivate any overlay plugin for a day and scan with it off, so you see the real state of the code.
- Scan home, contact, booking or checkout and one inner page with axe or WAVE. Save the counts and date.
- Fix contrast in the theme's colour settings or a child theme's CSS.
- Fill in image descriptions in the media library for images that carry meaning.
- Name icon links and the menu button; label form fields.
- Tab through the site and restore a visible focus outline if it is gone.
- Rescan, record the counts, and publish a short statement.
- Recheck monthly, and after every plugin, theme or builder update.
How to tell what a plugin is doing to your pages
Open your site in a browser, choose "view page source", and search for the plugin's name or script address. Overlays load an external script on every page and often add a button near the bottom corner. Then scan the page with the plugin deactivated and again with it active. If the error counts are the same, it is not fixing your source. If a plugin claims to fix issues "automatically", ask exactly which rules, and test a keyboard walk with it on and off. A plugin that helps leaves the page easier to use by keyboard and with a screen reader, not only different to look at.
Page builders and accessibility
Elementor, Divi, WPBakery and the block editor each add their own markup. Common builder problems are headings used for size rather than structure, icon boxes and buttons with no text, sliders that move without a pause control, and menus that do not open from the keyboard. Most builders have settings for the HTML tag of a heading, an aria-label or link text, and a slider's autoplay. Check these settings before you add a plugin. If a builder widget cannot be made accessible, replace it with a plainer block for that part of the page.
Questions to ask before installing any accessibility plugin
- Does it change my page markup, or only add a layer on top?
- What does it send to the vendor, and does it load a script from their servers on every page?
- What does it cost per year, and does the fee rise with traffic?
- What happens to my site if I stop paying or the vendor shuts down?
- Does the vendor make claims about legal compliance that I would have to repeat?
Frequently asked questions
Is there a WordPress plugin that makes my site ADA compliant?
No plugin can make a site compliant by itself. Plugins can help find or patch a few things, but the errors live in your theme, plugins and content.
Are accessibility overlay plugins bad?
Many accessibility professionals say they do not fix the underlying problems and can get in the way of people's own assistive tools. The FTC's 2025 action against accessiBe concerned the claims about one such tool.
What is the best free accessibility plugin for WordPress?
A scanner or helper plugin can be useful, but check what it changes in the page. A free browser extension such as WAVE or axe gives the same scan with no code added to your site.
Can I fix accessibility without a developer?
Often yes for content: alt text, headings, colours, form labels. Template-level edits may need someone comfortable with HTML and CSS.
Will a theme update undo my fixes?
It can if you edited the parent theme. Use a child theme or the builder's custom CSS, and rescan after every update.
Which is cheaper, a plugin or fixing the theme?
A plugin costs less to start and more over years, and it does not repair the source. Fixing the theme costs effort once.
Audit prices for WordPress: WordPress accessibility audit.
Sources
- Overlay Fact Sheet (overlayfactsheet.com), statement signed by accessibility professionals.
- U.S. Federal Trade Commission, order against accessiBe (January 2025).
- W3C, Web Content Accessibility Guidelines 2.1 and 2.2; WebAIM, WAVE and Contrast Checker; Deque, axe.
- accessible.org and Linnflux pricing pages (checked 2026-11-03).