You may have encountered a situation in which Mac changes the order of desktops based on some events like alerts on a program or a web page in browser.

How could I disable this logical change?

Note: I'm using El Capitan, but I had this problem since Mavericks.

2 Answers 2


Newer MacOS Ventura (v13)

System Settings > Desktop & Dock > Scroll down to Mission Control section > Uncheck Automatically rearrange Spaces based on most recent use

enter image description here

Older macOS (v12 and older)

System Preferences > Mission Control
Uncheck Automatically rearrange Spaces based on most recent use.

enter image description here

This will fix the order of all your regular Spaces - but not Fullscreen spaces, which always go to the right of existing numbered Spaces.

From comments: Note this cannot fix the Mac confusing which external screen is which. That's not user-controlled at all, & seems to occur mainly [though not always] when the external screens are identical.

Late note:
This echoes the behaviour of Cmd/Tab or equivalent in most operating systems, so could be considered a 'sensible' default.
just to save this attracting even more comments on why it was a good/bad choice of default.

  • 10
    Seems I've never looked for it precisely. It's the first options in the list. thank you.
    – Reyraa
    Nov 5, 2015 at 7:17
  • 157
    I cannot imagine why anyone would want that to be the default. Thanks for the solution. Oct 12, 2016 at 12:05
  • 32
    Wow. I had thought my computer was glitching for about a year now.
    – Seph Reed
    Dec 14, 2018 at 18:26
  • 19
    thank you thank you thank you thank you. 5 years with mac and I never thought about finding a solution for this crap.
    – Rotem
    Dec 3, 2019 at 9:23
  • 9
    The MOST BUGGIEST feature I've ever seen.
    – Vincent
    Jan 8, 2020 at 4:11

You can also use the terminal to change the setting.

To disable rearrangement:

defaults write com.apple.dock "mru-spaces" -bool "false" && killall Dock

To enable rearrangement:

defaults write com.apple.dock "mru-spaces" -bool "true" && killall Dock

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .