# AutoHotkey: A Windows Macro Engine You Compile Yourself

> AutoHotkey is a GPL-2.0 macro and automation utility for Windows, driven by a custom scripting language with first-class hotkey support. The repository is the C++ source of the interpreter, not a packaged installer, so the build path matters as much as the scripts you write.

**AutoHotkey/AutoHotkey** — AutoHotkey - macro-creation and automation-oriented scripting utility for Windows.

- Repository: https://github.com/AutoHotkey/AutoHotkey
- Website: https://autohotkey.com/
- Stars: 13,217 · Forks: 1,183
- Language: C++
- License: GPL-2.0
- Published: 2026-09-21 · Updated: 2026-09-21 · Language: en
- Canonical page: https://hysenlabs.com/projects/autohotkey-autohotkey

## What AutoHotkey automates, and who writes it

AutoHotkey is a macro-creation and automation utility for Windows. The README describes it as "driven by a custom scripting language that has special provision for defining keyboard shortcuts, otherwise known as hotkeys." That sentence is the whole product thesis: hotkeys are not a feature bolted onto a general-purpose language, they are a first-class construct the interpreter understands.

The practical audience is anyone on Windows who repeats the same input sequence. Typing the same boilerplate into forms, firing the same menu path across a dozen windows, rebinding a key that sits in an awkward place on the keyboard. A user-facing automation tool competes with the operating system's own facilities, and AutoHotkey's advantage is that the hotkey definition and the action it triggers live in the same small file.

The repository itself is not aimed at that audience. It is the C++ source of the interpreter, and the README's support section points script authors to the community forum rather than to the issue tracker. If you want to run macros, you want a released build. If you want to change how the language behaves, you are in the right place.

## How the interpreter is organised, from solution file to script

The build is a Visual Studio solution. AutoHotkeyx.sln sits at the repository root alongside AutoHotkeyx.vcxproj and a Config.vcxproj, with the interpreter sources under source/. Opening the solution and building produces AutoHotkey.exe.

The project file defines several configurations. Debug produces a debug-mode AutoHotkey.exe; Release produces the executable for general use; Self-contained produces AutoHotkeySC.bin, which the README says is used for compiled scripts. Secondary configurations add an (mbcs) suffix for ANSI builds (configurations without the suffix are Unicode) and a .dll variant described as experimental, for hosting the interpreter so that v1 libraries can be used from a v2 script. That last one is documented in README-LIB.md rather than the main README, which tells you how much weight the project puts on it.

Two platforms are listed, Win32 and x64. The README also states that AutoHotkey supports Windows XP with or without service packs, and Windows 2000 via an asm patch in win2kcompat.asm, with the caveat that support may be removed if maintaining it becomes non-trivial. Older versions are not supported. That is an unusually candid statement about legacy support, and it is worth reading as a warning rather than a promise.

## Building AutoHotkey from source in Visual Studio

The README gives a four-step procedure: get the source, open AutoHotkeyx.sln in Visual Studio, select the appropriate Build and Platform, and build. The project is developed with Microsoft Visual Studio Community 2022, which the README notes is a free download from Microsoft.

```bash
git clone https://github.com/AutoHotkey/AutoHotkey.git
cd AutoHotkey
```

After cloning, open the solution. The README does not give a command-line build invocation, so the documented path is the IDE: open AutoHotkeyx.sln, pick a configuration and platform, and build.

The README states the project is configured to allow building with Visual Studio 2012 or later, but only the 2022 toolset is regularly tested, and some newer C++ language features are used, so a later compiler may be required. Treat the 2012 floor as a configuration artifact rather than a supported target.

If you prefer VS Code, the README lists two requirements: the C/C++ extension for Visual Studio Code, and Build Tools for Visual Studio 2022 with the "Desktop development with C++" workload, or similar. The repository also contains vsc-build-env.cmd, which the README does not describe, so its role has to be read from the file itself.

## The v1 maintenance gap and the platform ceiling

The clearest limitation is stated in the README without hedging: "AutoHotkey v1 is not being maintained, but support is provided by community members." If your scripts are v1, you are depending on volunteer answers in the Ask for Help (v1) subforum, not on the project. The interpreter source in this repository is on the alpha branch, and the recent releases are all v2.0.x, so the development line and the legacy line have separated.

The second limit is the platform. The README's Platforms section lists Win32 and x64 only. There is no macOS or Linux build configuration here. If your automation has to run on a Mac, this project is not the answer, regardless of how well the hotkey model fits the problem.

The third is the false-positive problem, which the README addresses directly: files downloaded from official sources that are flagged as suspicious or as a virus are "likely false positives," and the project maintains a page on how to resolve or report them. That is a real friction cost for anyone distributing a compiled script to people who do not know what AutoHotkey is.

Finally, the experimental .dll configuration is exactly that. The README labels it experimental, and it exists to host the interpreter for scenarios like using v1 libraries in a v2 script. Do not build a product on it without reading README-LIB.md first.

## AutoHotkey versus a general-purpose scripting runtime

The obvious comparison is with a full language runtime such as Python plus a Windows automation library. The difference is where the hotkey lives. In AutoHotkey, the binding and the handler are the same syntactic unit, and the interpreter owns the keyboard hook. In a general-purpose runtime, you write the binding yourself, you manage a message loop or a low-level hook, and you accept that your script is a guest in someone else's process model.

That trade cuts both ways. AutoHotkey gives you a small, purpose-built language with a Windows-shaped standard library, and the README's build configurations show how tightly the interpreter is tied to the Windows toolchain. In exchange you give up the package ecosystem, the editor tooling and the portability of a mainstream language. If your automation is one hotkey and three actions, the purpose-built language wins. If it is a data pipeline that also happens to press a key, it does not.

The v1 versus v2 split is a second comparison worth making internally. v2 is the line receiving releases; v1 receives community support only. Migrating is a project decision, not a documentation one, because the README does not describe a migration path.

## Licence and the cost of staying current

The repository is licensed GPL-2.0, with the text in license.txt. That matters most if you build the interpreter and redistribute it, or ship something derived from it. The README does not discuss linking exceptions or commercial distribution, so the licence file is the only authority here. This is not legal advice; read license.txt and, if you are redistributing, get proper advice.

Upgrade cost is visible in the release cadence. The three most recent releases are v2.0.28 on 2026-09-12, v2.0.27 on 2026-08-28, and v2.0.26 on 2026-05-04. The gap between v2.0.26 and v2.0.27 is roughly four months, while v2.0.27 to v2.0.28 is about two weeks. Patch releases arrive irregularly, so pinning to a specific tag and reading the release notes before moving is the safer pattern. The last push to the repository was on 2026-09-12, the same day as the v2.0.28 release.

For script authors, the upgrade cost is mostly in language behaviour between major versions, and the README offers no compatibility matrix. For people building the interpreter, the cost is toolchain drift: the README already flags that only the 2022 toolset is regularly tested.

## Where to get help and where to report bugs

The README is explicit that the community forum is the primary source of support, not the repository. Scripts that do not work belong in the Ask for Help (v2) or Ask for Help (v1) subforum depending on version. Bugs go to the Bug Reports subforum, but the README first suggests posting in Ask for Help (v2) if you are in doubt about whether your issue is a bug at all. Development enquiries go to the AutoHotkey Development subforum.

This routing is worth respecting. It means the issue tracker is not the front door, and it also means the quality of your answer depends on stating your AutoHotkey version up front, since v1 and v2 have separate help channels. The homepage at autohotkey.com is the entry point the README links for downloads.

## Conclusion

Adopt AutoHotkey if you automate on Windows and want a scripting layer where a hotkey is a language primitive rather than a library call. Do not adopt it if your automation targets macOS or Linux, or if you need a maintained v1 codebase, since the README states v1 is not being maintained. Before committing, verify which build configuration you need (Release for general use, Self-contained for AutoHotkeySC.bin to compile scripts), confirm your Visual Studio toolset against the 2022 toolset the project regularly tests, and check the licence text in license.txt against how you intend to redistribute anything you build.

## FAQ

### What is AutoHotkey used for?

The README describes it as a macro-creation and automation utility that lets users automate repetitive tasks, driven by a custom scripting language with special provision for defining keyboard shortcuts. In practice that means binding hotkeys to actions on Windows.

### Can AutoHotkey be trusted?

The README notes that files downloaded from official sources which are flagged as suspicious or as a virus are likely false positives, and links to a page on how to resolve or report them. It does not offer a security audit, so trust has to rest on downloading from official sources.

### Why is AutoHotkey flagged as a virus?

The README's position is that these are likely false positives when the files come from official sources, and it maintains a dedicated page on resolving or reporting them. It does not explain the detection mechanism.

### How do I install AutoHotkey v2?

The README does not give installation steps; it links to autohotkey.com as the project homepage and routes support to the community forum. The repository itself is the C++ source, built with Visual Studio Community 2022 by opening AutoHotkeyx.sln and building.

### How do I use AutoHotkey v2?

Scripts are written in the custom scripting language the README describes, with hotkeys defined directly. If a script does not work, the README directs you to the Ask for Help (v2) subforum, and to the v1 subforum if you are on v1.

## Sources

- [AutoHotkey/AutoHotkey on GitHub](https://github.com/AutoHotkey/AutoHotkey)
- [License: GPL-2.0](https://github.com/AutoHotkey/AutoHotkey/blob/alpha/LICENSE)
- [Project website](https://autohotkey.com/)
- [README](https://github.com/AutoHotkey/AutoHotkey/blob/alpha/README.md)
- [Releases](https://github.com/AutoHotkey/AutoHotkey/releases)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/autohotkey-autohotkey
