Karabiner alternative

The language switch is the one thing
you kept Karabiner for.

Most people install Karabiner-Elements to do one thing: tap a key and flip the input source. Zwitch is that single feature — without the JSON config file, the complex_modifications folder, or the upgrade dance every macOS release.

The rule you wrote once and never touched again

A typical Karabiner language-switch rule lives in ~/.config/karabiner/karabiner.json and looks roughly like this:

{
  "description": "Right Command → switch input source",
  "manipulators": [
    {
      "type": "basic",
      "from": { "key_code": "right_command" },
      "to": [ { "select_input_source": { "language": "^ru$" } } ]
    }
  ]
}

It works. But you maintain a JSON file, you re-grant the driver after big macOS updates, and toggling between two languages (rather than always selecting one) means variables and conditions. Zwitch makes the same key do the obvious thing with a checkbox instead of a config file.

What carries over, one to one

Where Karabiner still wins — honestly

Zwitch is narrower on purpose. If you map several keys to several specific languages, or you remap keys for anything beyond input source, keep Karabiner — it's the right tool. The one place they differ for switching: Zwitch cycles in order, while Karabiner's select_input_source can jump to a named language. With two layouts that's the same thing; with three or more, Karabiner can target one directly.

 SetupSwitchSpeed
Karabiner ruleJSON + drivercycle or jump-to-languagefast
Zwitchone permissioncycle in order~14 ms
Already have a Karabiner input-source rule? Disable it before using the same trigger key in Zwitch, or both will fire and you'll switch twice.

Drop the config file

Free · notarized by Apple · macOS 14+ · Apple Silicon & Intel · 0.6 MB

FAQ

Can Zwitch replace my Karabiner language-switch rule?

Yes, for the common case — a single key that switches input source. Zwitch taps one key (Fn / Globe, Caps Lock, or right Command) and cycles the layouts you already enabled in macOS, in about 14 ms, with no JSON config.

What can Karabiner do that Zwitch can't?

Karabiner remaps any key and can jump straight to a named language. Zwitch only cycles input sources in order. With two layouts that's identical; with three or more, Karabiner can target one directly while Zwitch steps through them.

Do I have to uninstall Karabiner?

No — they coexist fine. Just disable your Karabiner input-source rule so the same key doesn't fire twice.