Skip to content

<menu> - Menu Element

Block-level HTML5

The <menu> element represents a list of commands or options that can be performed or activated by the user. In modern HTML, it’s semantically equivalent to <ul> but carries specific connotations for command menus and toolbars.

Result
<menu>
<li>Menu item</li>
<li>Another menu item</li>
</menu>

The <menu> element contains <li> elements, similar to <ul> and <ol>.

The <menu> element supports all global attributes like id, class, style, and role.

<menu id="file-menu" class="app-menu" role="menu">
<!-- Menu items -->
</menu>
Result
Result
Result

Commands, actions, and interactive options:

Result

General lists without specific actions:

Result
Result
Result
Result

For interactive menus, use appropriate ARIA roles:

<menu role="menubar">
<li role="none">
<button role="menuitem">File</button>
</li>
<li role="none">
<button role="menuitem">Edit</button>
</li>
<li role="none">
<button role="menuitem">View</button>
</li>
</menu>

Ensure menu items are keyboard accessible:

Result

Screen readers announce menus similarly to lists:

<!-- Screen reader: "List, 3 items. Button, New. Button, Open. Button, Save." -->
<menu>
<li><button>New</button></li>
<li><button>Open</button></li>
<li><button>Save</button></li>
</menu>
<menu>
<li><button>Start Game</button></li>
<li><button>Load Save</button></li>
<li><button>Settings</button></li>
</menu>
Result
BrowserVersionNotes
Chrome1+Treated as <ul>
Firefox1+Treated as <ul>
Safari1+Treated as <ul>
Edge12+Treated as <ul>
IE6+Treated as <ul>

The <menu> element is supported in all browsers but behaves identically to <ul>. Context menu features are not supported.