Skip to content

How I finally fixed the keyboard language switching delay on macOS

Published: at 04:00 PM

If you type in more than one language on a Mac, you may know this: you switch the input source, start typing, and the first word comes out in the wrong language. The switch does happen, just a fraction of a second too late.

For me it lasted four or five years. First it was Caps Lock: once I set it to switch languages, the switch started to lag. Complaints about exactly that go back at least to Big Sur 11.5 in August 2021. At some point I moved to Cmd+Space, which was fine for a while, until it started to lag too, around the time Sonoma came out in 2023.

Everything that didn’t help

I searched for a fix every few months. A typical example is this Reddit thread, started in 2021 and still getting replies five years later, along with its sibling in r/MacOS. Between them they collect pretty much every known remedy:

Some of these do help people, mostly with the Globe key. I tried all of them, and none made a difference for Caps Lock or Cmd+Space.

The rest of the advice comes down to installing something: Caramba Switcher, Karabiner, CommandShift, FnLangSwitch, CapsLockNoDelay. I didn’t go there on principle. Switching keyboard languages is a basic OS function, and fixing it shouldn’t mean running third-party software in the background.

The actual cause

The culprit turned out to be the language indicator, the small bubble with the current input source that pops up next to the text cursor every time you switch. Showing it is what slows the switch down. Someone in the r/MacOS thread came close in 2023: after Sonoma, the language changes only once the popup disappears, while in Ventura and Monterey it changed as soon as the popup appeared. Turn it off, and switching is instant again, with both Caps Lock and Cmd+Space.

There is no checkbox for it in System Settings, but there is a hidden preference:

defaults write kCFPreferencesAnyApplication TSMLanguageIndicatorEnabled -int 0

Log out or restart after running it. The current language is still shown in the menu bar, so you lose nothing useful.

If you ever want the indicator back:

defaults delete kCFPreferencesAnyApplication TSMLanguageIndicatorEnabled

I’ve also posted the fix as a comment in that Reddit thread. If it helped you, give it an upvote there, so it rises above years of Siri and Quick Note tips and the next person with the same problem finds it right away.