1 / 17
← → ↑ ↓ Space navigate  |  click module cards to jump

EmpowerQA Accessibility Scanner

Automated AI-assisted WCAG Compliance Platform

engage  ·  empower  ·  excel

WCAG 2.2 GIGW 3.0 RPwD Act 2016
Platform Overview

Platform Modules

Click any module to learn more

One page, three questions (Unified Scanner, 2026-08-01): the scanner now asks what are you scanning? (PDF · Website · Mobile App), then reveals only the audits available for that target — so ANDI, Screen Reader and Manual+ appear as sub-modes of Website rather than as separate products to learn.

EQA11y (2026-09-23): the WCAG audit now reads as three buckets — Needs attention (confirmed failures), Manual testing needed (rules axe-core could not resolve, which a person must judge) and Best Practices (advisory, and no longer counted against a compliance score). Chrome or Firefox, selectable per run, and consistent between them: the page is measured only once it has stopped changing. On the client's benchmark site the tool being replaced reported 5 rules on Chrome and 3 on Firefox for the same page; both engines here report the same 3 rules and the same 37 elements.

Active module set (streamlined 2026-07-31): Core (live): Website Scanner (URL Extractor · EQA11y · DOC Extractor · DOC Test) · PDF Accessibility Scanner + Admin toolset. BETA (switched off here): Mobile Scanner · ANDI Inspector · EQA Voice Engine · EQA Manual+ · App Developer — currently gated off via the EQA_ENABLED_MODULES flag and re-enablable with one configuration change. Every module is described on the public landing page at eqa11y.empowerqa.com, where BETA engines carry the same label.

🌐
Website Scanner
URL · EQA11y · DOC ×2
📱
Mobile Scanner
Unified Dynamic Engine
📄
PDF Scanner
PDF/UA Tag Tree
✋
EQA Manual+
🔧
App Developer
🛡️
ANDI Inspector
🔊
EQA Voice Engine
🤖 AI Advisory Panel →
👥 User Roles →
🏗️ Architecture →
✋ Interactive Manual Audit →
🔀 Tool Comparison →
⚡ Continuous Improvement →
✅ Summary & Q&A →
Module 1

🌐 Website Scanner

Full WCAG audit on every page — automated, bot-safe, AI-assisted

How it works
Paste URL
→
Scope counts pages
→
Full Scan runs
→
WCAG audit per page
→
Report + AI Advisory

Key Features

  • Bot-safe discovery: Sitemap → Wayback CDX → Browser BFS
  • axe-core WCAG 2.1/2.2 checks on every page
  • Visual hotspot report with annotated screenshots
  • Downloads: PDF, Excel (Excel report + NVDA), VPAT (PDF and HTML, identical across all 51 criteria), CSV, JSON
  • Every crawled page as a named test case — PASSED / FAILED, its duration, and an execution log carrying the real settle timings (never “waited N seconds”)
  • Claude + Gemini + Vertex AI Advisory per scan
  • Re-scan + side-by-side comparison
  • Interactive login support for authenticated pages
  • Cross-Browser: Firefox + Safari/WebKit optional add-on

Bot-Bypass Layers

  • Layer 1: Chromium with stealth headers
  • Layer 2: camoufox (patched Firefox, Akamai bypass)
  • Layer 3: curl_cffi TLS fingerprint mimicry
  • Soft-block detection: HTTP 200 WAF pages caught
  • Works on Akamai, Cloudflare, NIC India portals
Admin — full scan Client — view reports Web role — full scan + history
Module 2

📱 App Scanner — Static AnalysisNOW PART OF MOBILE SCANNER

Upload APK or IPA — no device, no emulator needed

How it works
Upload APK / IPA
→
Static analysis (5 phases)
→
WCAG-M findings
→
Grade + Report
→
Wireframe screenshots

5-Phase Analysis (APK)

  • Layout XML: content-description, labelFor, importantForA11y
  • strings.xml: vague/empty labels (< 3 chars)
  • DEX bytecode: setContentDescription API usage
  • AndroidManifest: RTL support, activity labels, permissions
  • Dark mode: res/values-night/ presence check

Also Supports

  • IPA static analysis (no AXML parsing needed)
  • Google Play Store URL → metadata accessibility check
  • App Store URL → iTunes Lookup API analysis
  • Wireframe screenshots from layout XML (Pillow)
  • AI Advisory panel (Claude + Gemini + Vertex AI)
  • XLSX report download
Admin Client Mobile role
Module 3 · BETA

🔥 Dynamic App ScannerNOW PART OF MOBILE SCANNER

Firebase Test Lab Robo crawl — Android + iOS, Google Cloud virtual devices, no emulator setup

Android flow
Upload APK
→
GCS storage
→
FTL MediumPhone.arm / API30
→
Robo Crawl (30 screens)
→
Google Accessibility Scanner
→
Poll → Report
iOS flow
Upload IPA
→
GCS storage
→
FTL iPhone 14 Pro / iOS 16.6
→
Screenshots
→
Gemini 1.5 Flash Vision
→
WCAG Findings

Key Features

  • Android: MediumPhone.arm / API30 — Google Accessibility Scanner XML
  • iOS: iPhone 14 Pro / iOS 16.6 — Gemini Vision analysis
  • Robo crawl: up to 30 screens / 100 actions
  • Impact capped at serious for iOS Vision findings
  • Background polling (15 s interval) — no callback URL needed
  • ADC auth — works automatically on Cloud Run

WCAG Checks

  • WCAG 4.1.2 — missing content descriptions (critical)
  • WCAG 2.5.5 — touch target ≥ 48×48dp (serious)
  • WCAG 1.4.3 — text colour contrast (serious)
  • WCAG 1.4.11 — non-text contrast (moderate)
  • WCAG 1.3.5 — autofill hints (moderate)
⏱ Timing note: ~5–15 min per scan · No GitHub Actions CI minutes consumed · Requires Cloud Testing API enabled on empowerqa-scanner project
Admin Client
Module 4

🔍 Scope & Extractor

Discover all pages before you audit — one site or several, and it works on bot-protected government sites

3-Layer Cascade
Enter one URL per line
→
Layer 1: Sitemap + WP/Next.js
→
Layer 2: Wayback CDX
→
Layer 3: Browser BFS crawl
→
CSV export

Key Features

  • Layer 1: robots.txt + sitemap.xml + WordPress CPT discovery
  • Layer 2: Wayback Machine CDX API — instant, bypasses IP blocks
  • Layer 3: camoufox stealth Firefox + Chromium fallback BFS
  • CSV Upload: paste your own Playwright-crawled CSV
  • GCS-persisted job history (max 20)
  • Nav supplement: catches post-redesign URLs missing from Wayback
  • Several targets, one run — one URL per line, optionally named Label | URL. Crawled one after another so a single scan slot is never oversubscribed, priced once on the combined page count.
  • A target that fails is recorded at 0 pages with its reason and the queue continues — one bad URL never sinks the batch
  • Reached the discovery limit? It asks: take the CSV as it stands, or keep crawling. It never decides for you.

CSV Output (structured)

  • Column 1: Page Title
  • Column 2: Valid URL
  • Column 3: Invalid / External URLs
  • Multiple targets add a leading Target column — one file, and every row says which crawl produced it
  • Deduplication + tracking param stripping (utm_*, ref, fbclid)
  • Domain-scoped only — no external links included
  • Filename: EmpowerQA_Scope_{domain}_{date}.csv
Admin — CSV export Client — view + history Web role — full access Viewer — read-only
Module 5 · AT Coverage

✋ EQA Manual+BETA · NOT ENABLED

Covers the AT gaps axe-core misses — audio, readability, voice control, cognitive, virtual SR, AI simulation, Gemini Vision

How it works
Enter URL
→
7 automated checks
→
AT Report

7 Checks

  • Check 1 — Audio/Caption: <video>/<audio> without captions · WCAG 1.2.2, 1.4.2
  • Check 2 — Readability: FK Grade, Fog Index, SMOG · WCAG 3.1.5
  • Check 3 — Voice Control (Dragon proxy): AOM walk, duplicate/missing names · WCAG 2.4.6
  • Check 4 — sa11y Cognitive: sa11y v3 headless · WCAG 1.3.3
  • Check 5 — Virtual SR: NVDA-style spoken phrase log from AOM
  • Check 6 — AI AT Simulation: Claude claude-3-5-haiku AT run simulation
  • Check 7 — Gemini Vision: cognitive load WCAG analysis on full-page screenshot

Why it matters

  • axe-core does not check audio content, readability, or Dragon voice control
  • Readability Grade 12+ fails WCAG 3.1.5 — invisible to automated scanners
  • Generic names ("button", "click here") block Dragon users
  • sa11y v3: cognitive load, heading errors, alt text quality checks
  • Gemini Vision: 3.2.3 / 3.2.4 / 2.2.2 / 1.3.1 cognitive WCAG criteria
Admin Client
Module 6 · Tool

🤖 Autonomous App ReplicatorBETA · NOT ENABLED

Scan, authenticate, discover pages, map to React Native components, and build a native APK/IPA

How it works
Enter URL
→
Capacitor 5 WebView shell
→
Gradle / Xcode build
→
GitHub Actions CI
→
Download APK / IPA

HTML → React Native Mapping

  • div / section / nav → <View>
  • p / span → <Text>
  • h1–h6 → <Text accessibilityRole="header">
  • a / button → <Pressable accessibilityRole="button">
  • img → <Image accessibilityLabel="[alt text]">
  • minHeight / minWidth: 44 on all Pressables (WCAG 2.5.5)

Key Facts

  • Auth-aware: detects login forms, prompts for credentials via SocketIO
  • Deep scope: crawls up to 20 internal pages (authenticated BFS)
  • Component manifest: per-page RN analysis with WCAG 2.2 touch targets
  • Capacitor 5 + GitHub Actions (Gradle Android / Xcode iOS)
  • Real-time terminal: colour-coded 5-phase progress
  • Build history + component manifest persisted to GCS
Admin Client
Module 7 · Tool

🛡️ ANDI InspectorBETA · NOT ENABLED

SSA.gov's trusted accessible name & description inspector — Section 508 compliance

How it works
Enter URL
→
Playwright injects ANDI v29.2.2
→
5 modules run
→
Excel report

5 ANDI Modules

  • Focusable Elements: keyboard tab order, focus indicators
  • Images / Graphics: alt text quality, decorative handling
  • Tables: header association, caption presence
  • Page Structure: landmarks, heading hierarchy
  • Color Contrast: WCAG 1.4.3 / 1.4.6 ratios

Output

  • Excel report with Section 508 criterion code per alert
  • Danger / Warning / Caution severity levels
  • Tab-Through sequence: focus order + focus trap detection
  • WCAG 4.1.2 accessible name & description checks
  • Trusted by US Federal government (SSA.gov)
  • Live terminal output during scan
Admin Client
Module 8 · Tool

🔊 EQA Voice EngineBETA · NOT ENABLED

Simulates what a screen reader announces — virtual NVDA spoken phrase log

How it works
Enter URL
→
AOM walk (Playwright accessibility tree)
→
Virtual NVDA phrases generated
→
Vertex AI WCAG mapping
→
Report

What it detects

  • Heading level gaps (h1 → h3 skips h2)
  • Empty links — "link" with no text announced
  • Unlabelled buttons and inputs
  • Missing alt text on meaningful images
  • Missing main landmark
  • Duplicate link text pointing to different URLs

AI Enhancement

  • Vertex AI (Gemini 1.5 Pro via ADC) maps spoken phrases → WCAG SCs
  • No API key needed — uses GCP Application Default Credentials
  • SR score per page (0–100) + Actual Result column in issues table
  • Download Transcript (.txt) — complete spoken phrase log
  • WCAG 1.1.1 / 1.3.1 / 2.4.4 / 4.1.2 / 1.3.6 checks
Admin Client
Platform Intelligence

🤖 AI Advisory Panel

Claude · Gemini REST API · Vertex AI — concurrent analysis, per-scan and per-deploy

Claude (Anthropic)

  • Compliance score per scan (0–100)
  • Critical fixes with developer code hints
  • WCAG 2.1 / GIGW / RPwD breakdown
  • AT simulation — virtual screen reader pass
  • Concurrent via asyncio.gather — no extra latency

Gemini REST API (Google)

  • Independent analysis — "healthy challenge"
  • WCAG mapping for Voice Engine spoken phrases
  • Pre-deploy code review (AI Panel protocol)
  • API key based — gemini-2.5-flash model
  • Approves every deploy via gemini_panel.py

Vertex AI · Gemini 1.5 Pro (Google Cloud)

  • ADC-based (Application Default Credentials) — no API key needed on Cloud Run
  • GCP-native architecture review: Cloud Run, IAM, GCS
  • Third independent voice — cross-validates Claude + Gemini REST
  • All three must APPROVE before any implementation begins
🔒 Governance Rule: Unanimous approval from all three models required before any feature, fix, or architectural change is implemented. Any CONCERN blocks the deploy.
Access Control

👥 User Roles

Role-based access — every user sees exactly what they need

Role Access & Capabilities
Admin Everything — all scans (full website scan, app scan, dynamic scan), all tools, Mission Control admin panel (Users, UPI Orders & 18% GST Ledger, Promo Vouchers, School & B2B Groups, API keys, backup/restore, AI settings, stable build), unlimited weekly scans, delete history
Group Admin School, University, Private Institution, QA Team or Marketing Cohort lead (/group-admin) — tracks total seats purchased vs. active, how many members logged in, total logins, and total scans/updates completed; assigns member names/emails, reissues seat passwords, and exports CSV reports
Client Scans + tools (no admin panel) — strictly isolated per-user workspace (views only their own scan history and last run). Provisioned via instant UPI QR checkout (18% GST split) or Promo/Access Vouchers across Classical (Starter) and Dual AI (Professional) tiers.
Viewer Read-only — all history tabs, all reports, dashboard, quality. Cannot trigger any scan or tool.
Mobile App Scanner only — upload APK/IPA, store URL analysis, app scope, app scan history. Website Scanner and other tools hidden.
Web Website Scanner only — scope & extractor, full website scan, website scan history. App Scanner and other tools hidden.
Report External stakeholders — shared report links only (/share/, /visual/, /screenshot/). Cannot log into main platform. Used for client deliverables.
Weekly Quota: Resets every Monday (ISO week). Client role: 10 scans/week across /api/scan, /api/scope/extract, /api/mobile/upload, /api/batch/start. Dry-run does NOT count against quota.
Infrastructure

🏗️ Architecture

Cloud-native, horizontally scalable, GCS-persistent

Client
🌐 User Browser
→
eqa11y.empowerqa.com · asia-south1 Mumbai
☁️ Google Cloud Run
Flask + SocketIO (Python 3.11) Playwright Chromium + Firefox camoufox stealth curl_cffi TLS 8 GiB · 4 vCPU · 1–6 instances
↓
Two ways to trigger — the same engines, the same report
🤖 Automated crawl — discover → walk or ✋ Guided manual session — a human drives → 🎯 Unified Scanner (/scanner) → 📄 One consolidated report
In-process observer layer — every scan is watched
🔒 Interaction Gate (one auth handler) → 📡 Event Bus (SCAN_INTEGRITY_FAILED) → 🔁 Run-lock (one scan at a time) 🫀 Watchdog (scrub → dedup → email) 🤖 Self-heal + LLM diagnosis (opt-in)
↓
Persistent Storage
🗄️ GCS Bucket: empowerqa-scanner-runs
runs/ mobile/ scope/ backups/ test-results/ Survives any redeploy ✓
↓
CI/CD & Dynamic Scan
⚙️ GitHub Actions
Dynamic Scanner (Firebase Test Lab)
App Developer
NVDA AT Testing
Deploy pipeline
GCP · App Default Credentials
🔷 Vertex AI
Gemini 1.5 Pro
Voice Engine WCAG mapping
Screen reader analysis
No API key needed
Per-scan AI Advisory
🤖 AI APIs
Claude (Anthropic)
Gemini REST API (Google)
Concurrent via asyncio
Pre-deploy: +Vertex AI Panel
8 GiB
Memory
4 vCPU
CPU
6
Max instances
3600s
Request timeout
asia-south1
Region (Mumbai)
2,150+
Tests in suite
Capability · A second way to run every engine

✋ Interactive Manual Audit

For the pages a crawler can never reach — you drive a real browser or device, audit any screen on demand, and it all ends in one consolidated report

The gap this closes
An automated crawler can only audit what it can reach on its own. It cannot fill in a three-step form in the right order, complete a checkout, or open a dashboard that only appears after a one-time code. Those are usually the highest-value screens you own — and they were the ones no automated report ever covered.
How it works
Start a guided session
→
You browse & sign in
→
Audit This Page
→
Repeat anywhere
→
End session
→
One consolidated report

Where automation stops

  • A checkout three steps deep inside a cart
  • Forms that must be completed in a particular order
  • Dashboards behind a multi-stage or one-time-code sign-in
  • Screens only reachable through a specific gesture or sequence
  • Anything gated by a puzzle a machine cannot solve

What you get

  • The same audit engine as an automated scan — identical WCAG 2.2 & 2.1 A/AA checks
  • One consolidated report: VPAT, Excel report and annotated screenshots
  • Scope — every page you visited plus the links they exposed, with the same pricing tiers
  • URL Extractor — the same Title / Valid / Invalid columns as an automated extract
  • DOC Extractor & DOC Test — every document the site publishes, inventoried with the pages that link it, then audited against WCAG and PDF/UA (ISO 14289-1). Measured on a client's own site: 53 documents, 40 of them untagged and so unreadable to a screen reader — a larger exposure than the 15-page web audit found
  • Every run named by its action — Recent Scans and History carry a filter per action, so a document extraction is never listed under a different button's name, and its count is in documents rather than pages
  • Lands in Recent Scans and History like any other run

Your credentials stay yours

  • You type into the real site — the password is used for that session only
  • Password fields are blacked out on every screenshot before it is saved
  • Password values never reach a log, a report or an alert
  • Nothing is retained once the session ends

Real browsers, real devices

  • Chromium, Firefox or WebKit — pick the engine you need to prove
  • Desktop, tablet or mobile viewport, switchable mid-session without losing your sign-in
  • Full-screen preview for close inspection
  • On mobile, drive a real Android or iOS device on your own machine
  • The preview always names how it is refreshing, so a slower engine never looks broken
An addition, not a replacement. The automated crawl is unchanged and is still the fastest way to cover a large public site. Most teams use both — automation for breadth, a guided session for the journeys that actually matter.
Admin Client
Tool Comparison

Choose the right tool for your audit

✅ = supported  |  — = not applicable

🌐 Website Accessibility Tools
Capability 🔍 Extractor 🌐 Website Scanner ✋ EQA Manual+ 🔊 Voice Engine 🛡️ ANDI Inspector
URL / page discovery✅ 3-layer✅ Auto———
Bot-bypass (camoufox)✅✅———
WCAG 2.2 AA checks (axe-core)—✅———
Audio / Caption checks (1.2.2)——✅——
Readability score (3.1.5)——✅——
Screen reader spoken phrases———✅ AOM—
ANDI accessible-name audit————✅
Section 508 (US Federal)————✅
AI Advisory (Claude + Gemini)—✅—✅ Vertex AI—
structured CSV✅✅———
Excel / VPAT report—✅ Excel report + NVDA + VPAT——✅ 8-col
📱 App Accessibility Tools
Capability 📱 Static Scanner 🤖 Dynamic Scanner BETA 🔧 App Developer
No device / emulator needed✅——
Android APK✅ static analysis✅ MediumPhone.arm / API 30✅ output
iOS IPA✅ static analysis✅ iPhone 14 Pro / iOS 16.6✅ output (Xcode sim)
Play Store / App Store URL✅——
Live Robo crawl (real interactions)—✅ Firebase Test Lab—
Gemini Vision WCAG analysis (iOS)—✅ impact ≤ serious—
WCAG-M compliance grade (A–F)✅✅—
Builds APK from any web URL——✅ Capacitor 5
SpeedUnder 2 min5–15 min (cloud)5–8 min (GitHub Actions)
Continuous Improvement · Human-Proxy QA

How we know it works

Every release is gated by ~5,600 automated tests, including a blocking suite of end-to-end journeys that must pass before anything ships.

⚡ What you get
EQA11y, SAME BOX — the WCAG audit now runs on the existing 4 GiB / 1 vCPU instance at no added infrastructure cost. It had been held behind a 12 GiB requirement that was never a measurement of this audit — that figure was set for a heavier job running Chrome, Firefox, Safari and a stealth browser together, plus mobile scanning. EQA11y drives one browser per run, so the measured ceiling sits well inside the current instance. The one trade-off is stated rather than hidden: running two browsers side by side to compare counts is unavailable here and is refused with a reason, instead of quietly returning a single-browser report that would look complete. Choosing Chrome or Firefox per run is unaffected, and the two agree.
YOUR SITE AS VISITORS SEE IT — audits were rendering pages with no stylesheets: the server was refusing to send its own requests for CSS, images, fonts and scripts, so colour findings described default black-on-white rather than your palette, and one page measured 7,463 pixels tall instead of 4,927. Every asset now loads — on the benchmark site, 13,343 style rules where there had been 217 — and the production rendering matches a developer machine exactly. Contrast results dropped accordingly, because the earlier failures were about a page nobody could see. If styles ever fail to load again, the report says so on its face instead of scoring the wrong page.
TRUTHFUL CONTROLS — Stop was broken for every multi-viewport scan AND reported that it had worked; a control that lies about succeeding is worse than one that plainly fails, because it removes the reason to try anything else. Stop now dispatches through one server-side endpoint and reports the real HTTP result.
HONEST ESTIMATES — the Scope quote called its page count a “lower bound”. Measured against a live site: sitemap 229, real crawl 89 — a 2.6× over-count on the figure a client is quoted on. The report no longer claims a direction it cannot know, and a “Crawl it properly” button makes the verified count one click away.
EVERY LANGUAGE — page titles in Devanagari, Telugu, Tamil, Bengali, Gujarati, Arabic and Urdu are preserved. The CSV Title column was 97% unusable on a Marathi site because the sanitiser stripped every non-Latin character.
ONE OF EVERYTHING — one report shell, one history row, one Recent-Scans list and one export-filename contract across all seven engines, so a fix lands once instead of six times.
INTERACTIVE — A second way to trigger the same engines: you drive a real browser or device and audit any page or screen on demand, for the pages a crawler can never reach (checkout three steps into a cart, a form that must be filled in order, a dashboard behind a multi-stage login). Ends in the same consolidated report — VPAT, Excel and annotated screenshots. Password fields are blacked out on screenshots before saving. Pick the browser (Chromium / Firefox / WebKit) and device (desktop / mobile / tablet, switchable mid-session), with a full-screen preview. Chromium streams frames; Firefox and WebKit have no screencast API so they poll — the UI names the active transport instead of letting the slower one look broken, and credential black-boxing is identical on both. Full parity on actions: Scope (visited pages + harvested links, same pricing tiers and copy list) and URL Extractor (same Title/Valid/Invalid columns, same writer) — both landing in Recent Scans and History. Off by default; the automated crawl is untouched.
UNIFIED — Six front doors became one: Website Scanner, Mobile Scanner, Scope/Extractor, ANDI, Screen Reader & Manual+ collapsed into a single /scanner. Pick a target (PDF · Website · Mobile App), the page reveals only the audits that apply. Navigation shrank to Scanner · History · About.
ONBOARDING — The setup guide now assumes a genuinely empty laptop. Python 3.11+, adb on PATH and the Xcode command-line tools are each spelled out with a check command, a fix and a verification — and the whole guide auto-switches to macOS or Windows, so nobody is ever handed a command their machine cannot run. Web, PDF and store-listing audits still need nothing installed at all.
WATCHDOG — An embedded intelligence layer: deterministic detectors on one event bus catch the silent failures a green checkmark hides, a regex scrub redacts every secret before any alert leaves, and the team is e-mailed. A global run-lock keeps it to one scan at a time. Self-heal + LLM diagnosis are opt-in and bounded.
GOLDEN FLOWS — A blocking release gate covering the journeys that must never break: a scan honouring the page count you chose, that scan appearing in your history, a login wall prompting you instead of being skipped, and the full create → download → delete lifecycle. Each asserts the result of the action — a deleted run really returns “not found” — not that a button exists. Red gate, no release. Added after regressions reached users while the wider suite was 2869/2869 green.
Unified Interaction Architecture: one shared login/OTP/CAPTCHA handler across Extractor, Website & Mobile Scanner, proven by an end-to-end suite that answers the prompts itself.
RULE — the interaction design is now locked: any capability added or re-enabled later (PDF, ANDI, Voice Engine, Manual+) must use the same shared component, enforced by an automated spec.
AI — four provider paths (Claude, Gemini, Gemini Vision, Vertex) each degrade to a typed error: one going down never crashes a scan or silently reports "no issues". Interactive execution-flow diagram now on the About page.
Universal Interaction Handler: sign-in / OTP / CAPTCHA popups on Web, iOS & Android, deterministic-first detection, on by default, unified 120 s countdown.
Controls that tell the truth
If a scan cannot finish, it says so. A run that reached nothing is never graded as a pass, and a partial audit states its own coverage instead of quietly scoring itself.
Estimates you can act on
The page count you are quoted on comes from a real crawl, not an index that may be stale or incomplete — and we say which method produced it.
Your site’s own language
Page titles in Devanagari, Telugu, Tamil, Bengali, Gujarati, Arabic and Urdu appear in your inventory exactly as your site writes them.
One scanner, not six
Website, mobile app and PDF in a single guided flow — one report shell, one history, one set of downloads.
🗺 Planned Next
Automated Iteration Log Generation
Write iteration logs programmatically after every scan cycle — no manual button click required.
EQA Manual+ Phase 2
Real NVDA via Guidepup (Windows CI) + VoiceOver macOS for genuine AT coverage beyond simulation.
Expanded Contract Tests
All report outputs verified against master books_toscrape CSV reference format.
Quality by the numbers
5,400+
automated tests
25
iteration logs
8
pages verified
All improvements require unanimous approval from 3-model AI Panel (Claude · Gemini REST · Vertex AI) before implementation. Human-Proxy QA uses NORMAL_SITES + BOT_PROTECTED URLs — never example.com.
Summary

EmpowerQA covers the full WCAG testing lifecycle

From page discovery to report delivery — automated, AI-assisted, role-controlled

🔍 Discovery

Scope & Extractor — find every page before testing begins. Works on government portals, Akamai-protected sites, Next.js and WordPress apps.

🧪 Testing

Website Scanner · App Scanner (Static) · Dynamic App Scanner · ANDI Inspector · EQA Manual+ · EQA Voice Engine · Cross-Browser (Firefox + Safari/WebKit) — 9 modules covering automated + AT gaps.

📦 Transpile

App Developer — wrap any web app as a React Native APK/IPA for mobile accessibility audit with the App Scanner.

✅ Standards Covered
WCAG 2.2
W3C Web Content Accessibility Guidelines — Level A, AA & AAA
GIGW 3.0
Guidelines for Indian Government Websites — mandated for all .gov.in domains
RPwD Act 2016
Rights of Persons with Disabilities Act — Indian statutory requirement
Section 508
US federal IT accessibility law — referenced for international clients
WCAG 2.1 Mobile
Touch target size, orientation lock, motion actuation (SC 2.5.x)
EN 301 549
European ICT standard — Section 11 covers software & mobile apps
Android A11y
Content descriptions, focusability, TalkBack — APK static checks
iOS VoiceOver
Accessibility labels, traits & actions for IPA — manifest & XML analysis
💬

Questions?

We're happy to walk through any module, show a live scan, or discuss your accessibility testing requirements.

🌐 eqa11y.empowerqa.com