Changelog

What changed, release by release.

The release history of the reala11y WordPress plugin — every new check, fix, and improvement as it shipped. The same changelog travels with the plugin in its readme on WordPress.org.

v1.14.0 A colour fix that keeps your colour Latest

  • A one-click colour fix for the most common accessibility problem on the web. Low contrast is found on 83.9% of home pages (WebAIM Million 2026), and reala11y could already tell you when two theme-palette colours were too close together — but not what to do about it. Now it offers a colour, and applies it if you want it.
  • It keeps the colour you chose. The suggestion is your own colour, darkened or lightened just far enough to pass — not a different colour from the palette. We tried that first and measured it: the nearest passing palette colour was, on average, a completely different colour, because a palette is a dozen colours spread apart rather than a range of one. Being told to replace your brand red with near-black is not a fix anyone accepts.
  • Applying sets it as a custom colour on that block — exactly what choosing “Custom” in the editor's colour picker does — so the editor and the page agree afterwards. The change is logged and reversible like every other fix.
  • It declines rather than risk your content: if a post's block markup would not survive being re-saved unchanged, reala11y leaves it alone and says so, because editing it could alter more than the colour.

v1.13.0 Alt text that reaches the page

  • Fixed: alt text you save is now actually used on your pages. Saving alt text on the Alt text screen writes it to your Media Library — but an image already placed in a post keeps whatever alt it was inserted with, so the page did not change and the very same finding came back on the next scan. You did the work, reala11y said it had saved, and nothing improved.
  • New fix, “Use media library alt text”. Turn it on in Settings and reala11y fills in the missing alt on images as each page is served, using the description already saved against that image. Measured on a real install: an image reported as missing alt before turning it on, and no longer reported after.
  • It only ever adds alt text that is missing. An image you have described is left exactly as you wrote it, and an image you deliberately marked decorative — an empty alt — stays decorative, because announcing a description you chose to silence would be a regression, not a fix.
  • Images your Media Library has no description for are left alone rather than guessed at, and nothing else on the page is touched: across every page of a test site, the only difference was the added alt text.
  • Off by default, like every render-time fix, and reversible by switching it off. It costs nothing on pages where every image is already described.
  • The Alt text screen now says it saves to your Media Library, rather than “to the image”, and points you at the new setting.

v1.12.0 Suggested link text

  • Suggested link text, taken from the page the link opens. When reala11y flags a link that reads “read more” or “click here”, the fix box now opens with the title of the destination already filled in, ready to accept or edit. Vague link text was the most common finding on the sites used to build this — close to a quarter of everything reported — and it was the one fixable finding that offered you nothing: an empty box, once per link, with the answer left to you. Your site already knows where each link goes.
  • Nothing is generated and no AI key is involved, so this works on every install at no cost. The suggestion is simply the destination's own title.
  • It stays quiet rather than guessing. A link to another website, to a draft or private page, to an in-page anchor, or to a page whose title would make link text no better than “read more” gets no suggestion at all — a wrong suggestion accepted in one click is worse than none.
  • Links with no text whatsoever — the ones reported as having no accessible name — are offered the same title as their name.
  • As always, nothing is written until you click Apply, you can edit the wording first, and every change can be undone.

v1.11.0 Theme-independent link checking

  • Fixed: the repeated-link check no longer flags your theme's post dates. The check added in 1.10.0 was meant to leave alone any link your theme already identifies — a date sitting beside a distinct post title, for instance. On some themes it did not: Twenty Twenty-Four nests its post dates deeper than the check looked, so a stock blog archive reported six problems that were not yours to fix. It now recognises the post card itself rather than counting how deeply the markup is nested, so it works the same whatever theme you use.
  • Anthropic AI features now use Claude Sonnet 5 by default, with Claude Opus 5 as the opt-in upgrade. The previous default, Claude Haiku 4.5, is scheduled for retirement from October 15, 2026, and a model that stops answering would have broken the AI features for everyone using Anthropic. If you had chosen one of the older models yourself, reala11y still shows a cost estimate for it. OpenAI and Google Gemini are unchanged.
  • Tested with WordPress 7.1. Compatibility is now checked automatically against both the oldest WordPress this plugin supports and the newest it is tested with, so the versions listed are ones that are actually exercised rather than assumed.

v1.10.0 Repeated link text

  • New check: several links that read the same but go to different places. This is the pattern a blog archive creates by default — a row of posts each ending in the same “Read the full review” or “Continue reading”. Someone using a screen reader often navigates by pulling up a list of the links on a page, and there they see the same words repeated with no way to tell which is which.
  • It only reports links that nothing nearby identifies. If each link sits beside a distinct post title pointing to the same post — which is how most themes build an archive — the surrounding card already says where it goes, and the check stays quiet. Links repeated to the same destination are never reported either, since that is allowed and is not a naming problem.
  • Generic wording such as “read more” is still reported by the existing link-text check rather than by both, so one line of markup is not flagged twice.
  • The scanner now ships 26 checks in total; a WCAG 2.2 scan runs 25 of them.

v1.9.0 Palette contrast

  • New check: low contrast between theme colours. Low contrast is the most common accessibility problem on the web — the WebAIM Million 2026 study found it on 83.9% of home pages, more than any other issue — and until now reala11y could only spot it when both colours were set directly on an element, which is rare. It now also catches the case you are most likely to create: choosing a text colour and a background colour from your theme's palette in the editor that are too close together. It reads the actual colour values your theme publishes in the page, so it knows the real ratio rather than guessing.
  • The new check stays quiet when it cannot be sure. Colours it cannot read exactly — such as ones built with color-mix() — are skipped rather than guessed at, and if a section's background cannot be determined the text inside it is left alone. A warning you cannot reproduce is worse than no warning.
  • Fixed: text sized at exactly 18pt was measured against the stricter small-text contrast requirement instead of the large-text one, so it could be reported as failing when it actually passed.
  • The scanner now ships 25 checks in total; a WCAG 2.2 scan runs 24 of them (WCAG 2.2 removed the duplicate-ID criterion).

v1.8.1 Complete uninstall

  • Fixed: uninstalling reala11y now removes everything it created. Six settings stayed in your database after the plugin was deleted, and one scheduled task kept being triggered by WordPress on a site where reala11y no longer existed. Nothing was harmed by it, but a plugin you have removed should leave nothing behind. Database tables were already removed correctly. If you had previously uninstalled reala11y, installing and removing this version will clear the leftovers.
  • Includes everything from 1.8.0, which was tagged but never published.

v1.8.0 When a page cannot be read

  • New: reala11y now tells you when it could not see a page. reala11y checks the HTML your server sends and does not run your site's JavaScript, so a page that is assembled in the browser looks almost empty to it — and an almost empty page produces almost no findings. On the same page, a server-rendered version reported 5 issues and a browser-rendered one reported 1. When a page looks like its content is built by JavaScript, the Scans screen now says so and shows how little it could actually read, so a low issue count is never mistaken for a clean result.
  • The notice is deliberately hard to trigger. An ordinary WordPress page contains plenty of server-rendered markup and also loads plenty of scripts, so scripts alone never cause it; the page has to be genuinely empty of content. Checked against real theme output — home page, posts, search results and a 404 — none of which are flagged.
  • Documentation is clearer about the same limit in the ordinary case: anything a script adds after the page loads — a cookie banner, a slider, a modal, a single-page app — is not checked, even on pages that are otherwise rendered normally.

v1.7.0 What changed since last scan

  • New: see what changed since your last scan. Open the issues for a scan and reala11y now tells you what moved since the previous scan of that same page — how many issues are newly reported, how many are no longer reported, and how many are still there, with the exact elements behind each. An issue count on its own has no direction: forty issues today looks the same whether last week was forty or four. This is what catches a theme or plugin update quietly bringing back something you had already fixed.
  • Issues that stopped being reported are described as “no longer reported” rather than “fixed”. reala11y cannot tell whether you repaired an element or simply removed it from the page, so it says what it knows and leaves the judgement to you.
  • Issues you have dismissed are left out of the comparison, so something you have already reviewed and set aside is not announced as new every time the page is scanned.

v1.6.1 Backslashes preserved

  • Important fix — backslashes were being deleted from your posts. Applying any fix to a post removed every backslash in it, so a Windows path like C:\Users\alice became C:Usersalice, a regex in a code block like \d+ became d+, and LaTeX or escaped quotes lost characters too. Undo did not rescue it: undo saved through the same faulty step, so it deleted the backslashes a second time instead of putting them back. Both paths are fixed, and undo now restores the original content exactly. If a post of yours contains code, file paths or maths and a fix has been applied to it, compare it with the before/after on the Fixes screen.
  • Alt text saved from the Alt text screen had the same problem and lost backslashes on save. Fixed.

v1.6.0 Fixes that stay inside markup

  • Important fix — a fix could delete text from your posts. The “Remove positive tabindex” fix searched your whole page instead of only inside HTML tags, so a sentence that merely mentioned tabindex="5" had that text deleted from the paragraph. Posts about accessibility were the most likely to be affected. The fix now only ever touches real attributes, and prose is left alone. If you applied safe fixes to a post that discusses HTML attributes, check it against the before/after diff on the Fixes screen; every change is still reversible with Undo.
  • Fewer false positives. reala11y no longer reports problems inside markup the browser never displays: template blocks (used by block themes, page builders and many JavaScript libraries), elements with the hidden attribute, and elements hidden inline with display:none or visibility:hidden. One template alone could add four findings for images and links that were not on the page.
  • Content that is hidden visually but still read aloud — the standard screen-reader-text pattern, hidden="until-found", and anything inside aria-hidden — keeps being checked, because that content really does reach people.
  • New: reala11y now tells you when a check could not run. If a check fails on a particular page it is skipped so the rest of the scan still completes, but the Scans screen now says which check was skipped and that the list is incomplete. Previously a scan that ran 23 of 24 checks looked exactly like a clean one.

v1.5.0 The work list

  • A site-wide work list on the Site audit screen. Findings are grouped by rule rather than by page, so a single missing skip link in your theme reads as one job affecting twelve pages instead of twelve separate issues. Groups are ordered worst severity first, then by how many pages they touch, and a rule found on every page scanned is called out as likely coming from your theme or a template.
  • Export findings as CSV — one row per issue with the page it is on, ready to hand to a developer or track in a spreadsheet. Values scraped from your pages are escaped so a post title beginning with "=" cannot run as a formula when the file is opened.
  • Mute a rule you have already judged. Muted rules drop out of the work list but keep being found by every scan and keep appearing in the CSV export, listed separately with their own count. Muting is a triage tool: it does not fix anything.
  • Accessibility fixes to reala11y's own admin screens, found by running our scanner and axe-core against ourselves: no duplicate main landmark, full text contrast on de-emphasised rows, a 24×24 mute control, focus that follows a rule when you mute or unmute it (announced to screen readers), and every screen reflowing to a 320px viewport.

v1.4.1 Admin access fix

  • Fixes a bug in 1.4.0 that made every reala11y screen except the first answer with "Sorry, you are not allowed to access this page" until the one-time licensing screen was dismissed. The plugin now starts in its skipped, send-nothing state, so every screen keeps working immediately after updating. Opting in is still offered, and still entirely optional.

v1.4.0 Licensing foundation for Pro

  • Adds the Freemius SDK as the licensing foundation for the optional reala11y Pro add-on. Nothing is sent anywhere unless you explicitly opt in on the one-time screen after updating — "Skip" keeps everything local, permanently, and every feature of the free plugin works identically either way. A new Add-ons screen lists what Pro adds.
  • A small, dismissible note on reala11y's own screens (never elsewhere in your admin) may ask for a WordPress.org review after the plugin has completed at least ten scans over two weeks. One click dismisses it forever.

v1.3.0 ARIA validity and page-builder checks

  • Two new checks, 24 in total. ARIA validity: reala11y now flags roles that do not exist, abstract roles that were never meant to be used directly, ARIA attributes set to values outside their allowed range, roles missing a state they require, and aria-hidden placed on the page body or wrapped around something a keyboard user can still focus.
  • Page-builder widgets. Accordions, tabs, toggles, and icon-only buttons built with Elementor, Divi, or Beaver Builder are flagged for review when the page’s HTML carries no ARIA state or accessible name for them. These are review items, not errors: reala11y reads the HTML your server sends, and several page builders add the missing ARIA with JavaScript after the page loads. The check tells you where to look; it does not claim the control is broken.
  • A much longer FAQ on the WordPress.org listing: fix safety, performance, page-builder and theme compatibility, undoing a fix, Multisite, what data leaves your site, and the two usual causes of a scan stuck on “queued”.

v1.2.1 Optional support link

  • Added a “Buy me a coffee” support link on the Plugins screen and the plugin page — an optional donation; no data is sent.

v1.2.0 Whole-site scanning and fixing

  • Scan your whole site in one click. A new “Scan whole site” button queues a scan for every published post and page, and you can schedule recurring scans (daily or weekly) so new content keeps getting checked automatically.
  • Fix your whole site in one click. A new “Fix whole site” button applies every safe, code-level fix across all your published content at once. Each change is logged and reversible with one-click undo, and Safe Mode pauses every fix instantly.
  • Bulk alt text from the Media Library. See every image missing alt text in one place, then review and apply descriptions — optionally drafted with your own AI key — without hunting through individual posts.
  • Six new checks, 22 in total: iframe titles, data-table headers, video captions, empty headings, list structure, and adjacent links to the same destination.
  • Applied fixes now clear themselves from your list: when a fix resolves an issue, that issue leaves the active list automatically. Plus broader inline-fix coverage and an accessibility pass over the admin screens.

v1.1.0 Inline fixes

  • Fix issues inline, right where you see them. On a flagged issue — in the Issues list or the on-page checker — you can type and apply the fix in one step: image alt text, descriptive text for vague links, accessible names for icon-only buttons and links, and form-field labels.
  • Colour-contrast fixer: pick or auto-suggest an accessible text/background pair and apply it, with a live contrast ratio and WCAG AA pass/fail.
  • Heading-level fixer: re-level a heading that skips a step, with an optional bring-your-own-key AI outline suggestion.
  • New render-time theme-output fixes, off by default: a site-wide skip link, a visible keyboard-focus outline, a minimum target size, a main landmark, and restore-zoom. These inject real code (not an overlay) and are gated by Safe Mode; with the feature off, visitors get a byte-identical page.
  • Every fix is reversible with one-click undo and is logged.

v1.0.1 Listing refresh

  • Real admin screenshots, clearer and more discoverable readme copy, and visible project links. No functional code changes.

v1.0.0 First public release

  • Scanner: 16 WCAG 2.2 rules across posts, pages, and rendered theme output.
  • Auto-fix engine: safe, reversible, code-level fixes with per-fix toggles, one-click undo, and a Safe Mode kill-switch.
  • Inspect on page: an author-only annotated overlay on the live site (logged-in editors only; visitors never see it).
  • Dismiss issues with a structured reason and reopen them later.
  • Colour Contrast Tester in the new Tools screen.
  • BYOK AI authoring suite: bring your own OpenAI, Anthropic, or Google Gemini key — you pay your provider directly, never us.
  • Accessibility statement generator, VPAT starter, and compliance report.
  • Encrypted API-key storage and a clean uninstall.

v0.6.0 First public release candidate

  • Scanner: 12 WCAG 2.2 rules across posts, pages, and rendered theme output.
  • Auto-fix engine: safe, reversible, code-level fixes with per-fix toggles and one-click undo.
  • “Scan this post” button in the block-editor sidebar; scan any post or same-site URL from the Scans screen.
  • BYOK AI authoring suite: bring your own OpenAI, Anthropic, or Google Gemini key — you pay your provider directly, never us.
  • Accessibility statement generator, VPAT starter, and compliance report.
  • Encrypted API-key storage and a clean uninstall.

v0.0.1 Where it started

  • Initial scaffold.

New to the plugin? Start with the getting-started guide, or see how it works for the full rule and fix lists.