Accessibility statement and an EN 301 549 self-check
Two things that belong together and are almost never done together: a check of what a machine can actually test, and a statement built from that measurement instead of from good intentions. No overlay, no widget, no button that claims to make your site accessible. It points out where the problem sits; you fix it yourself, at the source, in your own theme or page.
Eighteen rules on one side, and five things no script can judge
This is the most important image on this page, because this is where the whole category goes wrong. A scanner that scores 98 per cent gives you the feeling that you have arrived, while the things that matter most fall outside the reach of any scanner. That sentence is therefore included in the statement itself, and it is repeated on the overview and on the settings screen.
- Image without a text alternative, and an alternative that is actually a file name
- Image map click area without a text alternative
- Embedded object or embed with nothing to fall back on
- Empty heading, and a skipped heading level
- Table with data cells and not a single header cell
- Audio or video that autoplays, is not muted and has no controls
- Zoom disabled or capped below twice the size
- Page without a title element
- Positive tabindex
- Link without a name, link text that says nothing, and a link that opens a new window without saying so
- Page language not set on the html element
- Form field without a label, aria-label or title
- The same id used twice
- Frame without a name
- Whether a text alternative actually describes the image
- Whether your site can be operated with a keyboard alone
- Whether the contrast holds up in practice
- Whether an error message explains itself
- Whether a custom-built component behaves the way it announces itself
Why almost every accessibility plugin solves the wrong problem
The European Accessibility Act has applied since 28 June 2025 to, among others, webshops and online services to consumers. The need is real and current, and the market has responded with something that does not solve the problem.
Source: the Dutch Accessibility Requirements for Products and Services (Implementation) Act (Implementatiewet toegankelijkheidsvoorschriften producten en diensten) on wetten.overheid.nl, in force since 28 June 2025
Last checked on 25 August 2026: the act is still in force and that date has not moved. We do not state when which regulator in which country starts enforcing it: there is no source for that which you can check.
What sits in the WordPress plugin directory is mostly the overlay widget: a button in the bottom corner that lets a visitor enlarge the font or invert the contrast. The accessibility field advises against this, for a reason you do not have to take on faith to understand: an overlay leaves the underlying problem in place and hides it from the tool that could have found it. Someone using a screen reader still runs into the missing alt text, only now the scanner no longer sees it.
This plugin therefore deliberately avoids two things: it does not patch anything on top of your page, and it never declares you compliant
What it does do is measure what can be measured, point out where it sits, and turn that outcome into a statement that promises no more than what was measured.
What exactly gets checked
Eighteen rules. Ten of them block someone, eight deserve attention. Together they touch twelve WCAG success criteria from the version EN 301 549 points to. Eleven of them appear in both WCAG 2.1 and WCAG 2.2. The twelfth, criterion 4.1.1 Parsing, has been dropped in WCAG 2.2 and only counts here for as long as EN 301 549 points to WCAG 2.1; that is why the plugin treats it as a notice rather than a blocking finding, and the plugin code says so itself in a note. The full list is in FIG.01 and nothing sits outside that list; there is no hidden nineteenth rule and no overall score built out of thin air.
Every finding shows the WCAG number and the clause number from EN 301 549
That second number is what you need the moment someone asks about the standard rather than the guideline, and it is exactly what most tools leave out.
Two ways of reading
Content mode reads what the editor produces. That is the default, it is fast, and not a single request leaves the building.
Page mode fetches the whole page including your theme, and that is the only way to judge the page language, the page title and the viewport. The request goes to your own domain.
What happens to the findings
At every check, the findings for each item are replaced. What you see is the state of the latest measurement, not a pile of history. That is a deliberate choice: a list that only ever grows gets ignored within a month.
Four steps, and the last one never puts anything online
The statement is built from your answers and from the measurement, and from nothing else. You see the whole text on screen before it is written anywhere. The button then creates a draft page. A new page is never published for you.
How to install it, in four steps
No account is needed, no key and no registration. An ordinary WordPress site where you are an administrator is enough.
manage_options, so an administrator account.Click the download button above. You get theseo-toegankelijkheidsverklaring-1.0.0.zip, 67 KB. Do not unpack it: WordPress wants the zip itself.
In your WordPress: Plugins, Add New Plugin, Upload Plugin. Choose the file and click Install Now.
Click Activate Plugin. A new item appears in your admin menu. Your site does not change yet at this point.
Open the settings screen and go through the toggles. Everything that touches your public site stays off until you turn it on yourself.
What the statement is, and is not
The statement that comes out of it is useful and limited, and it is better that you know that in advance.
It never declares you compliant
The statement itself says that it rests on a machine measurement and that a machine measurement covers only part of accessibility. That is not a hedge but the truth, and a statement that leaves it out is inaccurate.It is not the Dutch government template
Public bodies publish their statement in the national register in a prescribed template that asks for things not measured here. This is a statement for a business under the European Accessibility Act.It does not replace testing with real users
Testing with people who use assistive technology, and an assessment by someone who works in this field, are the two things missing here. That is stated on every screen.It does not publish anything for you
The button creates a draft page. If the page already exists, the text is rewritten and the page keeps the status it had.Two tables in your own database, and one request that you switch on yourself
Your visitors are not looked at at all. It reads your own content. The only request that ever leaves your server goes to your own domain, and in the default setting even that does not happen.
- Per finding: the post id, the rule code, the weight, a short reference to the element, the offending html capped at 300 characters, and the time it was measured
- Per check: the time, how it read the site, and the totals
- Your statement fields, in a single option
- Any data about a visitor
- An IP address
- A cookie or anything in localStorage or sessionStorage
- A user agent
- Anything that leaves your server
includes/class-tstv-runner.php and goes to get_permalink(), so to your own page on your own domain. It only happens in page mode. Content mode is the default, and in that mode there is no outgoing request at all. Some hosts do not allow a site to call itself; the overview then reports how many items could not be read, instead of silently counting them as clean.Privacy: what is recorded and what is not
With this plugin there is no visitor involved at all. That keeps the paragraph short, and it also makes it honestly verifiable.
No visitor data, in any form
No IP address, no cookie, nothing in localStorage or sessionStorage, no user agent. The plugin does not look at who visits your site; it reads your own content.Nothing changes on your front end
, except a link to your statement page if you turn that on yourself. No script is loaded and nothing is laid over your page.The only outgoing request goes to yourself
It sits inincludes/class-tstv-runner.php, it calls get_permalink(), and it only happens in page mode. Content mode is the default and makes no request at all. There is no second address anywhere in the plugin.Everything stays in your own database
Two tables and one option, with the fields as shown in FIG.03. The offending html is capped at 300 characters, because a finding needs only the pointer.Uninstalling cleans up
Both tables, the option and the scheduled check are removed. Your statement page stays in place, because that page is yours.Frequently asked questions
Is this an overlay? No, and that is the starting point. Nothing is laid over your page and nothing is patched on top of your site. The plugin points things out and you fix them at the source.
Does this make my site compliant with the European Accessibility Act?
No. It measures the part that can be tested by machine and writes a statement that says exactly that. The parts that are missing are named explicitly in the statement itself.
What is the difference between content mode and page mode?
Content mode reads what the editor produces and makes no outgoing request at all. Page mode fetches the whole page including your theme and is the only way to judge the page language, the page title and the viewport.
My host does not allow the site to call itself.
Then the overview reports how many items could not be read. They are not silently counted as clean, because that would make the figure look better than reality.
Can I use this as a public authority?
Not as a replacement. Public bodies in the Netherlands publish in the national register in a prescribed template that asks for more than is measured here. The measurement itself is useful as groundwork, though.
Will my statement page be overwritten?
The text is rewritten, the status stays. A new page is always created as a draft and never published for you.
What it gives you in the first week
The sensible order is to measure before you write anything, because a statement that does not come from a measurement is a text you cannot defend later. What we ourselves publish about the accessibility of this site is on our own statement. If you also want to know what speed your visitors actually experience, the Core Web Vitals plugin measures that on the same people. If you want to talk it through, book a call.