Wave Access
The handbook for the accessibility plugin: from installation and widget customization to audit reports, the accessibility statement and AI tools. All settings live in WordPress under Settings → Accessibility.
Installation
- Upload the plugin ZIP under Plugins → Add New → Upload Plugin — or copy the
wave-accessfolder to/wp-content/plugins/. - Activate the plugin in the plugin list. You'll find a direct Settings link right there.
- Done — the assistive widget appears in the bottom-right corner of your site immediately. All core fixes (skip links, focus indicator, ARIA landmarks) are active out of the box.
Activate your license Pro
You'll find your license key in your order e-mail and in your account.
- Open Settings → Accessibility → License.
- Enter the key (format
WAVE-XXXX-XXXX-XXXX) and click Activate. - Your plan (Pro, Pro AI or Agency) is displayed and all included features unlock — one key for everything, including the AI features.
Agency licenses can be activated on up to 25 websites; the License tab and your account show which sites are in use. “Detach license from this website” frees up a seat — handy when moving client projects.
Widget: visitor features
The widget offers visitors ten display modes and four sliders — all preferences are stored in the visitor's browser for 30 days (no tracking, nothing sent to any server):
| Display modes | Invert colors · Monochrome · Dark contrast · Light contrast · Low saturation · High saturation · Highlight links · Highlight headings · Screen reader (read aloud on click/selection) · Reading mode |
|---|---|
| Sliders | Content scaling · Font size · Line height · Letter spacing (80–200% each) |
| Languages | The interface follows your site language — 29 European languages included |
In the Widget tab you can disable feature groups individually (e.g. grayscale, contrast modes, font sliders, link underlining) to keep the panel lean.
Floating button
Everything lives under Widget → Floating button:
| Position | Four corners: bottom right (default), bottom left, top right, top left |
|---|---|
| Edge offset | 8–80 px distance from the edge of the page |
| Size | S (48 px) · M (56 px) · L (64 px) |
| Icon | Person (default) · Wheelchair · Sliders — or a custom image from your media library (PNG/SVG, square recommended) |
You can also disable the button entirely and place the panel yourself — see Embedding.
Appearance & theme
| Accent color | Colors the button, active tiles and sliders. Via color picker (swatch, HEX, RGB) — or as a CSS variable, see below. |
|---|---|
| Panel radius | Corner radius of the panel, 4–40 px |
| Panel theme | Light (white) · Dark (charcoal) · Custom variables (design coupling) |
| Branding | “powered by Wave Tools” link in the panel footer — removable from Pro, white label from Agency |
Design coupling via CSS variables
For developers: instead of fixed colors you can hook the widget into your theme's CSS custom properties. It then follows every design change automatically — dark mode included.
Accent color
In the accent color field, simply enter the variable instead of a hex value:
var(--primary) or short: --primary
Panel background and text color
Set the panel theme to Custom variables and enter the variable names your theme defines, e.g.:
:root { --site-bg: #ffffff; --site-text: #1d1d1f; }
@media (prefers-color-scheme: dark) {
:root { --site-bg: #1c1b22; --site-text: #f4f4f5; }
}
The widget adopts background: var(--site-bg) and color: var(--site-text) and derives all secondary colors (tile backgrounds, dividers, borders) automatically via color-mix(). If your site switches to dark mode via media query or class, the widget follows without any extra configuration.
Gutenberg block
Search the block editor for “Accessibility panel” (Widgets category). The block renders the same panel as the floating button — ideal for footers, popups or a dedicated accessibility page. Title, title visibility and reset button are configured in the block sidebar.
Shortcode
The panel anywhere you like — including theme files via do_shortcode():
[wave_access]
[wave_access title="Need help?" show_title="1" show_reset="0"]
| Attribute | Values | Meaning |
|---|---|---|
title | text | Panel heading (default: “Accessibility tools”) |
show_title | 1 / 0 | Show the heading |
show_reset | 1 / 0 | Show the reset button |
Elementor
If Elementor is active, the widget “Wave Access – Accessibility” automatically appears in the Elementor panel (General category, keywords “accessibility”, “a11y”). Drag & drop it anywhere; title, title visibility and reset button are set directly in the widget options.
WPBakery
If WPBakery (Visual Composer) is active, you'll find the element “Wave Access – Accessibility” in the element catalog under Content — with the same three options as block and shortcode.
Accessibility statement Pro
The Statement tab generates a complete accessibility statement according to the European Accessibility Act as a WordPress page:
- Enter organisation, contact e-mail and optionally a phone number.
- Choose the compliance status — partially conformant is the usual, honest state.
- Add known limitations (e.g. “Older PDF documents are not yet accessible”).
- Pick a language — all 29 plugin languages are available (German and English editorially maintained, more to follow).
- Create page — the statement is published as a page; on changes just save again and the page is updated.
Audit report & PDF
The Audit tab bundles three tools:
- Overview — statistics on images without alt text, checklist progress and overall status. This is also where you generate the PDF audit report Pro: a print-optimised documentation of your efforts (summary, active measures, full checklist, image list) that you save as PDF via the print dialog.
- Image analysis — a detailed list of all images without alt text, with preview, usage locations and a direct edit link. Free shows the first 50 images; Pro audits without limits and exports to CSV.
- WCAG checklist — 27 criteria based on WCAG 2.1 AA in five categories, with progress bar and save function. Your self-assessment feeds into the PDF report.
AI features Pro AI
The AI features run on Wave Tools servers in Germany and unlock through your license. Quotas per plan: see Plans.
Automatic alt texts
- On upload: the “Generate alt texts on upload” switch — new images are described asynchronously.
- Backfill your library: “Scan media library” counts images without alt text, “Generate now” works through them with a progress bar. Existing alt texts are never touched.
- Language: follows the site language, adjustable in the AI tab.
Easy language & AI read-aloud
Both are part of the Pro AI plan and unlock automatically through your license as soon as they become available for your account — the AI tab shows the status.
Backend options
| Dashboard widget | Status overview on the WP dashboard — can be disabled under General → Backend integration |
|---|---|
| Admin bar | Quick access in the top admin bar — also removable |
| Tab visualiser | Shows admins the tab order with numbers directly on the front end (Tab order tab) |
| E-mail alerts | Optional notification when an image is uploaded without alt text |
Plans at a glance
| Free | Pro | Pro AI | Agency | |
|---|---|---|---|---|
| Widget + core fixes + checklist | ✓ | ✓ | ✓ | ✓ |
| Alt-text audit | 50 images | unlimited + CSV | unlimited + CSV | unlimited + CSV |
| Accessibility statement + PDF report | — | ✓ | ✓ | ✓ |
| AI: alt texts / easy language / read-aloud | — | — | ✓ | ✓ (pooled) |
| Websites | ∞ | 1 | 1 | up to 25 |
| Branding removable / white label | — | ✓ / — | ✓ / — | ✓ / ✓ |
Pricing and checkout: wavetools.io/#pricing · Management: Account
Troubleshooting
The most common stumbling blocks and how to fix them — most issues are resolved in a few minutes.
The widget does not appear on the front end
First check that the plugin is actually activated in the plugin list and that the floating button is enabled in the Widget tab. After that, a caching plugin or CDN is usually the culprit: clear the cache (e.g. WP Rocket, LiteSpeed Cache, Cloudflare) and reload the page in a private/incognito window. Optimization plugins that defer or combine JavaScript can block the widget script — exclude wave-access from optimization there. Also check whether any exclusion rules (specific pages or post types) apply.
The license key is not accepted
The key has the format WAVE-XXXX-XXXX-XXXX — watch out for leading or trailing spaces when copying it from the order e-mail. If your plan's site limit is reached, the server rejects the activation: open your account and free up a seat with “Detach license from this website”. If activation fails with a connection error, your server cannot reach wavetools.io — ask your host to allow outgoing HTTPS connections to wavetools.io (firewall, hosts file).
The AI features return no result
Most common cause: the monthly quota is used up — the AI tab shows your usage, and you receive a warning e-mail at 80% and 100%. You can buy additional quota in your account. Also check whether your plan includes AI at all (Pro AI or Agency — see Plans). If requests go unanswered entirely, your server may be blocking outgoing HTTPS connections to the Wave Tools proxy — when in doubt, ask your host.
Read-aloud uses the system voice instead of the AI voice
The AI voice requires an active Pro AI (or Agency) license and remaining quota — if either is missing, the widget automatically falls back to the browser's system voice. Check license and usage in the AI tab. The first read-aloud on a page also takes a moment: the audio is generated on the server and cached afterwards — from the second play it starts instantly.
The widget doesn't match my theme visually
Position, size, accent color and panel theme are configured under Settings → Accessibility → Widget. If you want the widget to follow your theme's colors automatically — dark mode included — couple it to your design via CSS variables: see Design coupling. That way it stays consistent even after a theme switch, without maintaining colors by hand.
The layout breaks with optimization/minify plugins
Some optimization plugins (Autoptimize, WP Rocket, SiteGround Optimizer and others) combine or minify CSS and JavaScript so aggressively that the widget's styles or scripts break. Exclude the plugin's files (path contains wave-access) from minify/combine there, then clear the cache and check the page in a private window. The widget already ships lean, optimized assets — additional minification gains practically nothing.
The external scan reports “quota reached” or an error
The scan has monthly limits per plan: Free 2, Pro 20, Agency 100 scans — the counter resets at the turn of the month. The scanner can also only audit publicly reachable pages: maintenance mode, basic-auth password protection or a local development environment block access and lead to an error. Disable the protection briefly or scan the live site.
An available update is not shown
WordPress only checks for updates about every twelve hours. Trigger the check manually: Dashboard → Updates → “Check again” — this clears the update transient. If the Pro update still doesn't appear, take a look at your license: once it has expired, the update server only delivers free updates; after renewing in your account, Pro updates are available again immediately.
Support
Questions, bugs, feature requests? Write to support@wavetools.io — Pro customers get priority. Please include your WordPress and plugin versions (see plugin list) and a short description of what you expected versus what you saw.