Mahope tools: EUComply Clean Copy DeskUptime Transmute BugBottle All tools
Free & open source · MIT license

Download eaa-scanner

A zero-dependency command-line scanner for EAA / WCAG 2.1 AA issues. Works on any website — WordPress, Shopify, Webflow, Next.js, Squarespace or hand-written HTML. Pure Python standard library, Python 3.8+.

Install with pip

Install straight from this page — no account needed:

pip install /downloads/eaa_scanner-1.2.0-py3-none-any.whl

Once the package is on a registry, a simple pip install will work — for now, use the URL above.

Node.js / npm (new)

Same 22 rules, same JSON report — now for Node 18+. Zero dependencies:

npm install -g https://mahope.tools/downloads/mahope-eaa-scanner-1.2.0.tgz
npx eaa-scan https://your-site.com --crawl 15

New: --crawl N — whole-site audit in one command. Follows same-origin links across up to N pages and reports average score, issues ranked by frequency, and the worst pages.

Or use it as a library: const { crawlSite } = require('@mahope/eaa-scanner').

Desktop App (macOS, Apple Silicon)

Native macOS desktop application for the EAA Compliance Scanner. Same 22 WCAG 2.1 AA rules as the CLI, with a native interface and one-click save-as-PDF reports. The browser scanner on this site runs 15 of them; the app adds seven more, including video and audio tracks, autoplay media, blinking elements, positive tabindex and image submit buttons.

Download DMG (macOS ARM64, ~120 MB)

Alternatively, download the Intel DMG, ARM64 ZIP, or Intel ZIP (~120 MB). Build from source:

Download Source (68 KB)

The source archive is 1.3.4; the installers above are 1.3.3. Building from source gives you the current version, and it removes the $19 price that cannot be paid and a purchase link to a host that no longer exists.

unzip eaa-scanner-desktop-src-1.3.4.zip
npm install
npm start

The app launches as a native macOS window. Enter a URL and scan instantly — or switch to Whole site to crawl up to 200 same-site pages with a live progress readout and per-page findings. Not signed with an Apple Developer ID: on first launch, right-click the app and select Open to bypass the unidentified-developer warning.

Read the full desktop scanner guide →

Desktop App (Linux) Pro

Native Linux build — AppImage (universal) and .deb (Debian/Ubuntu). Same features as macOS. Batch scanning and CSV/JSON export require a Pro license.

Download AppImage (Linux x64, ~110 MB)

Or install the .deb package (Debian/Ubuntu).

chmod +x EAA*.AppImage
./EAA*.AppImage

Desktop App (Windows) Pro

Native Windows build — installer and portable executable. Same features as macOS and Linux. Batch scanning and CSV/JSON export require a Pro license.

Download Installer (Windows x64, ~90 MB)

Or download the portable .exe (no installation needed).

Pro license — batch scanning, CSV/JSON export, unlimited crawl

The free tier covers single-page scans, whole-site crawls (up to 200 pages), and PDF reports. Upgrade to Pro for:

  • Batch scanning — scan multiple URLs in sequence with aggregate stats
  • CSV & JSON export — export results for dashboards, reporting, or CI
  • Unlimited crawl depth — no page limit on whole-site audits

There is no Pro licence for the EAA scanner today. Batch scanning, CSV/JSON export and unlimited crawl depth are on the list for a future release, and there is no price to pay for them yet. The free version is complete and MIT-licensed, and nothing in it expires.

Run it in CI — ready-made GitHub Actions workflow

Add automated accessibility checks to every push and pull request. Download the workflow template, drop it into .github/workflows/eaa-scan.yml, and edit the page list:

eaa-scan-github-action.yml — fails the build on errors or warnings (--fail-on)

Runs on every push, pull request and a weekly schedule. The template also ships an optional crawl-audit job that runs eaa-scan --crawl 25 for a whole-site report (average score + most frequent issue types) without failing the build.

Or use the action — one line instead of a file

Every finding is written as SARIF 2.1.0 and uploaded to GitHub code scanning, so it shows up in the repository’s Security tab and in the pull request that caused it — no runner configuration beyond security-events: write:

- uses: mahope/hermes-passiv@main
  with:
    pages: "https://your-site.com https://your-site.com/pricing"
    fail-on: warning  # error | warning | never

The report is written before the verdict, so a run that fails on findings still fills the Security tab. Prefer a file you can read? The template above contains the same steps, spelled out.

Direct downloads

Quick start

eaa-scan https://your-site.com
eaa-scan --json https://your-site.com > report.json
eaa-scan https://your-site.com --crawl 15  # whole-site audit (average score + issue ranking)
eaa-scan --fail-on warning https://your-site.com  # CI mode: non-zero exit on warnings
eaa-scan --sarif https://your-site.com > eaa-scan.sarif  # SARIF 2.1.0 for GitHub code scanning

Exit code is 0 when clean and 1 when findings exist at the chosen severity, so it drops straight into CI pipelines.

Automated checks catch roughly 30–40% of accessibility issues. For full EAA conformance, pair eaa-scanner with manual testing — see our free online scan tool and compliance guides and checklists.

site-icons — Generate favicons, OG images & PWA icons

Generate every standard favicon size, Apple touch icons, PWA icons, Windows tile icons, a 1200×630 OG image, web app manifest, and browserconfig.xml — from a single SVG or PNG source. CLI-first, zero network calls, works offline.

Quick start

pip install Pillow
curl -O /downloads/site-icons/site_icons.py
python3 site_icons.py logo.svg -o my-icons # free tier
python3 site_icons.py logo.svg -o my-icons --pro # full set

Downloads

Full product page →

page-profile — Web page profiler CLI

Profile any web page from the terminal: HTTP status, meta tags, Open Graph, JSON-LD, heading structure, image alt-text coverage, security headers, and more. Zero dependencies — pure Python stdlib, single file, any machine with Python 3.8+.

Quick start

curl -O /downloads/page-profile/page_profile.py
python3 page_profile.py https://your-site.com # terminal report
python3 page_profile.py https://your-site.com --json # JSON for CI

Downloads

Full product page →

Clean Copy — copy/paste as clean Markdown

Browser extension (Chrome + Firefox), Obsidian plugin and a zero-dependency CLI. Copy any selection from the web and paste it as clean Markdown or plain text — no junk formatting, no tracking parameters.

Downloads & install

Full product page →