Title: Lumadro Accessibility Ledger
Author: Lumadro
Published: <strong>Gwynngala 30, 2026</strong>
Last modified: Hedra 2, 2026

---

Search plugins

![](https://ps.w.org/lumadro-accessibility-ledger/assets/banner-772x250.png?rev=
3720122)

![](https://ps.w.org/lumadro-accessibility-ledger/assets/icon.svg?rev=3720122)

# Lumadro Accessibility Ledger

 By [Lumadro](https://profiles.wordpress.org/lumadro/)

[Download](https://downloads.wordpress.org/plugin/lumadro-accessibility-ledger.0.1.2.zip)

 * [Details](https://cor.wordpress.org/plugins/lumadro-accessibility-ledger/#description)
 * [Reviews](https://cor.wordpress.org/plugins/lumadro-accessibility-ledger/#reviews)
 *  [Installation](https://cor.wordpress.org/plugins/lumadro-accessibility-ledger/#installation)
 * [Development](https://cor.wordpress.org/plugins/lumadro-accessibility-ledger/#developers)

 [Support](https://wordpress.org/support/plugin/lumadro-accessibility-ledger/)

## Description

Lumadro Accessibility Ledger finds specific WCAG 2.1 AA failures, helps you fix

them in your actual content, and writes every step into an append-only ledger you
can export: each finding with the success criterion it fails, each change with its
before and after, the date, who approved it, and where the text came from.

The European Accessibility Act has applied since 28 June 2025 to many products
 
and services sold to consumers in the EU, online shops among them. Its technical
reference is WCAG 2.1 level AA. When someone asks what you have done about accessibility,
the answer should be a document, not a feeling.

**It does not make your site legally compliant, and no plugin can.** It is
 **not
an overlay**: it adds nothing to the front end and changes the underlying content,
not what visitors see at runtime.

#### The ledger

 * Every accepted change is recorded with the date, the text before and after,
    
   who approved it, and where the text came from: the AI provider that drafted it,
   the image’s existing media library alt text, or a person.
 * Append-only: an undo is added as a new entry; nothing is erased.
 * When a later scan no longer finds a problem, the ledger records it as “no
    longer
   detected”, never as proof of a fix: the content may simply have changed.
 * A downloadable report lists open findings by success criterion and page,
    counts
   confirmed failures apart from items for a person to review, and includes the 
   change log and what the checks did not cover. It never says the site is conformant,
   accessible or compliant.

#### How it finds problems

**Site scan.** Reads every published post, page and library image in the
 background,
and loads each published page once to check what the theme adds:

 * Images with no alt attribute, and alt text that is really a file name
 * Links and buttons with no accessible name, including icon-only ones
 * Form fields with no label, and frames with no title
 * Headings that skip a level, and pages with no h1
 * A missing or malformed page language, and missing or placeholder page titles
 * Data tables with no header cells, and positive tabindex values

**Browser check.** Loads your pages in your own browser tab and runs the open
 source
axe-core engine: computed colour contrast, and content JavaScript builds after loading,
such as a block checkout. It then probes sideways scrolling at 320 pixels wide, 
elements with no visible change on focus, clickable elements a keyboard cannot reach,
and content opened on focus that Escape does not close. These are listed for review,
never as proven failures. Each run starts with the home and shop pages, then pages
never checked, so repeated runs cover the site.

#### How it fixes them

AI drafts alt text using your own provider key through WordPress core’s AI
 Client:
no credits and no per-fix charges; you pay your provider directly. Scanning, the
browser check and the reports need no AI at all.

A library image’s alt text is used wherever it is placed from then on. An image

already placed in a post is fixed in that post, with a normal post revision.

#### Nothing changes without you

 * A draft is only a draft until you accept it, and you can edit it first.
 * **Text a person wrote is never replaced silently.** Replacing it needs a
    deliberate
   tick on that item. In a post, an image someone marked decorative (alt=””) counts
   as a person’s decision too.
 * Every change can be undone. If someone has edited the text since, the undo
    refuses
   rather than discarding their edit.

#### Lumadro Accessibility Ledger Pro

The free plugin is complete for fixing and recording work one item at a time.
 Pro,
a separate paid plugin, adds bulk accept and reject (still never replacing text 
a person wrote), scheduled re-scans with a dated history, JSON and CSV exports, 
a drafted accessibility statement, a multisite network overview and a portfolio 
of your separate sites.

#### How much of WCAG this covers

The site scan checks 10 of the 50 WCAG 2.1 level A and AA success criteria; the

browser check partly checks a few more on the pages it loads. The rest need a person,
and the plugin names every one on its “Coverage and limits” screen and in every 
report. Passing the automated checks does not mean your site conforms.

### External services

**Your AI provider (optional).** Drafting alt text uses the provider you connect

yourself under Settings > Connectors, through WordPress core’s AI Client. Only when
you ask for drafts, the plugin sends the provider the image (the file from your 
media library, or its public URL on your own site), the image’s file name, caption,
description and current alt text, and the title, language and nearby text of the
published page it appears on. Nothing from password-protected or private content
is sent, nor files in WooCommerce’s or Easy Digital Downloads’ protected download
folders (the lumadro_ledger_private_upload_folders filter adds others). Nothing 
is sent while scanning, running the browser check or building reports, or if no 
provider is connected. The provider’s own terms and privacy policy apply (for example
https://openai.com/policies/, https://www.anthropic.com/legal or https://policies.
google.com/).

If WordPress’s AI Client has no provider and the separate AI Services plugin
 has
one, drafting uses that instead, sending the same text but not the image, only when
you ask for drafts, under that provider’s terms.

**No licensing or update service.** This plugin contains no licensing code and
 
contacts no licensing or update service; it updates from WordPress.org like any 
other plugin.

The site scan only fetches your own site’s pages, and axe-core runs in your own

browser; neither contacts an outside service.

### Third-party libraries

 * axe-core 4.13.0 by Deque Systems, Mozilla Public License 2.0.
    Source: https://
   github.com/dequelabs/axe-core Bundled unmodified in assets/vendor/axe-core and
   loaded only into your own pages during a browser check started from the admin
   screen.

## Screenshots

[⌊The change log: every change with its before, after, date, approver and source.⌉⌊
The change log: every change with its before, after, date, approver and source.⌉[

The change log: every change with its before, after, date, approver and source.

[⌊The report, with coverage limits inside the document.⌉⌊The report, with coverage
limits inside the document.⌉[

The report, with coverage limits inside the document.

[⌊The review screen, with provenance warnings on text a person wrote.⌉⌊The review
screen, with provenance warnings on text a person wrote.⌉[

The review screen, with provenance warnings on text a person wrote.

[⌊The browser check running on a checkout page.⌉⌊The browser check running on a 
checkout page.⌉[

The browser check running on a checkout page.

[⌊The coverage screen, listing all 50 criteria and their status.⌉⌊The coverage screen,
listing all 50 criteria and their status.⌉[

The coverage screen, listing all 50 criteria and their status.

## Installation

 1. Install and activate the plugin.
 2. Open Lumadro Accessibility Ledger and scan the whole site. No AI or setup needed.
 3. Run the browser check. For a shop, put a product in your cart first so the checkout
    form is checked.
 4. To draft alt text, add your own provider key under Settings > Connectors (WordPress
    7.0 or later), then draft from the review screen.
 5. Review every draft, then download the report from the “Report” screen.

## FAQ

### Does it make my site EAA or ADA compliant?

No, and be suspicious of anything that says it does. Compliance is a legal
 judgement
about your whole service. This plugin documents specific technical fixes; that may
be useful evidence of effort. It is not a certificate and it is not legal advice.

### Does it check colour contrast, keyboard access and focus?

Partly, through the browser check, on the pages it loads, in one desktop-width
 
view. Text over images is listed for you to check by eye. It does not press the 
Tab key, so keyboard traps and focus order still need a person.

### Will it overwrite alt text I wrote myself?

Not unless you explicitly choose to, one item at a time. Pro’s bulk accept
 cannot
touch text a person wrote either.

### Does the browser check send my pages anywhere?

No. axe-core is bundled and runs in your browser, on your own site’s pages.

### Who can use it?

Editors and administrators can read the change log and download the report,
 which
cover the whole site, and review drafts for content they can edit. Scanning, drafting,
the browser check and settings are for administrators.

### What happens to my data if I delete the plugin?

By default the change log and scan history stay, because they are your
 evidence.
An administrator can choose to delete them on deletion. Alt text already written
is never removed.

## Reviews

There are no reviews for this plugin.

## Contributors & Developers

“Lumadro Accessibility Ledger” is open source software. The following people have
contributed to this plugin.

Contributors

 *   [ Lumadro ](https://profiles.wordpress.org/lumadro/)

[Translate “Lumadro Accessibility Ledger” into your language.](https://translate.wordpress.org/projects/wp-plugins/lumadro-accessibility-ledger)

### Interested in development?

[Browse the code](https://plugins.trac.wordpress.org/browser/lumadro-accessibility-ledger/),
check out the [SVN repository](https://plugins.svn.wordpress.org/lumadro-accessibility-ledger/),
or subscribe to the [development log](https://plugins.trac.wordpress.org/log/lumadro-accessibility-ledger/)
by [RSS](https://plugins.trac.wordpress.org/log/lumadro-accessibility-ledger/?limit=100&mode=stop_on_copy&format=rss).

## Changelog

#### 0.1.2

 * Fixed: the browser check no longer flags inactive items of tab lists, menus and
   similar groups (such as WooCommerce’s product tabs) as unreachable by keyboard
   when another item of the group is in the Tab order, the pattern where the arrow
   keys move between items. The report says this is assumed, not tested.
 * Fixed: browser-check results are labelled “Browser check” on the Findings screen.
 * The dashboard names pages a scan could not load, and links to the findings.
 * Plainer wording on the dashboard and review screens.
 * The report shows the titles of public pages and images, and approvers’ chosen
   display names, next to their ids.
 * Open findings and “no longer detected” entries on content that is not confirmed
   as public show only its type and id, not its address or details. The change log
   still records the alt text before and after each change. Markup from the browser
   check, which runs while you are signed in, stays on the Findings screen and is
   left out of the report and exports.

#### 0.1.1

 * First public release.

## Meta

 *  Version **0.1.2**
 *  Last updated **5 dydh ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.2 or higher **
 *  Tested up to **7.1.3**
 *  PHP version ** 7.4 or higher **
 *  Language
 * [English (US)](https://wordpress.org/plugins/lumadro-accessibility-ledger/)
 * Tags
 * [accessibility](https://cor.wordpress.org/plugins/tags/accessibility/)[accessibility checker](https://cor.wordpress.org/plugins/tags/accessibility-checker/)
   [Alt Text](https://cor.wordpress.org/plugins/tags/alt-text/)[audit](https://cor.wordpress.org/plugins/tags/audit/)
   [wcag](https://cor.wordpress.org/plugins/tags/wcag/)
 *  [Advanced View](https://cor.wordpress.org/plugins/lumadro-accessibility-ledger/advanced/)

## Ratings

No reviews have been submitted yet.

[Your review](https://wordpress.org/support/plugin/lumadro-accessibility-ledger/reviews/#new-post)

[See all reviews](https://wordpress.org/support/plugin/lumadro-accessibility-ledger/reviews/)

## Contributors

 *   [ Lumadro ](https://profiles.wordpress.org/lumadro/)

## Support

Got something to say? Need help?

 [View support forum](https://wordpress.org/support/plugin/lumadro-accessibility-ledger/)