What is AccessiAI?
AccessiAI is a free Chrome extension that audits any webpage for WCAG 2.1 accessibility violations in seconds. It highlights issues directly on the page with colour-coded overlays, lets you navigate through violations one by one, and can generate a professional AI-written accessibility report using your own API key — all without sending a single byte of data to AccessiAI's servers.
It runs entirely in the browser against the live DOM, so it catches issues that only appear after JavaScript executes — unlike static source-code linters.
Who is it for?
Developers
Catch violations before pull requests merge. Integrate issue export into bug trackers.
Designers
Validate contrast ratios, focus visibility, and typographic spacing on live prototypes.
QA Testers
Run a full 28-rule audit, export results to CSV or Excel, and track regressions over time.
Content Creators
Use the readability panel and text-to-speech tools to experience content as your users do.
Free forever. AccessiAI requires no account, no subscription, and no data upload. AI features use your own API key and call your chosen provider directly.
Features Overview
AccessiAI bundles eight tools into a single popup. All operate locally against the current tab — no background permissions required.
| Feature | What it does | |
|---|---|---|
| 🔍 | WCAG Scanner | Checks 28 rules across WCAG 2.1 levels A, AA, and AAA. Highlights violations directly on the page with colour-coded overlays (red / orange / yellow). Auto-rescans SPAs on DOM changes via MutationObserver. |
| 🤖 | AI-Powered Reports | Sends page structure and scan results to OpenAI, Anthropic Claude, or Google Gemini and returns a professional 7-section Markdown report ready to share with your team. |
| 📖 | Readability Panel | Live CSS overrides for font size (70–200%), line height, letter spacing, OpenDyslexic font, high contrast, grayscale, and colour inversion. Settings persist per tab. |
| 🔊 | Text-to-Speech | Reads full pages or selected text using native browser speech synthesis. Adjust voice, rate (0.5×–3×), and pitch on the fly. TTS state persists across popup reopens. |
| 🧭 | Issue Navigator | Steps through every flagged violation one by one. Each step scrolls the page and focuses the affected element — ideal for systematic remediation. |
| 🔎 | Issue Search & Filter | Live keyword search across rule names, descriptions, and selectors. Filter by WCAG level or rule ID. Drives the Issue Navigator when active. |
| 📊 | CSV / Excel Export | Exports the full issue list — rule ID, WCAG level, element selector, description — to CSV or Excel (.xlsx) for bug trackers and compliance reports. |
| 🌐 | Multi-Language UI | Extension interface fully localised in English, Spanish, Portuguese, Japanese, and Chinese. Switch language inside the popup without a page reload. |
Installation
AccessiAI can be installed directly from the Chrome Web Store (recommended) or loaded manually as an unpacked extension for development and testing.
From the Chrome Web Store
Open the Chrome Web Store listing
Search for "AccessiAI" in the Chrome Web Store or follow the link from the main page.
Click "Add to Chrome"
Confirm the permissions dialog. AccessiAI requests only activeTab, scripting, and storage — no background network access.
Pin the extension icon
Click the puzzle-piece icon in Chrome's toolbar, find AccessiAI, and click the pin icon so it's always one click away.
Manual / Developer install (load unpacked)
Download the release ZIP
Grab the latest .zip from the GitHub Releases page and extract it to a local folder.
Enable Developer Mode
Open chrome://extensions and toggle Developer mode in the top-right corner.
Load unpacked
Click Load unpacked and select the extracted folder containing the extension's manifest.json.
Pin the icon
Click the puzzle-piece icon → find AccessiAI → click the pin. The ♿ icon will appear in your toolbar.
Requirements: Chrome 88 or newer. The extension uses Manifest V3 and native browser APIs only — no external runtime dependencies.
How to Use
Click the AccessiAI ♿ icon in your Chrome toolbar while viewing any webpage. The popup opens with four tabs. Each tab is independent — you can use them in any order.
Scanner Tab
- Click Scan Page to run all 28 WCAG checks against the current tab's live DOM.
- Violations appear as coloured overlays on the page — red for Level A (critical), orange for AA (moderate), yellow for AAA (minor).
- The popup lists each issue with its rule ID, WCAG success criterion, and the CSS selector of the affected element.
- Use the Search & Filter bar to narrow results by keyword, rule ID, or WCAG level.
- Click Next / Prev in the Issue Navigator to step through violations one by one — the page scrolls and the element receives focus.
- Click Export CSV or Export Excel to download the full issue list with rule ID, level, selector, and description columns.
- On single-page apps the scanner re-runs automatically when the DOM changes (debounced at 800 ms).
Readability Tab
- Drag the Font Size slider to scale all text on the page from 70% to 200% in 10% steps.
- Adjust Line Height (Normal–3.0, step 0.2), Letter Spacing (0–0.3em), and Word Spacing (0–1.0em) with the steppers.
- Toggle OpenDyslexic to load the dyslexia-friendly font from CDN and apply it to all page text.
- Toggle High Contrast, Grayscale, or Invert Colours using the display filter switches.
- Enable Highlight Links or Highlight Headings to visually outline all interactive or structural elements.
- All settings persist in
chrome.storage.localper tab and restore automatically when you reopen the popup. - Click Reset to remove all overrides and restore the page to its original styles.
Speech Tab
- Choose a Voice from the dropdown — all voices installed in your operating system are listed.
- Adjust Rate (0.5×–3×) and Pitch using the sliders.
- Click Read Page to read the full visible text content of the current tab aloud.
- Highlight text on the page first, then click Read Selection to read only the selected passage.
- Use Pause, Resume, and Stop controls at any time — play state is stored so the popup reopens with the correct button labels.
- Speech uses the native
SpeechSynthesisAPI — no audio data leaves your browser.
AI Tools Tab
- Select your AI Provider from the dropdown: OpenAI, Anthropic, or Google Gemini.
- Choose a Model — each provider offers a fast/affordable option and a more capable one.
- Paste your API Key into the key field. It is stored only in
chrome.storage.localand never sent to AccessiAI servers. - Click Generate Report. AccessiAI bundles page structure (headings, landmarks, forms) and scan results into a single prompt and calls the provider directly.
- The resulting 7-section Markdown report appears in the panel: executive summary, estimated AA compliance %, critical / moderate / minor issues, structural analysis, and top 5 prioritised recommendations.
- The report is stored in
chrome.storage.localand persists after you close the popup — click Clear Report to remove it. - See the AI Providers section below for step-by-step key setup instructions.
Supported WCAG 2.1 Rules
AccessiAI checks 28 rules organised across three WCAG 2.1 conformance levels. In the extension UI, Level A violations are highlighted in red, Level AA in orange, and Level AAA in yellow.
Images missing or empty alt attribute
Buttons / role="button" with no accessible name
Links with empty or vague text ("click here", "more")
SC 2.4.4 — link-nameForm inputs with no label, aria-label, or title
SC 3.3.2 — input-labelClick-only elements missing keyboard access
SC 2.1.1 — click-keyboardIcon-only interactive elements with no accessible label
SC 4.1.2 — icon-ariaFocusable divs/spans missing a semantic role
Interactive ARIA roles with no reachable tabindex
SC 2.1.1 — tabindex-requiredMissing "skip to main content" anchor link
SC 2.4.1 — skip-linkPage has no <main> or role="main" landmark
Page <title> is missing or empty
<iframe> elements missing a title attribute
Images used as links with empty or missing alt text
SC 1.1.1 — img-link-alt<select> elements without an associated label
Data tables missing header cells (<th>) or scope
Form error messages not programmatically associated with inputs
SC 3.3.1 — error-identificationText contrast below 4.5:1 (normal) or 3:1 (large)
SC 1.4.3 — low-contrastMissing or invalid lang attribute (BCP 47)
Interactive elements with outline:none and no fallback
Videos with no captions or subtitles track
SC 1.2.2 — video-captionsForm control borders below 3:1 contrast
SC 1.4.11 — non-text-contrastElements with positive tabindex disrupting tab order
SC 2.4.3 — positive-tabindexText passing AA but below 7:1 enhanced contrast
SC 1.4.6 — enhanced-contrastLinks with no meaningful word in accessible name
SC 2.4.9 — link-purpose-contextSkipped heading levels (h1→h3) or multiple h1 elements
SC 2.4.10 — heading-hierarchyLine length exceeds 80 characters (measure too wide)
SC 1.4.8 — line-lengthInsufficient text spacing — line-height <1.5 or letter-spacing <0.12em
SC 1.4.12 — text-spacingElements that flash more than 3 times per second
SC 2.3.2 — three-flashesAI Providers Setup
The AI Tools tab requires an API key from one of three supported providers. Your key is stored only in chrome.storage.local on your device and is sent directly to the provider — never to AccessiAI servers.
API calls are made on your behalf and billed to your account. Use the affordable models (gpt-4o-mini, claude-haiku-4-5, gemini-2.0-flash) for everyday audits to keep costs minimal.
- Go to platform.openai.com/api-keys and sign in.
- Click Create new secret key, give it a name (e.g. "AccessiAI"), and copy the key — it starts with
sk-. - In the AccessiAI popup → AI Tools tab → select OpenAI → paste the key → click Generate Report.
- Go to console.anthropic.com/settings/keys and sign in.
- Click Create Key, copy the key — it starts with
sk-ant-. - In the AccessiAI popup → AI Tools tab → select Anthropic → paste the key → click Generate Report.
- Go to aistudio.google.com/app/apikey and sign in with a Google account.
- Click Create API Key, copy it.
- In the AccessiAI popup → AI Tools tab → select Google Gemini → paste the key → click Generate Report.
Key security: Your API key is stored in chrome.storage.local — accessible only to the AccessiAI extension on your device. It is never transmitted to any server other than your chosen AI provider.
Known Limitations
AccessiAI covers the most impactful WCAG checks automatically, but some scenarios are outside what a browser extension can reliably detect.
-
chrome:// pages and cross-origin iframes
Chrome does not permit content scripts on browser internal pages (chrome://,chrome-extension://, orabout:) or in cross-origin iframe contexts. Scanning these pages will return no results. -
addEventListener click handlers
The scanner detects non-interactive elements with inlineonclickattributes but cannot inspect event listeners attached viaaddEventListener. Some keyboard-inaccessible click handlers may not be reported. -
Contrast on gradients and image backgrounds
The contrast checker samples the computed background colour viagetComputedStyle. Gradient or image backgrounds return a single colour value, which may cause false positives or false negatives for contrast rules. -
Dynamically rendered content
Content rendered after a significant delay (e.g. lazy-loaded infinite scroll sections) may not be present in the DOM at scan time. Use the manual re-scan button after content loads, or rely on the MutationObserver auto-rescan for SPA route changes.
Privacy
AccessiAI was designed with a strict no-telemetry, local-first approach.
-
No data sent to AccessiAI servers
All scanning, readability adjustments, and text-to-speech processing happen entirely within your browser. Page content never leaves your device unless you explicitly trigger an AI report. -
AI provider calls are on-demand only
When you click "Generate Report", AccessiAI sends a structured prompt containing page structure and scan results directly to your chosen AI provider's public API. This call is made under your own API key and account — AccessiAI has no visibility into it. -
API keys stored locally
Your API keys are stored inchrome.storage.local, which is scoped to the extension on your device. They are never transmitted to AccessiAI servers. -
No analytics or usage tracking
AccessiAI does not embed any analytics SDK or tracking pixel inside the extension. The landing page uses Google Analytics for page-view metrics only — the extension itself is analytics-free.
For the full privacy policy see privacy-policy.html.
Contributing & Development Setup
AccessiAI is open source and welcomes contributions. The repository is at github.com/iamakashaher/AccessiAI.
Getting started
Adding a new WCAG rule
Define the rule
Add a new entry to the rules registry (see the project's CLAUDE.md for the exact file path and schema). Each rule needs an ID, WCAG success criterion reference, level, description, and a check() function that receives a DOM node and returns a boolean.
Write the check function
The check() function is called once per matching element. Return true if the element passes the rule, false if it violates it. Keep checks fast — they run on every DOM mutation.
Add a test case
Create a corresponding test in the /tests directory with both a passing and a failing HTML fixture. Run npm test to verify.
Open a pull request
Submit your PR against the main branch. Include the rule ID, WCAG criterion, and a short description of what it checks in the PR description.
Before starting significant work, open a GitHub issue to discuss the approach. This prevents duplicated effort and ensures the rule fits the existing architecture.
License & Credits
MIT License
AccessiAI is released under the MIT License. You are free to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the software, subject to including the original copyright notice. See the LICENSE file in the repository for the full text.
Credits
-
Standards
WCAG 2.1 guidelines by the W3C Web Accessibility Initiative (WAI). AccessiAI is an independent tool and is not affiliated with W3C or WAI. -
OpenDyslexic Font
opendyslexic.org — open-source font designed to improve readability for readers with dyslexia, released under the SIL Open Font License. -
AI Providers
OpenAI, Anthropic, and Google are independent companies. AccessiAI integrates with their public APIs. Each provider's own terms of service apply when you use your API key.
Made with ♥ for an accessible web.
AccessiAI · Free forever · MIT License · No data collection