Easy WCAG
Fix common accessibility gaps in the live HTML. Audit what still needs a human. Add your own rules. No overlay, no CDN, article source unchanged. Super Users can see every fix on the page they visit.
30-day money-back guarantee
Changelog — Easy WCAG
Version 1.1.3: 03 October 2026
- Download Key support: enter your JoomlaX download key in the plugin's update site (System - Update Sites) so updates install from Joomla's Update button
Version 1.1.2: 03 October 2026
- Pages with many unclosed links no longer slow down. The worst-case test page now takes 0.03 seconds instead of over 30
- Removed a PHP notice on Joomla 4.4
- Invalid characters inside an HTML attribute no longer stop a fix from running
- New time limit and page size limit. Pages over either limit are sent exactly as rendered
- Updating switches the HTML comment summary off on existing sites. You can switch it back on in the plugin settings
Version 1.1.1: 03 October 2026
- Fixed blank pages that could appear when Fix mode was on
- The page source report is now off by default and shown only to administrators
Version 1.1.0: 10 August 2026
- Safe live HTML fixes plus a WCAG-mapped checklist on the rendered page
- Checklist: duplicate IDs, broken ARIA references, unnamed controls, heading outline, page title and lang
- Review flags for filename alt, placeholder labels, and generic control names
- Each fix and each checklist item can be switched on or off
- Custom rules: report, find and replace, regex, or add an attribute
- Developers can add extra PHP rules without forking the plugin
- Super User debug panel on the frontend lists fixes and findings. Visitors never see it
- Exclude components, URLs, menu items, and simple selectors
- HTML comment summary includes FIXED, REPORT, and REVIEW
- No overlay, no CDN, article source stays unchanged
Version 1.0.0: 09 August 2026
- Initial public release of Easy WCAG for Joomla 4, 5, and 6
- System plugin runs after the page is built and leaves article source unchanged
- Modes: Fix, Report only, and Off
- Rules: html lang, missing image alt, iframe title, empty links and buttons, new-window rel and hint, unlabelled inputs, skip to content
- Optional positive tabindex rewrite (off by default)
- Exclude components and URL fragments
- HTML comment summary, optional marks on changed tags
- No jQuery and no CDN
System plugin
What Easy WCAG is
After Joomla builds the page, Easy WCAG applies safe accessibility fixes to the HTML sent to the browser: missing lang, image alt, iframe titles, empty controls, new-window hints, form labels, and a skip link when a main landmark exists. It also runs a focused checklist (duplicate IDs, broken ARIA, unnamed controls, heading outline, title and lang) and lets you add your own report, replace, or attribute rules.
Article source stays unchanged. No visitor overlay. No CDN script, so Google PageSpeed stays cleaner than overlay widgets. Super Administrators can open a debug panel on the page they visit. Every fix and checklist item can be switched off. Pair it with Easy Accessibility when visitors need their own text size, contrast, or Read Mode.
Image alt
Adds alt from the filename when the attribute is missing.
Iframe title
Adds a title from the embed host or file name.
Empty controls
Icon-only links and buttons get an aria-label.
New window
Adds rel="noopener noreferrer" and a screen-reader hint.
Form labels
Unlabelled inputs get aria-label from placeholder or name.
Skip to content
Injects a skip link when a main landmark exists and none is present.
html lang
Sets lang from the active site language when it is missing.
Audit reports
Duplicate IDs, broken ARIA refs, unnamed controls, heading outline, title and lang.
Your own rules
Add report, find/replace, regex, or attribute rules in the plugin. Developers can drop in PHP classes.
Super User panel
Logged-in Super Administrators see Fixed, Checklist, Needs review, and Switched off. Visitors never see it.
Fix, Report, or Off
Fix rewrites the live HTML. Report only lists what would change. Off pauses without uninstalling.
Every switch is yours
Turn off any fix or checklist item. Exclude components, URLs, menu items, or simple selectors.
Honest limits
What it is not
Easy WCAG does not claim WCAG AA certification. Pair it with Easy Accessibility for visitor preferences, and with a real review when you need a compliance claim.
- Does not rewrite heading order or rename IDs
- Does not fix colour contrast or font sizes
- Does not invent meaningful alt text beyond the filename
- Does not claim WCAG AA, and does not replace a visitor preference toolbar
How to read the examples
-
Demo
Live HTML after Easy WCAG runs. Look for
data-ewcagwhen Mark fixes is on. View source for FIXED / REPORT / REVIEW. - Source HTML What was saved in the article, before the plugin ran.
- Settings System > Plugins > System - Easy WCAG. Choose Fix, Report only, or Off. Super User debug panel shows the same list on the page.
This image has no alt attribute in the article. Easy WCAG adds one from the filename.
![]()
<img src="/images/demo/demo-logo.webp" width="180" height="48">
Iframes need a title for screen readers. This local embed has none in the article. Easy WCAG adds one. No YouTube or third-party player is loaded.
<iframe src="/images/demo/ewcag-sample-embed.html" width="100%" height="180"></iframe>
Links with target="_blank" get rel="noopener noreferrer" and a screen-reader hint.
<a href="https://joomlax.com" target="_blank">JoomlaX website</a>
This input has a placeholder only. Easy WCAG adds aria-label from the placeholder.
<form action="#" method="get"><input type="search" name="q" placeholder="Search the demo"></form>
Easy WCAG never renames IDs. It reports the duplicate so you can fix the template or module output.
<input id="ewcag-dup" name="a" type="text"> <input id="ewcag-dup" name="b" type="text">
aria-describedby points at an id that does not exist. Easy WCAG reports it. It does not invent a target element.
<input type="email" aria-describedby="ewcag-missing-help" placeholder="Email">
Heading levels are not rewritten. A jump is reported as a possible structural issue, not a WCAG failure.
Demo section
<h2>Demo section</h2> <h4>Skipped heading level</h4>
A plugin custom rule targets span.ewcag-custom-plain and adds role="status" when it is missing.
Live status
<span class="ewcag-custom-plain">Live status</span>