plasmate-a11y

March 26, 2026 · View on GitHub

Accessibility auditing powered by Plasmate's Semantic Object Model.

The insight: SOM is what screen readers always wanted — structured content with clear hierarchy and meaningful labels. By analyzing the SOM, we can instantly identify what a screen reader would "see" vs what's actually on the page.

Install

pip install plasmate plasmate-a11y

Quick Start

from plasmate_a11y import audit_url

result = audit_url("https://example.com")
print(f"Score: {result['summary']['score']}/100")
print(f"Errors: {result['summary']['errors']}")
print(f"Warnings: {result['summary']['warnings']}")

for issue in result['issues']:
    print(f"  [{issue['severity']}] {issue['message']}")

CLI

python -m plasmate_a11y https://example.com

Exit code is 1 if any errors are found — useful in CI pipelines.

What It Checks

RuleSeverityDescription
no-titleErrorPage missing title element
no-langErrorPage missing language attribute
heading-skipWarningHeading levels skip (e.g. h2 → h4)
no-h1ErrorPage doesn't start with h1
img-no-altErrorImages without alt text
empty-link-textErrorLinks with no text
vague-link-textWarningLinks with "click here" etc.
input-no-labelErrorForm inputs without labels
no-nav-landmarkWarningMissing navigation region
no-main-landmarkWarningMissing main content region

Programmatic Use

from plasmate_a11y import audit_url, audit_urls, format_report, format_markdown

# Single URL
result = audit_url("https://example.com")
print(format_report(result))          # terminal output with color
print(format_markdown(result))        # markdown table

# Multiple URLs
results = audit_urls(["https://a.com", "https://b.com"])
for r in results:
    print(format_report(r))

Why Plasmate for Accessibility?

Traditional accessibility auditors use Chrome + axe-core, which requires rendering the full page. Plasmate skips rendering and goes straight to semantic analysis:

  • 10× faster — no rendering overhead
  • Structured by default — SOM already represents what matters for a11y
  • Token-efficient — results are compact and machine-readable

Development

git clone https://github.com/plasmate-labs/plasmate-a11y.git
cd plasmate-a11y
pip install -e ".[dev]"
pytest

License

Apache 2.0 — see LICENSE.


Part of the Plasmate Ecosystem

Engineplasmate - The browser engine for agents
MCPplasmate-mcp - Claude Code, Cursor, Windsurf
Extensionplasmate-extension - Chrome cookie export
SDKsPython / Node.js / Go / Rust
FrameworksLangChain / CrewAI / AutoGen / Smolagents
ToolsScrapy / Audit / A11y / GitHub Action
ResourcesAwesome Plasmate / Notebooks / Benchmarks
Docsdocs.plasmate.app
W3CWeb Content Browser for AI Agents