w3resource

See What Screens See: The ML-Powered Accessibility Scanner


Accessibility Scanner with ML (TensorFlow.js)

Your website might look beautiful. But is it invisible to millions of users?

You've spent hours perfecting your color palette. The contrast is stunning — on your monitor. But for someone with low vision, that "subtle" gray-on-gray text is completely illegible. You added alt text to your images — at least, you think you did. Did you miss one? Two? Twenty?

Now imagine clicking a single button and watching your website transform. Every accessibility issue glows in real time. Low-contrast text pulses red. Images without alt text flash orange. Elements with incorrect ARIA attributes highlight in yellow. Your focus order appears as numbered trail — tab, tab, tab — revealing exactly where keyboard users get trapped.

You fix one issue. The heatmap updates instantly. Within minutes, your site goes from "probably accessible" to certifiably compliant.

That's not a dream. That's the Accessibility Scanner with ML — a TensorFlow.js-powered audit tool that runs entirely in your browser, never sends your code to a server, and catches issues your eyes would miss.

What It Does: Instant, Private, Intelligent Accessibility Audits

Traditional accessibility scanners send your entire HTML to a cloud server for analysis. That's slow, expensive, and a privacy nightmare. Our scanner works locally — everything happens inside your browser.

What It Scans

Category Issues Detected ML Enhancement
Color Contrast Text/background ratio below WCAG 2.1 standards (4.5:1 for normal text, 3:1 for large text) Model analyzes complex gradients and background images — not just solid colors
Missing Alt Text <img> tags without alt attribute or empty alt on meaningful images ML classifies image context to determine if alt is truly needed (decorative vs. informative)
ARIA Attributes Invalid role, aria-label on non-interactive elements, missing required ARIA children Model validates complex widget patterns (modals, tabs, carousels)
Focus Order Keyboard traps, illogical tab order, hidden focusable elements Heatmap visualization of tab sequence with logical flow analysis
Heading Structure Skipped heading levels (h1 to h3 without h2), empty headings, multiple h1 ML suggests optimal heading hierarchy based on visual layout
Button/Link Labels Empty buttons, unlabeled icon buttons, ambiguous link text ("click here") Natural language processing evaluates link context
Form Labels Missing <label>, incorrect for associations, placeholder-as-label anti-pattern ML identifies visual label proximity even when HTML association is missing
Motion Sensitivity Auto-playing animations, parallax scrolling, motion-triggered effects Detects potential vestibular disorder triggers

Visual Heatmaps on a Virtual DOM

Scan results aren't just a list of errors. They're visual:

  • Color contrast heatmap – Red overlay where text fails WCAG, green where it passes
  • Missing alt heatmap – Orange rectangles over images without descriptions
  • Focus order trail – Numbered blue dots showing your tab sequence (1, 2, 3, 42...)
  • ARIA error overlay – Purple highlights on elements with invalid attributes
  • Clickable area map – Shows actual hit targets vs. perceived targets

All rendered on a virtual DOM — we scan safely without modifying your live site.

Compliance Scoring

Score Meaning WCAG Level
A (100-90) Excellent — passes all automated checks WCAG 2.1 AA
B (89-75) Good — minor issues, manual review recommended WCAG 2.1 A
C (74-60) Needs work — multiple violations Below A
D (59-0) Critical — severe accessibility barriers Fail

We provide per-page scores and site-wide aggregate (for multi-page scans).

The Modern Tech Stack: ML That Never Leaves Your Browser

TensorFlow.js: Local Machine Learning

TensorFlow.js is Google's library for running machine learning models directly in the browser. No servers. No API keys. Just your device's GPU or CPU.

What our models do:

Model Size Purpose
Color Contrast Analyzer 2.3 MB Extracts foreground/background colors from complex DOM trees, handles gradients and images
Image Context Classifier 4.7 MB Determines if an image is decorative (no alt needed) or informative (alt required)
Layout Parser 6.1 MB Identifies visual relationships (which label belongs to which input) even when HTML is broken
Focus Flow Analyzer 1.8 MB Simulates tab navigation and detects logical inconsistencies
Natural Language ARIA Evaluator 8.2 MB Checks button/link text quality and ARIA label relevance

total model size: ~23 MB (downloaded once, cached via PWA)ext

Inference time per page:

  • Small page (<50 elements): 200-400ms
  • Medium page (50-200 elements): 500-800ms
  • Large page (200-500 elements): 1-2 seconds

All on your device. No waiting for cloud servers.

Shadow DOM: Safe, Isolated Scanning

We don't modify your live website. We create a Shadow DOM — a completely isolated copy of your page's structure.

Benefits:

  • Your site remains untouched (no flickering, no mutations)
  • We can inject our heatmap overlays without interfering with your CSS
  • Scans run in a sandbox — if something crashes, your page is fine
  • Multiple scans can run simultaneously without conflicts

Web Locks API: Conflict-Free Concurrent Scans

Scanning large sites with multiple tabs? The Web Locks API prevents race conditions.

javascript:


// Request a lock for scanning a specific URL
navigator.locks.request('accessibility-scan-example.com', async () => {
  // Only one scan runs at a time for this URL
  await performScan();
});

What this means: You can open 10 tabs, scan 10 different pages simultaneously, and our tool coordinates efficiently — no crashes, no corrupted results.

Local Storage + IndexedDB: Persistent Results

Scan results are saved locally:

  • Comparison tracking – Scan today, scan next week, see improvements
  • Exportable reports – JSON, CSV, HTML, PDF
  • Historical trends – Chart your accessibility progress over time

Your Benefits: Why Local ML Scanning Changes Everything

Privacy-First (No Server Upload)

This is the killer feature. Your HTML never leaves your computer.

Traditional Scanner Our Scanner
Sends entire page HTML to cloud Everything runs locally
Your code appears on third-party servers Your code stays private
Slow (upload + processing + download) Instant (no network round-trip)
Requires internet Works offline
Can't scan localhost/dev sites Can scan any URL (including http://localhost:3000)

For enterprise users: This is GDPR and HIPAA compliant by default. Your proprietary code never touches our infrastructure.

Instant Feedback (No Waiting)

Cloud scanners take 5-30 seconds per page. Our scanner:

  • Small page: 0.2 seconds
  • Medium page: 0.5 seconds
  • Large page: 2 seconds

Live editing mode: As you type HTML/CSS in our code editor, the scanner re-runs automatically. You see accessibility issues appear and disappear with every keystroke.

Scan Localhost and Development Sites

Most online scanners require a public URL. We don't.

Enter http://localhost:3000 (or any internal IP) and scan your development environment before deployment. Catch accessibility issues before they reach production.

Works with:

  • localhost:3000, localhost:8080, any port
  • 192.168.x.x (local network)
  • file:// protocol (local HTML files)
  • Staging environments behind VPNs

Great for Compliance Teams

Generate WCAG 2.1 AA compliance reports with:

  • Executive summary (pass/fail by category)
  • Detailed issue list with code snippets
  • Screenshots with heatmap overlays
  • Remediation suggestions (example fixes)
  • Export as PDF, HTML, or CSV

Audit-ready documentation for legal and compliance teams.

Learn Accessibility by Doing

The scanner doesn't just tell you what's wrong — it teaches you why.

For each issue:

  • Explanation: "Contrast ratio 2.3:1 fails WCAG 2.1 AA (minimum 4.5:1)"
  • Impact: "Users with low vision cannot read this text"
  • Fix suggestion: "Change text color from #888888 to #333333"
  • Example code: How to fix it

Over time, you internalize accessibility best practices.

Continuous Integration (CI/CD)

Automate accessibility testing in your pipeline:

bash:


# CLI mode (headless Chrome)
npx accessibility-scanner scan https://staging.myapp.com --threshold 90

# Output:
# ✓ Homepage: 92/100 (A)
# ✓ Product page: 88/100 (B)
# ✗ Checkout page: 67/100 (C) - FAILED
# [ERROR] Accessibility threshold not met

Run on every pull request. Prevent accessibility regressions.

Real-World Scenarios (Try These Today)

Scenario 1 – The E-Commerce Accessibility Audit

Setup: Your online store has 500 products. You're not sure if all images have alt text.

Action: Run the scanner on your product listing page.

Result: Heatmap shows 47 images without alt text. 12 have generic alt="image". Scanner suggests alt text based on product names. You fix in 10 minutes instead of 10 hours.

Scenario 2 – The Design System Validation

Setup: Your team built a new design system. You want to ensure all components are accessible before rollout.

Action: Scan your component library (Storybook running on localhost).

Result: Button component passes contrast. Card component fails (low-contrast link text). Modal component has incorrect ARIA attributes. You fix before any developer uses them.

Scenario 3 – The Legal Compliance Nightmare

Setup: Your company received an ADA compliance demand letter. You need to prove you're fixing issues.

Action: Run the scanner on 100 critical pages. Generate PDF report.

Result: 47-page report with heatmaps, issue counts, and remediation plan. Legal team approves. You have documentation for the plaintiff.

Scenario 4 – The WordPress Plugin Audit

Setup: You manage 50 client WordPress sites. Each uses different plugins. You have no idea if any are accessible.

Action: Run the scanner on each site (saved URLs in your account).

Result: Three plugins are causing focus traps (keyboard users can't tab past a widget). You disable them and file bug reports with the authors.

Scenario 5 – The Live Coding Class

Setup: You're teaching web development. Students keep forgetting alt text.

Action: Share the scanner link. Students paste their HTML. Heatmap shows missing alt immediately.

Result: After one class, alt text omissions drop by 90%. Visual learners internalize the pattern.

How to Get Started

1. Open the Accessibility Scanner

Find "Accessibility Scanner" in your dashboard navigation.

2. Choose Your Input Method

Method Best For
Paste HTML Quick tests, code snippets, examples
Enter URL Live websites, staging environments
Scan Localhost Development sites (port 3000, 8080, etc.)
Upload HTML file Local files, email attachments
Browser Extension One-click scan of any page you're viewing (coming soon)

3. Configure Scan Options

Option Choices Default
WCAG Version 2.1, 2.2, 3.0 (draft) 2.1 AA
Scan depth Single page, crawl up to 10/50/100 pages Single page
Authentication Basic auth, cookie login (for private sites) None
Include iframes Yes, No No
ML model accuracy Fast (CPU), Balanced, Accurate (GPU) Balanced

4. Click "Start Scan"

Watch the progress bar. For single pages, results appear in 0.5-2 seconds.

5. Review Results

  • Summary dashboard – Score, issue counts by category
  • Heatmap view – Visual overlay on your page
  • List view – Sortable, filterable issue table
  • Code view – See exactly which HTML elements are problematic

6. Fix Issues

Click any issue → See fix suggestion → Click "Copy fix" → Paste into your code editor → Re-scan to verify.

7. Export Report

  • Executive summary (PDF) – For stakeholders
  • Detailed audit (HTML) – For developers
  • CSV data – For spreadsheets
  • JSON – For custom tooling

Advanced Features (Power Users)

Automated Remediation Suggestions

For common issues, the scanner suggests exact fixes:

Issue Suggestion
Missing alt text alt="Product description — {product name}"
Low contrast Change color from #888 to #333
Missing form label <label for="{id}">Field name</label>
Empty button Add text or aria-label
Heading skipped Change <h3> to <h2>

You can apply fixes directly in our code editor (for pasted HTML).

Batch Scanning (Multi-Page)

Enter a sitemap URL or list of URLs. The scanner crawls and audits:

  • Up to 500 pages (free tier)
  • Progress tracking
  • Aggregate scores
  • List of worst-performing pages

Continuous Monitoring

Schedule automatic scans:

  • Daily, weekly, monthly
  • Email alerts when score drops below threshold
  • Integration with Slack, Teams, Discord

Regression Detection

Compare two scans to see what changed:


Previous scan (May 1):  87/100 (B)
Current scan (May 30):  92/100 (A) +5 points

Improvements:
+ Fixed 12 missing alt attributes
+ Improved contrast on primary button

Regressions:
- New modal missing ARIA labels (3 issues)

Team Collaboration

  • Share scan results with team members
  • Assign issues to specific developers
  • Add comments to individual findings
  • Track fix status (Open → In Progress → Fixed → Verified

Understanding Your Results (Interpretation Guide)

Score Breakdown

Category Weight What It Measures
Perceivable 35% Text alternatives, captions, adaptability, distinguishability
Operable 35% Keyboard accessibility, enough time, seizures, navigation
Understandable 20% Readable text, predictable behavior, input assistance
Robust 10% Compatible with assistive technologies, valid HTML

Issue Severity Levels

Severity Impact Example
Critical Blocks access entirely Keyboard trap, missing form labels
Serious Major barrier Low contrast, missing alt on informative images
Moderate Significant friction Poor heading structure, ambiguous link text
Minor Inconvenience Slightly low contrast (4.4:1 vs 4.5:1)

False Positives (What the ML Can't Know)

Automated tools catch ~30-40% of accessibility issues. The rest require manual testing.

Our scanner is honest about its limitations:

Can Detect Cannot Detect (Manual Testing Required)
Missing alt text Meaningful alt text (is it descriptive enough?)
Color contrast Comprehensible color choices (red/green only?)
ARIA presence Correct ARIA usage (is the widget actually implemented right?)
Focus order logic Sensible focus order (does it match visual layout?)

We flag manual review items clearly.

Privacy & Security (We Take This Seriously)

Your Code Never Leaves Your Device

  • All ML inference runs locally via TensorFlow.js
  • URLs and HTML are processed in your browser tab
  • We don't log, cache, or transmit your content
  • No analytics on what you scan

What We Do Collect (Anonymous)

  • Feature usage (button clicks, not content)
  • Scan duration (performance monitoring)
  • Error rates (debugging)

We cannot see your code. We cannot share your code. Your code is yours

Enterprise Self-Hosted Option

For maximum security, self-host the entire scanner:

bash:


docker pull accessibility-scanner/self-hosted
docker run -p 8080:80 accessibility-scanner/self-hosted

Run on your internal network. Never touches the public internet.

Limitations (Honest Expectations)

Feature Supported? Notes
Color contrast (solid colors) Yes WCAG 2.1 compliant
Color contrast (gradients) Yes ML-powered estimation
Color contrast (background images) Partial Works for simple images, complex scenes may need manual review
Alt text detection Yes Flags missing alt
Alt text quality evaluation Partial ML can detect generic alt ("image", "photo") but not full semantic correctness
ARIA validation Yes Checks against WAI-ARIA 1.2 spec
Focus order Yes Simulates tab navigation
Screen reader simulation No Requires actual screen reader testing
Motion sensitivity (vestibular) Partial Detects auto-play animations, not severity
Cognitive accessibility No Entirely manual review
PDF accessibility No Separate tool required
Mobile app accessibility No Web only

Frequently Asked Questions

Q: How accurate is the ML model?

A: ~85-95% for automated checks (contrast, missing alt, ARIA syntax). ~70-80% for complex cases (image context classification). We prioritize low false negatives (catching real issues) over low false positives.

Q: Does this replace manual accessibility testing?

A: No. Automated tools catch ~30-40% of issues. Manual testing with screen readers and keyboard-only users is still required for full compliance. Our scanner is a force multiplier, not a replacement.

Q: Can I scan password-protected pages?

A: Yes. Provide basic auth credentials or cookies in the scanner settings.

Q: Is this free?

A: Yes. Free tier includes unlimited single-page scans, batch scans up to 10 pages, and standard reporting. Pro tier (coming soon) adds 500+ page batch scans, continuous monitoring, team collaboration, and API access.

Q: How is this different from Lighthouse?

A: Chrome's Lighthouse includes accessibility audits but is limited (fewer checks, no ML). Our scanner has 3x more audit rules, ML for complex cases, heatmap visualization, and batch scanning.

Q: Can I integrate this into my CI/CD pipeline?

A: Yes. CLI version available (npm package). Run on every pull request.

Q: Does it work with single-page apps (React, Vue, Angular)?

A: Yes. Our scanner waits for DOM mutations (via MutationObserver) before scanning. For SPAs, you may need to trigger a manual scan after navigation.

Q: What about iframes and shadow DOM?

A: Optional. Can scan iframes (same-origin only) and open shadow roots (if mode: 'open').

The Future of ML-Powered Accessibility

We're actively building:

  • Screen reader simulation – Text-to-speech output for testing (client-side)
  • Cognitive load analysis – Detects complex sentences, jargon, readability scores
  • Motion sickness prediction – Flags potentially vestibular-triggering animations
  • Mobile touch target optimization – Tests if buttons are large enough for thumbs
  • Real-time code linting – Accessibility warnings as you type in our editor

Get Started in 60 Seconds

  1. Open the Accessibility Scanner from your dashboard
  2. Enter a URL (or paste HTML, or scan localhost)
  3. Click "Start Scan"
  4. Watch the heatmap appear – Red where text fails contrast, orange where alt is missing
  5. Click any issue – See exactly where and how to fix it
  6. Export your report – PDF for compliance, CSV for tracking


Follow us on Facebook and Twitter for latest update.