Title: Lumadro Accessibility Ledger
Author: Lumadro
Published: <strong>September 30, 2026</strong>
Last modified: September 30, 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.1.zip)

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

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

## Description

Lumadro Accessibility Ledger keeps the record that accessibility work usually leaves
scattered
 across emails and memory. It 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 whether AI drafted it.

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, wherever the 
seller is based. Its technical reference is WCAG 2.1 level AA, through EN 301 549.
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 finds
 specific
problems, helps you fix them properly, and documents the effort in a form you can
show someone, with the tool’s own limits written into it.

**This is not an accessibility overlay.** It adds nothing to the front end and
 
does not change what visitors see at runtime. It changes the underlying content.

#### The ledger

 * Every accepted change is recorded with the date, the text before and after,
    
   the person who approved it, the AI provider that drafted it (or that a person
   wrote it), and whether the reviewer edited the draft.
 * The ledger is append-only. An undo is added as a new entry; nothing is erased.
 * When a later scan of the same page no longer finds a problem, the ledger
    records
   it as “no longer detected” with the date, whether it was fixed here or anywhere
   else. It is never presented as proof of a fix: the content may simply have changed.
 * A downloadable report lists open findings grouped by success criterion, each
   
   with its page, and counts confirmed failures apart from items flagged for a person
   to review. It includes the full change log and a section on what the checks did
   not cover. It will never say the site is fully conformant, fully accessible or
   legally compliant.

#### How it finds problems

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

 * 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 on them. It sees what visitors see: computed colour contrast, and
forms and content that JavaScript builds after the page loads, such as a block checkout.
It then probes what axe-core cannot: whether the page scrolls sideways at 320 pixels
wide (reflow), whether elements show a visible change when they take focus, whether
clickable elements can be reached from the keyboard, and whether content that opens
on focus closes with Escape. These are listed for review, never as proven failures.
Each run starts with the home page and shop pages, then pages never checked, then
those checked longest ago, so repeated runs work through the whole site; the browser
check screen lists pages by when they were last checked, and the report says how
many never were. Nothing is sent to any other service.

#### How it fixes them

AI drafts the part that is slow to write by hand: alt text. It uses your own
 provider
key through WordPress core’s AI Client, so there are no credits and no per-fix charges;
you pay your provider directly, at cost, for any volume. Scanning, the browser check
and the reports work with no AI configured at all.

Fixes go where the problem is. 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, and if the library already describes that image well, its
description is offered without an AI call.

#### 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
   choice on that item: tick “Replace the text a person wrote” and accept. 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 weekly or monthly re-scans, with a dated scan history you can add to
   the downloaded report
 * JSON export of the report and CSV export of the change log
 * A drafted accessibility statement written from the same evidence
 * A network overview of every site’s evidence on multisite
 * A portfolio of your separate sites: each exports a summary file, and one
    site
   shows them all in one table (no site contacts another)

Pro uses the same bring-your-own-key AI, with no credits or per-fix charges.

#### 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 adds partial checks of a few more on the pages it loads, and the report
says exactly which and how far. The rest need a person, and the plugin lists every
one of them by name on its “Coverage and limits” screen and inside every report.
Passing the automated checks does not mean your site conforms.

We would rather tell you that than let you believe otherwise.

### 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. No data is sent to the provider while scanning, running the browser check
or building reports, and nothing is sent at all if no provider is connected. The
provider’s own terms of service and privacy policy apply; see your provider’s website(
for example https://openai.com/policies/, https://www.anthropic.com/legal or https://
policies.google.com/).

When WordPress’s AI Client is missing or has no provider set up, and the
 separate
AI Services plugin is installed with a provider, drafting uses that instead. It 
sends the same text (the image’s file name, caption, description, current alt text
and the page context above) but not the image itself, only when you ask for drafts,
to the provider configured in AI Services, 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 browser check and the site scan contact no outside service: the scan only
 fetches
your own site’s pages, and axe-core runs in your own browser.

### 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. This needs no AI and
    no setup.
 3. Run the browser check from its screen to add contrast and JavaScript-built content.
    For a shop, put a product in your cart first.
 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 before accepting it, then download the report from the “Report”
    screen.

## FAQ

### Is this an accessibility overlay?

No. Overlays modify the page for visitors at runtime and are widely criticised by

accessibility practitioners for not achieving conformance. This plugin changes the
content itself and adds nothing to the front end.

### 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 finds and helps fix specific technical failures
and documents the work. That documentation may be useful evidence of effort. It 
is not a certificate and it is not legal advice.

### What is in the report?

The date and scope of the last scan and browser check, open findings grouped by

success criterion and page, the complete change log, and the criteria that were 
not checked, with the reason. You can download it as Markdown; Pro adds JSON and
a CSV of the change log.

### Does it check colour contrast?

Partly, through the browser check. It only covers the pages it loads, in one
 desktop-
width view, and text over images or gradients is listed for you to check by eye.

### Does it check keyboard access and visible focus?

Partly. The browser check focuses up to 60 elements on each page it loads and
 lists
those that show no visible change, and lists elements that look clickable but cannot
take keyboard focus. It does not press the Tab key, so keyboard traps and focus 
order still need a person using a keyboard, and it cannot tell whether a focus style
is easy to see.

### Does it check forms built by JavaScript?

The site scan does not: it reads your stored content. The browser check does,
 once
the page has finished loading. It does not fill forms in or step through a checkout,
and a WooCommerce checkout only shows its form when the cart has something in it,
so add a product to your cart first.

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

Not unless you explicitly choose to, one item at a time, in the media library
 or
in a post. (Pro’s bulk accept cannot touch text a person wrote either.)

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

No. axe-core is bundled with the plugin and runs in your browser, on your own
 site’s
pages. Results go only to your own site.

### Who can use it?

Editors and administrators. Accepting, rejecting or undoing a change also needs

permission to edit that particular post or image, so a draft for content you cannot
edit is not shown to you. Settings are for administrators only.

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

By default the change log and scan history stay in your database, because they
 
are your evidence of the work. An administrator can tick “Delete all Lumadro Accessibility
Ledger data when the plugin is deleted” on the dashboard to remove them on deletion.
Alt text already written is never removed: it is part of your content. On multisite
each site decides for itself.

### What does it cost to run?

You pay your AI provider directly for the drafting you use, and nothing to us for

it. There is no credit system.

## 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.1

 * First public release.

## Meta

 *  Version **0.1.1**
 *  Last updated **13 hours ago**
 *  Active installations **Fewer than 10**
 *  WordPress version ** 6.2 or higher **
 *  Tested up to **7.1.2**
 *  PHP version ** 7.4 or higher **
 * Tags
 * [accessibility](https://wordpress.org/plugins/tags/accessibility/)[accessibility checker](https://wordpress.org/plugins/tags/accessibility-checker/)
   [Alt Text](https://wordpress.org/plugins/tags/alt-text/)[audit](https://wordpress.org/plugins/tags/audit/)
   [wcag](https://wordpress.org/plugins/tags/wcag/)
 *  [Advanced View](https://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/)