Guides and Sample Code

Developer

macOS Human Interface Guidelines

iBooks
On This Page

Menu Bar Menus

The single menu bar at the top of the main display screen provides a home for the top-level menus in your app. In addition to system-provided and user-assigned items, you determine the menus that appear in the menu bar.

As you can see here, menu bar menus use the current appearance of the menu bar.

Light menu bar

image: ../Art/light_menubar_2x.png

Dark menu bar

image: ../Art/dark_menubar_2x.png

The following sections contain guidelines that help you choose which menus you need and which menu items you should include.

The Apple Menu

The Apple menu provides items that are available to users at all times, regardless of which app is active. The Apple menu’s contents are defined by the system and can't be modified by users or developers.

image: ../Art/apple_menu_2x.png

The App Menu

The app menu contains items that apply to the app as a whole rather than to a specific document or other window. To help users identify the active app, the app menu title (which is the app’s name) is displayed in a bold font in the menu bar.

The app menu contains the following standard menu items, listed in the order in which they should appear.

image: ../Art/app_menu_2x.png

Menu item

Expected

Keyboard shortcut

Meaning

About AppName

Yes

Opens the About window, which contains the app's copyright information and version number.

For more about About windows, see The About Window.

Preferences…

Yes

Command-,

Opens a preferences window for your app.

To learn about defining preferences for your app, see Preferences.

Services

Yes

Displays a submenu of services that are available in the current context.

For more information on providing and using services, see Services.

Hide AppName

Yes

Option-Command-H

Hides all of the windows of the currently running app and brings the most recently used app to the foreground.

Hide Others

Yes

Command-H

Hides the windows of all the other apps currently running.

Show All

Yes

Shows all windows of all currently running apps.

Quit AppName

Yes

Command-Q

Quits the app.

If possible, use one word for the app menu title. Using a short name helps make room for the rest of your app’s menus. If your app’s name is too long, provide a short name that’s about 16 characters or fewer. If you don’t provide a short name, the system might truncate the name from the end and add an ellipsis when the name is displayed in the menu bar.

Don’t include the app version number in the name. Version information belongs in the About window.

Use the short app name in menu items that display it. If you supplied a short app name, use it in the About, Hide, and Quit menu items.

Put a separator between the About item and the Preferences item. These two commands are very different and should be in different groups. If your app provides document-specific preferences, make them available in the File menu. See The File Menu.

In general, place the Preferences menu item before any app-specific items. For example, Mail places its app-specific Provide Mail Feedback item after Preferences. You can add a separator between Preferences and your app-specific items if it makes sense (for advice on grouping menu items, see Grouping Menu Items).

Don’t include a Help menu item with other app-specific items. All app help items belong in the Help menu. See The Help Menu.

Place the Quit menu item last. Precede the Quit item with a separator and don’t combine it with any other items.

The File Menu

In general, each command in the File menu applies to a single file (most commonly, a user-created document).

If your app is not document-based, you can rename the File menu to something more appropriate or eliminate it.

image: ../Art/file_menu_2x.png

The File menu includes the following standard menu items, listed in the order in which they should appear.

Menu item

Expected

Keyboard shortcut

Meaning

New

Yes

Command-N

Opens a new document.

For more information about naming new document windows, see Naming Windows.

Open…

Yes

Command-O

Displays a dialog for choosing an existing document to open. (Note that in the Finder, the Open command is not followed by an ellipsis character because the user performs navigation and document selection before selecting the Open command.)

For more information, see The Open Dialog.

Open Recent

No

Opens a submenu that displays a list of the most recently opened documents. (The Apple menu provides the ability to open recent documents and apps in the Recent Items menu item.)

Close

Yes

Command-W

Closes the active window.

When the user presses the Option key, Close changes to Close All. The keyboard shortcuts Command-W and Command-Option-W should implement the Close and Close All commands, respectively.

Close File

No

Shift-Command-W

Closes a file and all its associated windows.

The Close File command is typically used in file-based apps that support multiple views of the same file.

Save

No

Command-S

Displays the Save dialog, in which users provide a name and location for their content.

The Save command can become the Save a Version command after users provide a name and location for their content. (For more information about the Save dialog, see Save Dialogs.)

Duplicate

Yes

Duplicates the current document, leaving both documents open.

Save As...

No

Shift-Command-S

Legacy command. In document-based apps, this functionality is provided by the Duplicate command instead.

Export As...

No

Displays the Save dialog, in which the user can save a copy of the active file in a format your app does not handle.

After the user completes an Export As command, the original file remains open so that the user can continue working in the current format; the exported file does not automatically open.

Save All

No

Saves changes to all open files.

Revert to Saved

Yes

Displays all available versions of the document in the version browser (when Auto Save is enabled). Users choose a version to restore and the current version of the document is replaced by the restored version.

Print...

Yes

Command-P

Opens the standard Print dialog, which allows users to print to a printer, to send a fax, or to save as a PDF file.

For more information, see The Print and Page Setup Dialogs.

Page Setup...

No

Shift-Command-P

Opens a dialog for specifying printing parameters such as paper size and printing orientation (these parameters are saved with the document).

In the Open Recent command, display document names only. In particular, don’t display file paths. Users have their own ways of keeping track of which documents are which and file paths are inappropriate to display unless specifically requested by the user.

Use the Save command to give users the opportunity to specify a name and a location for their content. As much as possible, you want to help users separate the notion of saving their work from the task of giving it a name and location. Above all, you want users to feel comfortable with the fact that their work is safe even when they don’t choose File > Save. To learn more about how to free users from frequently using the Save command to save their work, see Auto Save and Versions.

Use the Duplicate command to replace the Save As and Export As commands. Many users are confused by the Save As and Export As experiences because the relationship between the two document versions isn’t always obvious. The Duplicate command shows users precisely where the document copy comes from (it emerges from the original) and differentiates the versions (the copy includes Copy in its title). In addition, the Duplicate command leaves both document versions open, giving users control over which document they want to work in.

If you provide document-specific preferences items, place them above printing commands. Also, be sure to give your document-specific preferences a unique name, such as Page Setup, rather than Preferences. Note that the Preferences and Quit commands, which apply to the app as a whole, are in the app menu.

Avoid providing multiple Save As Format commands. If necessary, you can instead use the Format pop-up menu in the Save dialog to give the user a selection of file formats. For example, the Format pop-up menu in Preview’s Save dialog allows a user to specify many different formats, such as TIFF, PNG, and JPG.

If you need to allow users to continue working on the active document, but save a copy of the document in a format your app doesn't handle, you can provide an Export As command.

Avoid providing Save a Copy or Save To commands. The functionality that users associate with these commands is provided by the Duplicate command.

The Edit Menu

The Edit menu commands allow people to change (that is, edit) the contents of documents and other text containers, such as fields. It also provides commands that allow people to share data, within and between apps, through the Clipboard.

image: ../Art/edit_menu_2x.png

Even if your app doesn’t handle text editing within its documents, the expected Edit commands should be available for use in dialogs and wherever users can edit text.

The Edit menu includes the following standard menu items, listed in the order in which they should appear.

Menu item

Expected

Keyboard shortcut

Meaning

Undo

Yes

Command-Z

Reverses the effect of the user’s previous operation.

Redo

Yes

Shift-Command-Z

Reverses the effect of the last Undo command.

Cut

Yes

Command-X

Removes the selected data and stores it on the Clipboard, replacing the previous contents of the Clipboard.

Copy

Yes

Command-C

Makes a duplicate of the selected data, which is stored on the Clipboard.

Paste

Yes

Command-V

Inserts the Clipboard contents at the insertion point.

The Clipboard contents remain unchanged, permitting the user to choose Paste multiple times.

Paste and Match Style

No

Option-Shift-Command-V

Inserts the Clipboard contents at the insertion point, matching the style of the inserted text to the surrounding text.

Delete

Yes

Removes selected data without storing the selection on the Clipboard.

Select All

Yes

Command-A

Highlights every object in the document or window, or all characters in a text field.

Find

Yes

Command-F

Opens an interface for finding items.

Find Next

No

Command-G

Performs the last Find operation again.

Spelling...

No

Command-:

Performs a spell check of the selected text and opens an interface in which users can correct the spelling, view suggested spellings, and find other misspelled words.

Speech

No

Displays a submenu containing the Start Speaking and Stop Speaking commands.

Users choose this command to hear any app text spoken aloud by the system.

Special Characters...

Yes

Control-Command-Space

Displays the Special Characters window, which allows users to input characters from any character set supported by macOS into text entry fields. This menu item is automatically inserted at the bottom of the Edit menu.

As much as possible, support undo and redo functionality. In particular, support the Undo command for:

  • Operations that change the contents of a document

  • Operations that require a lot of effort to re-create

  • Most menu items

  • Most keyboard input

It might not be possible to support undo for every operation users can perform in your app. For example, selecting, scrolling, splitting a window, and changing a window’s size and location aren’t necessarily undoable.

Let the user know when Undo isn’t possible. If the last operation can’t be reversed, change the command to Can’t Undo and display it dimmed to help the user understand that the action isn’t available.

If a user attempts to perform an operation that could have a detrimental effect on data and that can’t be undone, warn the user. For more information on how to do this, see Alerts.

Add the name of the last undo or redo operation to the Undo and Redo commands, respectively. If the last operation was a menu command, add the command name. For example, if the user has just entered some text, the Undo command could read Undo Typing. If the user chooses Undo Typing, the Redo command should then read Redo Typing, and the Undo command should include the name of the operation the user performed before typing.

Don’t change the Delete menu item name. Choosing Delete is the equivalent of pressing the Delete key or the Clear key. Use Delete as the menu command, not Clear or Erase or anything else.

Determine the best placement for the Find command. For example, the Find command could be in the File menu, instead of the Edit menu, if the object of the search is files. When appropriate, your app should also contain a Find/Replace command.

Provide a Find submenu, if appropriate. You might want to include a Find submenu if find is important functionality in your app. Typically, a Find submenu contains Find (Command-F), Find Next (Command-G), Find Previous (Shift-Command-G), Use Selection for Find (Command-E), and Jump to Selection (Command-J). If you include a Find submenu, the Find menu item name should not include an ellipsis character.

Group Find Next with Find. Whether you place the Find command in the File menu or the Edit menu, this item should be grouped with the Find command because users think of them together.

Provide a Spelling submenu, if appropriate. If your app provides multiple spelling-related commands, you might want to include a Spelling submenu that contains Check Spelling (Command-;) and Check Spelling as You Type commands. If you include a Spelling submenu, the Spelling menu item name should not include an ellipsis character.

The Format Menu

If your app provides functions for formatting text, you can include a Format menu as a top-level menu or as a submenu of the Edit menu. It might be appropriate to group some items that are in the Format menu into submenus, such as Font, Text, or Style.

image: ../Art/format_menu_2x.png

The Format menu includes the following standard menu items, listed in the order in which they should appear.

Menu item

Expected

Keyboard shortcut

Meaning

Show Fonts

Yes

Command-T

Displays the Fonts window.

The Show Fonts menu item should be the first item.

Show Colors

Yes

Shift-Command-C

Displays the Colors window.

Bold

No

Command-B

Boldfaces the selected text or toggles boldfaced text on and off.

Italic

No

Command-I

Italicizes the selected text or toggles italic text on and off.

Underline

No

Command-U

Underlines the selected text or toggles underlined text on and off.

Bigger

No

Shift-Command–equal sign

Causes the selected item to increase in size in defined increments.

Smaller

No

Command-hyphen

Causes the selected item to decrease in size in defined increments.

Copy Style

No

Option-Command-C

Copies the style—font, color, and size for text—of the selected item.

Paste Style

No

Option-Command-V

Applies the style of one object to the selected object.

Align Left

No

Command-{

Left-aligns a selection.

Center

No

Command-|

Center-aligns a selection.

Justify

No

Evenly spaces a selection.

Align Right

No

Command-}

Right-aligns a selection.

Show Ruler

No

Displays a formatting ruler.

Copy Ruler

No

Control-Command-C

Copies formatting settings such as tabs and alignment for a selection to apply to another selection and stores them on the Clipboard.

Paste Ruler

No

Control-Command-V

Applies formatting settings (that have been saved to the Clipboard) to the selected object.

The View Menu

The View menu provides commands that affect how users see a window’s content; it does not provide commands to select specific document windows to view or to manage a specific document window. Commands to organize, select, and manage windows are in the Window menu (described in The Window Menu).

image: ../Art/view_menu_2x.png

The View menu includes the following standard menu items, listed in the order in which they should appear.

Menu item

Expected

Keyboard shortcut

Meaning

Show/Hide Toolbar

Yes

Option-Command-T

Shows or hides a toolbar.

Customize Toolbar...

Yes

Opens a dialog that allows the user to customize which items are present in the toolbar.

Enter Full Screen

No

Control-Command-F

Opens the window at full-screen size in a new space. Available when the app supports full-screen windows.

Include the View menu if a window can go full screen or if it contains a toolbar. Create a View menu for these commands even if your app doesn’t need to have other commands in the View menu. Note that the Enter Full Screen command toggles with the Exit Full Screen command.

Avoid using the View menu to display panels (such as tool palettes). Use the Window menu to display open windows and panels instead.

Implement the Show/Hide Toolbar command as a dynamic toggled menu item. If the toolbar is currently visible, the menu item says Hide Toolbar. If the toolbar is not visible, it says Show Toolbar.

App-Specific Menus

Add your own app-specific menus as appropriate. Place these menus between the View menu and the Window menu. For example, the Safari-specific History and Bookmarks menus appear between the View and Window menus.

image: ../Art/app_specific_menus_2x.png

Make app commands available in menus. The menu bar is the first place people tend to look for commands, especially when they’re new to an app. It’s a good idea to list all important commands in the appropriate app menus so that people can find them easily. It can be appropriate to omit infrequently used or power user commands from your app’s menus (instead making them available in a contextual menu, for example), but be wary of doing this too often. Even experienced users can fail to find commands that are essentially hidden in this way.

As much as possible, arrange menus so that they reflect the hierarchy of objects in your app. For example, if your app helps users create animated stories, the app-specific menus might be Scenes, Characters, Backgrounds, and Projects. Because a user probably sees the project as a high-level entity that contains scenes, each of which contains backgrounds and characters, a natural ordering of these menus might be Projects, Scenes, Backgrounds, and Characters. In general, place the menus that display commands to handle high-level, more universal objects toward one end of the menu bar and the menus that focus on the more specific entities toward the opposite end. When your app is used in countries that use left-to-right scripts, the high-level menus should appear on the left; in countries that use right-to-left scripts, the high-level menus should appear on the right.

The Window Menu

The Window menu contains commands for organizing and managing an app’s windows.

Other than Minimize and Zoom (discussed below), the Window menu does not contain commands that affect the way a user views a window’s contents. The View menu (described in The View Menu) contains all commands that adjust how a user views a window’s contents.

image: ../Art/window_menu_2x.png

The Window menu includes the following standard items, listed in the order in which they should appear.

Menu item

Expected

Keyboard shortcut

Meaning

Minimize

Yes

Command-M

Minimizes the active window to the Dock.

Minimize All

No

Option-Command-M

Minimizes all the windows of the active app to the Dock.

Zoom

Yes

Toggles between a predefined size appropriate to the window’s content and the window size the user has set.

Bring All to Front

No

Brings forward all of an app’s open windows, maintaining their onscreen location, size, and layering order. (This should happen when the user clicks the app icon in the Dock.)

Note that this item can be an Option-enabled toggle with Arrange in Front.

Arrange in Front

No

Brings forward all of the app’s windows in their current layering order and changes their location and size so that they are neatly tiled.

Note that this item can be an Option-enabled toggle with Bring All to Front.

The following guidelines help you provide a Window menu that helps users organize windows in your app.

List open windows appropriately. The Window menu should list your app’s open windows (including minimized windows) in the order in which they were opened, with the most recently opened window first. If a document contains unsaved changes, a dot can appear next to its name.

Avoid listing open panels in the Window menu. You can, however, add a command to the Window menu to show or hide panels in your app. (For more information about panels, see Panels.)

Include a Window menu for the Minimize and Zoom commands. Even if your app consists of only one window, you should provide the Minimize and Zoom commands so that people using full keyboard access can implement these functions with the keyboard.

Use the correct order for items in the Window menu. Specifically, items should appear in this order:

  • Minimize

  • Zoom

  • A separator

  • App-specific window commands

  • A separator

  • Bring All to Front (optional)

  • A separator

  • A list of open windows

Note that the Close command should appear in the File menu, below the Open command (see The File Menu).

Avoid using Zoom to expand the window to the full screen size. Users expect Zoom to toggle the window between two useful sizes.

The Help Menu

If your app provides onscreen help, the Help menu should be the rightmost menu of your app’s menus.

image: ../Art/help_menu_2x.png

If you have registered your help book, the system provides the Spotlight For Help search field as the first item in the menu. For information on how to register your help book, see Apple Help Programming Guide.

The next menu item is AppName Help, which opens Help Viewer to the first page of your app’s help book. For some guidelines on creating useful help content, see User Assistance.

As much as possible, display only one custom item in the Help menu. That is, it’s best to display only the AppName Help item. If you do have more items, display them below this item. If you have additional items that are unrelated to help content, such as arbitrary website links, registration information, or release notes, link to these within your help book instead of listing them as separate items in the Help menu.

Avoid using the Help menu as a table of contents for your help book. When users choose the AppName Help item, they can see the sections in your help book in the Help Viewer window. If you choose to provide additional links into your help content within the Help menu, be sure they are distinct.

Menu Bar Extras

Users, and not apps, place menu bar extras in the menu bar. Typically, users decide to hide or show a menu bar extra by changing a setting in the appropriate preferences pane.

If there isn’t enough room in the menu bar to display all menus, macOS automatically removes menu bar extras to make room for app menus. Similarly, if there are too many menu bar extras, macOS may remove some of them to avoid crowding app menus.

Don’t rely on the presence of menu bar extras. The system might change which menu bar extras are visible, and you can’t be sure which menu bar extras users have chosen to show or hide.

Avoid creating a popover that emerges from a menu bar extra. Popovers emerge from controls and specific window areas. For guidelines on how to use a popover in your app, see Popover. A menu bar extra can open a menu, such as the Keyboard & Character Viewer menu.

image: ../Art/menubar_extras_2x.png

Use a template image to represent a menu bar extra. In General system preferences, users can change the menu bar (and Dock) to a dark appearance. If you don’t use a template image to represent your menu bar extras, they might not look good in both menu bar appearances.

Consider alternatives to creating a menu bar extra. For example, you can use the Dock menu functions to open a menu from your app’s icon in the Dock. For some guidelines on how to create a Dock menu, see Dock Menus.