We're redesigning!

Thanks to a generous grant from the InVision Design Forward Fund, we're in the process of redesigning the site. You can follow along with our plan on GitHub, and review our purpose and team. Interested in helping out? Check out our contributing guidelines.

By default, Apple computers have an operating system (OS) level setting that limits the Tab key to “Text boxes and lists only”. This can be confusing, if not frustrating, for those unaware of this setting and expect keyboard focus to be similar to navigating on a Windows machine.

In order to allow for full keyboard navigation of all focusable interactive elements in macOS Safari and Firefox, you’ll need to make sure the following keyboard settings are adjusted.

“All Controls” in macOS

In the macOS settings, the “All Controls” setting must be enabled for all focusable interactive elements (for instance, links) to be keyboard accessible via the Tab key alone. Enable this feature by going to:

  1. System Preferences
  2. Keyboard
  3. Shortcuts (tab)
  4. Select “All controls” (radio button) or press Control + F7 (if you’re on a laptop you may also need to press the fn key).

The macOS Settings window. The screenshot is highlighting the selection of the 'All controls' radio button.

After updating this setting you will need to quit and restart your browsers to have the update take effect.

Highlight each item in Safari

Additionally for Safari, you can enable the “highlighting of each item” setting in order to use the Tab key to navigate page controls. Enable this feature by going to Safari’s:

  1. Preferences
  2. Advanced (tab)
  3. Check “Press Tab to highlight each item on a webpage” (checkbox)

The Safari Preferences window. The screenshot is highlighting the selection of the 'Press Tab to highlight each item on a webpage' checkbox.

With these changed settings in place you should now be able to use the Tab key to navigate around web pages as expected.

Enable via Terminal

Run the following command in Terminal to enable keyboard control at the macOS level. This command can be helpful if your organization uses a config script for new employee machines!

defaults write NSGlobalDomain AppleKeyboardUIMode -int 3

Further reading

Edit on GitHub