Skip to main content
Runs multiple accessibility analysis tools (axe-core and Pa11y) in parallel on the same target and combines the results. Issues are deduplicated based on WCAG criterion and element location, providing maximum coverage while avoiding duplicate reports.

Best For

Complete accessibility overview
Cross-validation between multiple engines
Maximum issue coverage
Comparing tool outputs for the same page

Parameters

url
string
URL of the page to analyze
Either url or html is required, but not both.
html
string
Raw HTML content to analyze (alternative to URL)Useful for analyzing HTML snippets with multiple validation engines.
tools
array
default:"[\"axe-core\", \"pa11y\"]"
Tools to run: "axe-core", "pa11y", "lighthouse"
["axe-core", "pa11y"]
Lighthouse requires a live URL — it will be skipped if you provide raw HTML.
options
object
Configuration options for the analysis

Response

success
boolean
required
Whether all analyses completed successfully
target
string
required
The analyzed URL or "[html content]"
toolsUsed
array
required
List of tools that were run (e.g., ["axe-core", "pa11y"])
issueCount
number
required
Number of unique issues (after deduplication)
deduplicatedCount
number
required
Total issues before deduplication
Compare this with issueCount to see how many duplicates were removed.
issues
array
required
Combined and deduplicated issues from all tools
See individual tool documentation for issue object structure.
issuesByWCAG
object
required
Issues grouped by WCAG criterion
{
  "1.1.1": [
    { "tool": "axe-core", "ruleId": "image-alt" },
    { "tool": "axe-core", "ruleId": "input-image-alt" }
  ],
  "1.3.1": [
    { "tool": "pa11y", "ruleId": "WCAG2AA.Principle1..." }
  ]
}
summary
object
required
Aggregated statistics
individualResults
array
required
Raw results from each tool
duration
number
Total analysis duration in milliseconds (tools run in parallel)

Examples

Analyze the accessibility of https://example.com using all available tools

Response Example

{
  "success": true,
  "target": "https://example.com",
  "toolsUsed": ["axe-core", "pa11y"],
  "issueCount": 8,
  "deduplicatedCount": 12,
  "issues": [
    {
      "id": "axe-core:image-alt:a3f8b9",
      "ruleId": "image-alt",
      "tool": "axe-core",
      "severity": "critical",
      "message": "Images must have alternate text",
      "humanContext": "**Non-text content (WCAG 1.1.1 - Level A)**...",
      "affectedUsers": ["screen-reader", "low-vision"],
      "priority": "critical",
      "remediationEffort": "low"
    }
  ],
  "issuesByWCAG": {
    "1.1.1": [
      {
        "tool": "axe-core",
        "ruleId": "image-alt"
      },
      {
        "tool": "axe-core",
        "ruleId": "input-image-alt"
      }
    ],
    "1.3.1": [
      {
        "tool": "pa11y",
        "ruleId": "WCAG2AA.Principle1.Guideline1_3..."
      }
    ],
    "2.1.1": [
      {
        "tool": "axe-core",
        "ruleId": "button-name"
      }
    ]
  },
  "summary": {
    "total": 8,
    "bySeverity": {
      "critical": 2,
      "serious": 4,
      "moderate": 2,
      "minor": 0
    },
    "byPrinciple": {
      "perceivable": 5,
      "operable": 3,
      "understandable": 0,
      "robust": 0
    },
    "byTool": {
      "axe-core": 5,
      "pa11y": 3
    }
  },
  "individualResults": [
    {
      "tool": "axe-core",
      "success": true,
      "issues": [],
      "duration": 2340
    },
    {
      "tool": "pa11y",
      "success": true,
      "issues": [],
      "duration": 1890
    }
  ],
  "duration": 2500
}

How Deduplication Works

When deduplicateResults: true (default), issues are considered duplicates if they:
  1. Reference the same WCAG criterion (e.g., both report WCAG 1.1.1)
  2. Target the same or similar DOM element (normalized selector matching)
  3. Report the same type of violation (e.g., missing alt text)
The tool with higher confidence or more detailed information is kept. The deduplicatedCount field shows how many issues were found before deduplication.

Example: Same Issue, Different Tools

axe-core reports:
{
  "tool": "axe-core",
  "ruleId": "image-alt",
  "location": { "selector": "img:nth-child(2)" }
}
Pa11y reports:
{
  "tool": "pa11y",
  "ruleId": "WCAG2AA.Principle1.Guideline1_1.1_1_1.H37",
  "location": { "selector": "html > body > img:nth-child(2)" }
}
After deduplication: Only one issue is reported (typically the axe-core version due to higher confidence).
Set deduplicateResults: false to see all issues from all tools, useful for comparing tool outputs or debugging.

Use Cases

Comprehensive Pre-deployment Audit

Run a complete accessibility analysis on https://staging.myapp.com before deploying to production
Catch the maximum number of issues by running all tools together.

Cross-validation Between Tools

{
  "url": "https://example.com",
  "tools": ["axe-core", "pa11y"],
  "options": {
    "deduplicateResults": false
  }
}
Compare what each tool finds to understand their different perspectives.

Maximum Confidence in Results

Analyze https://example.com with axe-core and Pa11y, show me only issues found by both tools
Issues found by multiple tools are highly reliable (low false positive rate).

Mobile Accessibility Audit

{
  "url": "https://responsive-site.com",
  "tools": ["axe-core", "pa11y"],
  "options": {
    "browser": {
      "viewport": {
        "width": 375,
        "height": 667
      }
    }
  }
}
Test mobile-specific accessibility issues with multiple engines.

Tool Comparison

Featureaxe-corePa11y
SelectorCompact CSSFull CSS path
Severities4 levels3 types
False positivesFewModerate
Speed~2-3s~2s
StandardsWCAG 2.0/2.1WCAG 2.0/2.1, Section 508

Benefits of Running Both

  • Validation - Issues found by both tools are highly reliable
  • Coverage - Each tool catches issues the other might miss
  • Confidence - Cross-referenced findings reduce false positives
  • Standards - Pa11y adds Section 508 compliance checking
The individualResults field lets you see exactly what each tool found separately, useful for understanding tool differences.

analyze-with-axe

Run only axe-core for fast, reliable results

analyze-with-pa11y

Run only Pa11y for Section 508 compliance

analyze-with-lighthouse

Get an accessibility score with Lighthouse

Full Accessibility Audit

Comprehensive audit workflow

Build docs developers (and LLMs) love