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:
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.
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
- eaa_scanner-1.2.0-py3-none-any.whl
- eaa_scanner-1.2.0.tar.gz — source distribution
- mahope-eaa-scanner-1.2.0.tgz — Node.js package, install with
npm install -g <url> - README with full usage guide
- GitHub Actions workflow template
- eaa-scanner-desktop-src-1.3.4.zip — Desktop app source
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
- site_icons.py — single file, just run it
- site-icons-1.0.0.tar.gz — full package with README
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
- page_profile.py — single file, just run it
- page-profile-1.2.2.tar.gz — full package with README
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
- clean-copy-v1.5.3.zip — Chrome extension (load unpacked)
- clean-copy-firefox-v1.5.4.zip — Firefox add-on
- clean-copy-obsidian-v1.0.11.zip — Obsidian plugin bundle (self-contained, single main.js)
- Homebrew:
brew install mahope/tap/clean-copy - Source code on GitHub