Where Rebind extends what Karabiner does.
Karabiner-Elements is excellent on macOS: Simple and Complex Modifications, per-device rules, profiles, a web-UI generator, free and open source. If you live on macOS and remap your keyboard, it's hard to beat.
Rebind is for the moment you need more reach. The same remaps run on Windows and Linux, mouse transforms sit alongside keyboard, and with Rebind Link, output leaves through a dedicated USB device as standard HID. Underneath is a full scripting runtime: an SDK covering HTTP, WebSockets, screen sampling, window control, macros, and shared-memory IPC.
Karabiner-Elements vs Rebind
Both are real tools. The angle is reach.
| Capability | Karabiner-Elements | Rebind |
|---|---|---|
| Platforms | macOS only | Windows, macOS, Linux |
| Configuration | JSON + web-UI generator | Luau scripts + modeline targeting + AI generator |
| Focus | Keyboard-focused | Keyboard and mouse, equally |
| Output method | Software event modification | Software output free; isolated USB HID with Rebind Link |
| Max processing rate | macOS event timing | Up to 8,000 Hz with Rebind Link |
| Per-app targeting | Yes | Yes (process= / window= modeline) |
| Beyond remapping | Remapping-focused | Full runtime: Net, Screen, Window, Macro, Pipe IPC |
| Remote control from other languages | No | Official TS, Python, and Rust clients |
| Works across keyboard and mouse brands | Yes | Yes |
Define it once, run it on every OS.
The same file runs on Windows, macOS, and Linux:
-- rebind: name=Caps to Ctrl
-- rebind: version=1.0.0
-- rebind: min_sdk=3.0.0
function OnDown(key)
if key == "CapsLock" then
HID.Down("LCtrl")
return false -- block CapsLock
end
return true
end
function OnUp(key, duration)
if key == "CapsLock" then
HID.Up("LCtrl")
return false
end
return true
end
When each one fits
Use Karabiner-Elements when you live on macOS, focus on keyboard remapping, and want a mature open-source tool with a web-UI generator.
Use Rebind when you also work on Windows or Linux and want one config everywhere, want mouse transforms alongside keyboard, or want automation beyond remapping: HTTP, screen, window, macros.
Use both: keep Karabiner on macOS and add Rebind for cross-OS and hardware-backed work.
Common questions
Does Rebind run on Windows and Linux?
Yes. Remapping, automation, and HID output on Windows 10/11, macOS, and Linux x86_64. Pipe and Registry are Windows-only. Check the SDK reference.
Can I import my Karabiner JSON? No direct import. The concepts map cleanly, and RebindGPT can draft a remap from a plain-English description.
Does Rebind remap the mouse too? Yes. Keyboard and mouse are first-class, including relative movement and button transforms.