Rebind vs AutoHotkey

Your AutoHotkey habits, on real hardware.

An AutoHotkey alternative with typed Luau, a built-in network runtime, encrypted bytecode, and real USB output at up to 8,000 Hz with Rebind Link.

Same binds and hooks. A better runtime underneath.

Bind a key, transform an input, fire a hook, run a macro: if you write AutoHotkey, you already think in Rebind.

Scripts are Luau, the fast, typed Lua from Roblox, with real coroutines, a built-in HTTP and WebSocket runtime, and declarative UI panels. AutoHotkey sends input from software; with Rebind Link your output leaves a real USB device as standard HID, at up to 8,000 Hz. Share a script as encrypted bytecode that only the recipient's device can run.

Rebind is free. Rebind Link adds hardware output.

AutoHotkey vs Rebind

CapabilityAutoHotkeyRebind
Scripting languageAutoHotkeyAHK (v1 and v2), purpose-builtRebindLuau: fast, typed, coroutines
Output methodAutoHotkeySoftware-level (SendInput)RebindSoftware output, or USB HID from Rebind Link hardware
Input captureAutoHotkeyOS hooksRebindRebind Link catches input before the OS does
USB report rateAutoHotkeyNot applicableRebindUp to 8,000 Hz with Rebind Link
Works across keyboard and mouse brandsAutoHotkeyRebindno vendor lock-in
Built-in HTTP clientAutoHotkey(external libraries)Rebindrb.net.get, rb.net.post
Built-in HTTP / WS serverAutoHotkeyRebindrb.net.listen, rb.net.ws_listen
Shared-memory IPCAutoHotkeyRebindrb.pipe (Windows-only) for a Python or Node sidecar
Real coroutinesAutoHotkeyLimitedRebindrb.run, rb.sleep, rb.after, rb.async
Declarative UI panelsAutoHotkeyRebindrb.ui.schema, rb.ui.toggle, rb.ui.slider, rb.ui.keybind
Drive from other languagesAutoHotkeyCommunityRebindOfficial TS, Python, and Rust clients
Script protectionAutoHotkeyAhk2Exe bundles the script into an .exeRebindEncrypted Luau bytecode, sealed to one device or one buyer
Per-app targetingAutoHotkey(#HotIf WinActive)Rebind(process= / window= modeline)
Pixel sampling, window controlAutoHotkeySomeRebindrb.screen, rb.window, rb.macro
PlatformsAutoHotkeyWindowsRebindWindows, macOS
PriceAutoHotkeyFree, open sourceRebindFree. Rebind Link adds hardware output.

CapsLock to Escape

AutoHotkey

CapsLock::Escape

rebind

rb.bind.remap("CapsLock", "Escape")

Rebind, the same remap.

Per-app hotkey

AutoHotkey

#HotIf WinActive("ahk_exe Photoshop.exe")
^j::Send("^+s")
#HotIf

rebind

rb.bind("LCtrl+J", function()
  rb.hid.combo("LCtrl+LShift+S")
end, {
  when = function()
    return rb.window.get_title():find("Photoshop") ~= nil
  end,
})

Rebind, where the bind checks the focused window before it takes the key.

When each one fits

Use AutoHotkey whensoftware output is enough and you already have a library of AutoHotkey scripts.

Use Rebind whenyou want a typed language with coroutines and a built-in network runtime; output from a real USB device; scripts you can share as encrypted bytecode; or clients for TypeScript, Python, and Rust.

Use bothkeep your AutoHotkey library and move what should run on hardware to Rebind.

Common questions

Can I run my exact AutoHotkey scripts in Rebind?

Not as-is: scripts are Luau. Same model, so porting is quick. With Rebind Pro, RebindGPT drafts the port from a plain-English description.

Bring your AutoHotkey habits.