pixelactions vs AutoHotkey
A Windows institution against a cross-platform list of steps — the honest comparison starts with the platform line.
The short version
AutoHotkey is the deepest desktop automation tool on Windows — hotkeys, window management, GUIs, COM, a full language, actively maintained for two decades. On Windows, nothing else comes close, and pixelactions is not there yet: today it runs on macOS, with Windows next. The difference is one of kind, not depth. AutoHotkey is a language you write; pixelactions is deliberately not a language — a list of steps over regions a human marked in pixelcoords, re-located against a fresh capture and verified at run time, with loops and branching left to whatever language you already write, over the line protocol. If your automation is a program, AutoHotkey gives you its language; pixelactions gives your language an executor.
Feature for feature
| Feature | pixelactions | AutoHotkey |
|---|---|---|
| Price | Free | Free |
| Platforms | macOS today; Windows and X11 nextearly — no crate or binaries published yet | Windows only |
| Declarative, reviewable flows | TOML flows + chained argva pull request shows "click submit", not arithmetic | not offered |
| Language it takes to drive it | Any — JSON line protocol over stdioa 40-line stdlib Python client ships in the docs; no embedded interpreter, ever | AutoHotkey, its own language |
| Re-location before acting | Every target re-located against a fresh capture before actinga crop that matches in more than one place stops the run — ambiguity is the test, not distance | ImageSearch, in-script |
| Verified execution | Distinguishes executed from verified; exit codes 0/1/2/3 | ImageSearch / PixelGetColor, in-script |
| Maintenance status | In active development — v0.1.0, unpublished | Active — v2.0.26, May 2026 |
| License | MIT, open source | GPLv2, open source |
When to pick AutoHotkey
- You are on Windows — pixelactions is not there yet, and this is where AutoHotkey lives.
- Hotkeys, background window control, and OS integration are the job, not clicking marked regions.
- Two decades of community scripts have probably already solved your problem.
When to pick pixelactions
- You are on macOS — where pixelactions runs today.
- Automation belongs in a reviewable flow file, not a script — a diff shows click submit.
- Runs need the contract: re-location before acting, executed vs verified, refusal, exit codes.
- The logic lives in your language — Python, TypeScript, Rust, anything that can write a line of JSON.
What a flow looks like
session = "~/captures/checkout"
[[step]]
action = "click"
target = "email"
[[step]]
action = "type"
text = "a@b.com"
[[step]]
action = "key"
chord = "enter"
[[step]]
action = "verify"
target = "success"Two ways in
cargo install pixelactionsOr skip the toolchain: prebuilt binaries — download, unpack, run.