AccessCheck is an AI-powered Web Accessibility Scanner designed to automate the detection of WCAG violations and provide intelligent, AI-driven remediation suggestions. It combines deterministic detection (Playwright + axe-core) with local LLM capabilities via LM Studio to ensure both accuracy and privacy.
- Deterministic Scanning: Uses Playwright to navigate pages (handling SPAs and dynamic content) and axe-core for reliable WCAG 2.0/2.1/2.2 AA detection.
- AI-Powered Remediation: Integrates with local LLMs (via LM Studio) to explain violations in plain language and provide copy-pasteable HTML/CSS fixes.
- Visual Dashboard: A sleek, dark-mode React dashboard built with Vite, Tailwind CSS, Recharts, and Framer Motion.
- Interactive Screenshots: Automatically captures full-page screenshots and draws clickable bounding boxes around elements that violate accessibility rules.
- Local & Private: Your code and data never leave your machine when using local LLMs.
- Role-based Filtering: Filter issues specifically for Developers, Designers, or Legal/Compliance teams.
backend/: FastAPI backend, Playwright scanning engine, LM Studio integration, and SQLite storage.frontend/: React SaaS-style dashboard.
cd backend
python -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt
# Install Playwright browser dependencies
playwright install chromium
# Start the API server
uvicorn app.main:app --reload --port 8000cd frontend
npm install
# Start the dev server
npm run dev- Frontend:
http://localhost:5173 - Backend API:
http://localhost:8000
- Copy the example
.envfiles:cp backend/.env.example backend/.envcp frontend/.env.example frontend/.env(if you need to change the API URL)
- Open
backend/.envto configure your LM Studio URL and Model.
For the best balance of speed and reasoning quality:
Llama-3.1-8B-Instruct(4-bit /Q4_K_M): Great overall compromise.Mistral-7B-Instruct-v0.3(4-bit /Q4_K_M): Fast and stable for HTML/JSX fixes.Qwen2.5-7B-Instruct(4-bit /Q4_K_M): Good reasoning for technical explanations.
Tip: Start with Llama-3.1-8B-Instruct Q4_K_M for this project.
This repository is currently a Proof of Concept (PoC):
- Task Processing: Async jobs run in-process using FastAPI's
asyncio.create_task. - Storage: Local SQLite database.
- Guardrails: The LLM is used exclusively for remediation (
/api/remediate). Detection is strictly handled by axe-core to prevent AI hallucinations in compliance reporting.
For enterprise production use, it is recommended to migrate to Celery + Redis + PostgreSQL.
Contributions, issues, and feature requests are welcome! Feel free to check out our CONTRIBUTING.md if you'd like to help improve AccessCheck.
This project is MIT licensed.