Same mental model. A bigger runtime.
If you write AutoHotkey, you already think the way Rebind works: bind a key, transform an input, fire a hook, run a macro. Rebind's scripting language is Luau — a fast, typed member of the Lua family. The model carries straight over.
AutoHotkey is Windows-only and sends input at the software level. Rebind runs the same script on Windows, macOS, and Linux. With Rebind Link, output leaves a dedicated USB device as standard HID — your OS sees only the Rebind keyboard and mouse. The runtime is full-featured: 26 namespaces, real coroutines, built-in HTTP and WebSocket, and shared-memory IPC, all in one engine.
The full engine is free. Hardware isolation and 8,000 Hz come with Rebind Link.
AutoHotkey vs Rebind
AutoHotkey is excellent and free. This table is about reach and runtime, not quality.
| Capability | AutoHotkey | Rebind |
|---|---|---|
| Scripting language | AHK (v1 and v2), purpose-built | Luau — fast, typed, coroutines |
| Platforms | Windows only | Windows, macOS, Linux — same scripts |
| Output method | Software-level (SendInput) | Standard USB HID from dedicated hardware |
| Input capture | OS hooks | Isolated environment — before the OS sees the event |
| Max processing rate | OS event timing | Up to 8,000 Hz on hardware (125 µs budget) |
| Works with any USB device | Yes | Yes — no vendor lock-in |
| Built-in HTTP client | No (external libraries) | Yes — Net.Get, Net.Post |
| Built-in HTTP / WS server | No | Yes — Net.Listen, Net.WSListen |
| Shared-memory IPC | No | Yes — Pipe for a Python or Node sidecar |
| Real coroutines | Limited | Yes — Run, Sleep, After, Async |
| Declarative UI panels | No | Yes — UI.Schema, Toggle, Slider, Keybind |
| Drive from other languages | Community | Official TS, Python, and Rust clients |
| Per-app targeting | Yes (#IfWinActive) | Yes (process= / window= modeline) |
| Pixel sampling, window control | Some | Yes — Screen, Window, Macro |
| Price | Free, open source | Free engine; optional Rebind Link |
CapsLock to Escape
AutoHotkey:
CapsLock::Escape
Rebind — the same remap, and it runs on macOS and Linux too:
-- rebind: min_sdk=3.0.0
-- rebind: name=CapsLock to Escape
Bind("CapsLock", function()
HID.Press("Escape")
end)
Per-app hotkey
AutoHotkey:
#IfWinActive ahk_exe Photoshop.exe
^j::Send ^+s
#IfWinActive
Rebind — the modeline scopes the whole script, so there are no per-binding guards:
-- rebind: min_sdk=3.0.0
-- rebind: name=Photoshop Save As
-- rebind: process=Photoshop.exe
Bind("LCtrl+J", function()
HID.Press("LCtrl+LShift+S")
end)
When each one fits
Use AutoHotkey when you're on Windows only, want the deepest, most mature ecosystem of scripts and docs, and software-level output is all you need. It's excellent and free.
Use Rebind when you work across Windows, macOS, and Linux; want output from real hardware with deterministic 8,000 Hz timing; want a built-in HTTP/WebSocket runtime; or want to drive input from TypeScript, Python, or Rust.
Use both — keep your AutoHotkey setup on Windows and port the scripts you want portable or hardware-backed to Rebind.
Common questions
Can I run my exact AutoHotkey scripts in Rebind? No — scripts are Luau, not AHK syntax. But the model is the same, porting is straightforward, and RebindGPT can draft a port from a plain-English description.
Does Rebind work on macOS and Linux? Yes. The same scripts run on Windows 10/11, macOS on Apple Silicon and Intel, and Linux x86_64.
Does Rebind need a specific keyboard or mouse? No. Any USB keyboard and mouse — no vendor lock-in.