The Accessibility Metadata Format allows developers of plugins, themes, templates, components, and applications to provide a machine-readable accessibility report. Website operators can use these reports to generate or complete their accessibility statements, even if they are not accessibility experts.
This guide explains how developers can implement the format in different environments.
Every project should contain a file named:
accessibility.json
This file MUST be placed in the project root.
Example locations:
/your-plugin/accessibility.json
/your-theme/accessibility.json
/your-library/accessibility.json
You MAY also expose a public version of the file at:
/.well-known/<component-prefix>-accessibility.json
Because a website may contain multiple components, the file name MUST include a component prefix, such as:
mytheme-accessibility.jsonshoppingcart-accessibility.jsonseo-plugin-accessibility.json
This prevents naming collisions if multiple components expose metadata through .well-known/.
Examples:
/.well-known/myplugin-accessibility.json
/.well-known/mytheme-accessibility.json
Use the official schema:
schema/v1/accessibility.schema.json
You can start from the provided examples:
examples/minimal-accessibility.jsonexamples/full-accessibility.json
Adapt these templates to your project.
Include details about:
- project name and version
- component type (plugin, theme, application, etc.)
- contact information
- scope of evaluation
- legal basis
- roadmap (optional)
Document:
- standard used (e.g., WCAG 2.2)
- conformance level
- issues found
- limitations
- test environment (optional)
- test runs (optional)
- Place the file inside the plugin/theme directory:
wp-content/plugins/<your-plugin>/accessibility.json
wp-content/themes/<your-theme>/accessibility.json
- When exposing via
.well-known, use:
/.well-known/<plugin-prefix>-accessibility.json
-
Ensure the file is included in distributed ZIPs.
-
Optional: expose via a REST endpoint.
-
Update the file for every release.
- Place
accessibility.jsonin the root of your extension:
/your_extension/accessibility.json
-
Ensure Joomla installs the file properly.
-
Expose via
.well-knownusing a prefixed name:
/.well-known/<extension-prefix>-accessibility.json
- Validate with the schema and update per release.
-
Place
accessibility.jsonnext topackage.json. -
Ensure it is included in the npm package:
"files": [
"dist/",
"accessibility.json"
]- Optionally expose a public
.well-knownfile:
/.well-known/<package-name>-accessibility.json
- Validate and update on each release.
Same pattern as React:
- place at project root
- include in distribution
- optionally expose via
.well-known/<prefix>-accessibility.json - validate on CI
- Add the file to the project root:
/accessibility.json
- Serve it publicly with a prefixed filename:
app.get('/.well-known/myapp-accessibility.json', function (req, res) {
res.sendFile(__dirname + '/accessibility.json');
});- Validate via CI and update with every deployment.
Use AJV:
ajv validate -s schema/v1/accessibility.schema.json -d accessibility.jsonOr Python:
from jsonschema import validate
import json
with open("schema/v1/accessibility.schema.json") as f:
schema = json.load(f)
with open("accessibility.json") as f:
data = json.load(f)
validate(instance=data, schema=schema)Include validation in CI for each release.
- Always use a prefixed filename when exposing the metadata under
.well-known/. - Always validate your file when publishing a new release.
- Keep your metadata updated and accurate to support website operators in creating complete accessibility statements.