Skip to content
A command-line interface for the aXe accessibility testing engine
JavaScript HTML
Branch: develop
Clone or download

Latest commit

dependabot-preview and michael-siek chore(deps): [security] bump acorn from 6.1.1 to 6.4.1 (#139)
Bumps [acorn]( from 6.1.1 to 6.4.1. **This update includes a security fix.**
- [Release notes](
- [Commits](acornjs/acorn@6.1.1...6.4.1)

Signed-off-by: dependabot-preview[bot] <>

Co-authored-by: dependabot-preview[bot] <27856297+dependabot-preview[bot]>
Co-authored-by: Michael <>
Latest commit 7c60e01 Mar 18, 2020


Type Name Latest commit message Commit time
Failed to load latest commit information.
.circleci ci: add backup cache dependency (#140) Mar 18, 2020
.github chore: Update PR template Sep 12, 2019
lib fix: Enable using of --chrome-options argument (#134) Nov 21, 2019
test fix: Enable using of --chrome-options argument (#134) Nov 21, 2019
.gitignore chore: Release axe-cli 1.3.0 Nov 17, 2017
.npmignore add npmignore Feb 2, 2017
.snyk fix: Security vulnerability in hoek package (#50) Feb 19, 2018 chore(release): 3.2.0 Sep 30, 2019 docs: move publishing info to Aug 20, 2019
LICENSE Add documentation Oct 10, 2016 docs: fix '--verbose' option typo (#135) Dec 3, 2019
axe-cli have bin go through axe-cli Nov 22, 2016
index.js fix option Sep 23, 2019
package-lock.json chore(deps): [security] bump acorn from 6.1.1 to 6.4.1 (#139) Mar 18, 2020
package.json fix: drop node v6/7 support (#137) Dec 5, 2019


Greenkeeper badge

Join the chat at Version License

Provides a command line interface for aXe to run quick accessibility tests.

Getting Started

Install Node.js if you haven't already. This project requires Node 6+. By default, axe-cli runs Chrome in headless mode, which requires Chrome 59 or up.

Install axe-cli globally: npm install axe-cli -g

Lastly, install the webdrivers of the browsers you wish to use. A webdriver is a driver for your web browsers. It allows other programs on your machine to open a browser and operate it. Current information about available webdrivers can be found at selenium-webdriver project. Alternatively, you could use Webdriver manager


After installing, you can now run the axe command in your CLI, followed by the URL of the page you wish to test:


You can run multiple pages at once, simply add more URLs to the command. Keep in mind that axe-cli is not a crawler, so if you find yourself testing dozens of pages at once, you may want to consider switching over to something like axe-webdriverjs. If you do not specify the protocol, http will be used by default:


Note: If you are having difficulty with the color scheme, use --no-color to disable text styles.

Running specific rules

You can use the --rules flag to set which rules you wish to run, or you can use --tags to tell axe to run all rules that have that specific tag. For example:

axe --rules color-contrast,html-has-lang

Or, to run all wcag2a rules:

axe --tags wcag2a

In case you want to disable some rules, you can use --disable followed by a list of rules. These will be skipped when analyzing the site:

axe --disable color-contrast

This option can be combined with either --tags or --rules.

A list of rules and what tags they have is available at:

Saving the results

Results can be saved as JSON data, using the --save and --dir flags. By passing a filename to --save you indicate how the file should be called. If no filename is passed, a default will be used. For example:

axe --save deque-site.json


axe --dir ./axe-results/

Sending results to STDOUT

To output the test results to STDOUT, provide the --stdout flag. This flag has the side-effect of silencing all other logs/output (other than errors, which are written to STDERR).

To print the entire result object to your terminal, do:

axe --stdout

To pipe the results to a file, do:

axe --stdout > your_file.json

To pipe the results to a JSON-parsing program for further processing, do:

axe --stdout | jq ".[0].violations"

Defining the scope of a test

If you want to only test a specific area of a page, or wish to exclude some part of a page you can do so using the --include and --exclude flags and pass it a CSS selector:

axe --include "#main" --exclude "#aside"

You may pass multiple selectors with a comma-delimited string. For example:

axe --include "#div1,#div2,#div3"

Custom axe-core versions

Axe-cli will look for locally available versions of axe-core. If the directory from where you start axe-cli has an axe.js file, or has a node_modules directory with axe-core installed in it. Axe-cli will use this version of axe-core instead of the default version installed globally.

To specify the exact file axe-core file axe-cli should use, you can use the --axe-source flag (-a for short), with a relative or absolute path to the file.

axe --axe-source ./

Different browsers

Axe-cli can run in a variety of web browsers. By default axe-cli uses Chrome in headless mode. But axe-cli is equally capable of testing pages using other web browsers. Running in another browser requires that browser's webdriver to be available on your PATH. You can find a list of available webdrivers and how to install them at:

To run axe-cli using another browser, pass it in as the --browser option:

axe --browser chrome

Or for short:

axe -b c

Custom Chrome Flags

When using the Headless Chrome browser, you may provide any number of flags to configure how the browser functions.

Options are passed by name, without their leading -- prefix. For example, to provide the --no-sandbox --disable-setuid-sandbox --disable-dev-shm-usage flags to the Chrome binary, you'd do:

axe --chrome-options="no-sandbox,disable-setuid-sandbox,disable-dev-shm-usage"

CI integration

Axe-cli can be ran within the CI tooling for your project. Many tools are automatically configured to halt/fail builds when a process exits with a code of 1.

Use the --exit flag, -q for short, to have the axe-cli process exit with a failure code 1 when any rule fails to pass.

axe --exit

Timing and timeout

For debugging and managing timeouts, there are two options available. With --timer set, axe-cli will log how long it takes to load the page, and how long it takes to run axe-core. If you find the execution of axe-core takes too long, which can happen on very large pages, use --timeout to increase the time axe has to test that page:

axe --timeout=120

Delay audit to ensure page is loaded

If you find your page is not ready after axe has determined it has loaded, you can use --load-delay followed by a number in milliseconds. This will make axe wait that time before running the audit after the page has loaded.

axe --load-delay=2000

Verbose output

To see additional information like test tool name, version and environment details, use the --verbose flag, -v for short.

axe --verbose

ChromeDriver Path

If you need to test your page using an older version of Chrome, you can use --chromedriver-path followed by the absolute path to the desired version of the ChromeDriver executable.

axe --chromedriver-path="absolute/path/to/chromedriver"
You can’t perform that action at this time.