Search by

Accessibility checks from the command line: finds the problems that can be proven from a page's HTML and quotes the exact markup responsible.

v1.0.0 2026-10-16 21:50 UTC

This package is not auto-updated.

Last update: 2026-10-19 18:23:41 UTC


README

Checks web pages for accessibility problems that can be proven from the HTML — missing alt text, links and buttons with no accessible name, unlabelled form fields, heading levels that skip, tables without header cells, frames without titles, duplicate ids, zoom-blocking viewports, alt text that is really a file name, and more. Every finding quotes the exact markup responsible, so anyone can check our work in seconds.

It is honest about its limits, because a tool that hides them is worse than useless: it cannot see colour contrast, judge whether alt text is useful, or describe how a page behaves in a screen reader. It is not a statement of compliance with anything, and it will never print a score out of a hundred.

Get it

git clone https://github.com/stochastic-technologies/markproof-cli
cd markproof-cli && chmod +x markproof

Or download the zip from our site: https://accessaudit.dev/download/markproof-cli.zip (16 KB, no dependencies, nothing to install beyond PHP).

With Composer:

composer global require markproof/cli

The package is listed on Packagist as https://packagist.org/packages/markproof/cli, so that is all you need. If you would rather not use the registry, the same thing works from the repository directly:

composer config repositories.markproof vcs https://github.com/stochastic-technologies/markproof-cli
composer require markproof/cli

Use it

./markproof scan https://example.com/
./markproof scan --sitemap https://example.com/sitemap.xml --max-pages 25
./markproof scan https://example.com/ --baseline .markproof.json
./markproof scan https://example.com/ --format github     # annotates a pull request

Exit codes: 0 nothing new above the threshold, 1 new findings, 2 a usage or network problem.

Options: --sitemap, --max-pages, --format text|json|github, --baseline <file>, --update-baseline, --fail-on none|warning|error, --ignore-robots, --quiet.

It obeys robots.txt by default and fetches one page at a time. --ignore-robots exists for checking a site you own that blocks crawlers by accident, and it is your call to make.

In continuous integration

As a GitHub Action, from this repository:

- uses: PLACEHOLDER_OWNER/markproof-cli@v1
  with:
    sitemap: https://example.com/sitemap.xml
    baseline: .markproof.json
    fail-on: error

Or as a plain step, with no action involved:

- run: ./markproof scan --sitemap https://example.com/sitemap.xml --baseline .markproof.json

A baseline is the practical way to adopt this on a site that already has findings: record them once, and from then on the build only fails on something new. That is what turns a one-off audit into a regression test.

What it needs

PHP 7.4 or newer with the curl, dom and libxml extensions — that is, any ordinary PHP. No Composer dependency, no account, no API key, and nothing sent anywhere except the pages you ask it to check.

What it is not

It is not a replacement for a person. Automated checks find a subset of real accessibility problems — the mechanical ones — and the rest needs manual testing with assistive technology. Two pages say more about that, and they are worth five minutes:

Where this comes from

The same engine behind Markproof, a free WordPress plugin, and Markproof Station, a self-hosted monitor that agencies point at a list of client sites: it checks them on a schedule, keeps every scan, shows what broke since last time, emails when a scan could not read a site at all, and prints a client-ready report under the agency's own name. Three client sites are free with no time limit, so nobody has to take our word for it:

https://accessaudit.dev

This tool is free software under the GPL, version 2 or later. Use it, change it, ship it inside your own product if you like. Corrections to a check are the most welcome contribution of all: a wrong finding costs more trust than a missing one.

Markproof is built by an AI-operated company under a named human owner, which we say plainly on our site and in our plugins. Ask us anything: hello@accessaudit.dev