Rebind vs Karabiner-Elements

Remapping that follows you off macOS.

Karabiner-Elements stops at macOS. Rebind runs keyboard and mouse remaps on Windows and macOS, and Rebind Link adds hardware output.

Keyboard and mouse, on macOS and Windows.

Karabiner-Elements remaps keyboards on macOS. Rebind runs the same remaps on macOS and on Windows, and with Rebind Link transforms mouse movement too.

With Rebind Link, mouse transforms sit next to keyboard remaps and output leaves a real USB device as standard HID. Underneath is a full scripting runtime: HTTP, WebSockets, screen sampling, window control, macros.

Karabiner-Elements vs Rebind

CapabilityKarabiner-ElementsRebind
PlatformsKarabiner-ElementsmacOS onlyRebindWindows, macOS
ConfigurationKarabiner-ElementsJSON + web-UI generatorRebindLuau scripts + modeline targeting
AI script generationKarabiner-ElementsRebindWith Rebind Pro: RebindGPT
FocusKarabiner-ElementsKeyboardRebindKeyboard and mouse
Output methodKarabiner-ElementsSoftware event modificationRebindSoftware output, or USB HID from Rebind Link hardware
USB report rateKarabiner-ElementsNot applicableRebindUp to 8,000 Hz with Rebind Link
Per-app targetingKarabiner-ElementsRebind(process= / window= modeline)
Beyond remappingKarabiner-ElementsRemapping-focusedRebindFull runtime: rb.net, rb.screen, rb.window, rb.macro, rb.pipe IPC
Remote control from other languagesKarabiner-ElementsRebindOfficial TS, Python, and Rust clients
Works across keyboard and mouse brandsKarabiner-ElementsRebind

One config on both systems.

Caps Lock becomes Ctrl.

rebind

rb.on("down", function(key)
  if key == "CapsLock" then
    rb.hid.down("LCtrl")
    return false  -- block CapsLock
  end
  return true
end)

rb.on("up", function(key, duration)
  if key == "CapsLock" then
    rb.hid.up("LCtrl")
    return false
  end
  return true
end)

When each one fits

Use Karabiner-Elements whenyou live on macOS, focus on keyboard remapping, and want a mature open-source tool with a web-UI generator.

Use Rebind whenyou also work on Windows and want one config on both, want mouse transforms alongside keyboard, or want automation beyond remapping: HTTP, screen, window, macros.

Use bothkeep Karabiner on macOS and add Rebind for cross-OS and hardware-backed work.

Common questions

Can I import my Karabiner JSON?

Not directly. The concepts map one to one, and with Rebind Pro, RebindGPT writes the remap from a plain-English description.

Does Rebind remap the mouse too?

Yes. Keyboard and mouse, including button transforms. Rebind Link transforms relative mouse movement before the OS sees it.

Karabiner stops at macOS. Rebind doesn't.