# Benchmarks

axe-core vs `@accesslint/core`, tested against 5,000 sites from the Chrome UX Report.

## Speed

Median audit time across 4,498 successful site audits.

### Chart

Bar chart with 2 bars.

Bar chart comparing median audit time across tools.

The chart has 1 X axis displaying categories.

The chart has 1 Y axis displaying Milliseconds. Data ranges from 53 to 656.

Created with Highcharts 11.4.8

| Milliseconds | 0 | 255 | 750 | 1000 | 1250 | 1500 | 1750 | 2000 | 2250 | 2500 | 2750 | 3000 | 3250 | 3500 | 3750 | 4000 | 4250 | 4500 | 4750 | 5000 | 5250 | 5500 | 5750 | 6000 | 6250 | 6500 | 6750 | 7000 | 7250 | 7500 |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| Label | axe-core | @accesslint/core |

End of interactive chart.

## Coverage

What `@accesslint/core` detects and how often axe-core agrees. 87% of detections are confirmed by axe-core. Click a criterion to see examples.

| WCAG Criterion | @accesslint/core detects | axe confirms | @accesslint/core unique |
| --- | --- | --- | --- |
| [4.1.2 Name, Role, Value](/content/core/benches/criteria/4.1.2/index.html) | 2,922 | 2,584 | 338 |
| [1.4.3 Contrast (Minimum)](/content/core/benches/criteria/1.4.3/index.html) | 2,793 | 2,339 | 454 |
| [2.4.4 Link Purpose (In Context)](/content/core/benches/criteria/2.4.4/index.html) | 2,047 | 2,006 | 41 |
| [1.1.1 Non-text Content](/content/core/benches/criteria/1.1.1/index.html) | 1,532 | 1,363 | 169 |
| [1.3.1 Info and Relationships](/content/core/benches/criteria/1.3.1/index.html) | 928 | 578 | 350 |
| [1.4.4 Resize Text](/content/core/benches/criteria/1.4.4/index.html) | 912 | 907 | 5 |
| [3.1.1 Language of Page](/content/core/benches/criteria/3.1.1/index.html) | 832 | 829 | 3 |
| [2.1.1 Keyboard](/content/core/benches/criteria/2.1.1/index.html) | 340 | 121 | 219 |

### Chart

Bar chart with 2 data series.

Stacked bar chart showing @accesslint/core detections and confirmation by axe-core per WCAG criterion.

The chart has 1 X axis displaying categories.

The chart has 1 Y axis displaying Sites. Data ranges from 3 to 2922.

Created with Highcharts 11.4.8

| Sites | 0 | 100 | 2000 | 2500 | 3000 | 3500 | 4000 | 4500 | 5000 | 5500 | 6000 | 6500 | 7000 | 7500 | 8000 |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| Label | 4.1.2 Name, Role, Value | 1.4.3 Contrast (Minimum) | 2.4.4 Link Purpose (In Context) | 1.1.1 Non-text Content | 1.3.1 Info and Relationships | 1.4.4 Resize Text | 3.1.1 Language of Page | 2.1.1 Keyboard |

End of interactive chart.

## Key findings

- `@accesslint/core` is **12× faster** than axe-core at median
- **87%** of `@accesslint/core` detections are confirmed by axe-core
- Near-perfect agreement with axe-core on link-name, resize-text, and language-of-page

## Methodology

- **Sample**: 5,000 origins from the [Chrome UX Report](https://developer.chrome.com/docs/crux), seeded random sample
- **Runner**: Chromium via [Playwright](https://playwright.dev/), headless, on GitHub Actions (`ubuntu-latest`)
- **axe-core**: default configuration (no custom rules enabled). Only violations are compared
- **`@accesslint/core`**: latest, default configuration
- **Per-site timeout**: 15 s (navigation + audit), 5 concurrent pages per shard, 20 shards
- **Source**: [accesslint/accesslint-bench](https://github.com/accesslint/accesslint-bench)

Last updated February 16, 2026
