HTML <optgroup> Tag

The HTML <optgroup> tag represents a group of <option> elements with a common label.

The <optgroup> element helps users understand the options when choosing from a large list of options.

Syntax

The <optgroup> tag is written as <optgroup label=""></optgroup> with any number of <option> and/or script-supporting elements.

The label attribute must be specified. This attribute provides the user with the name of the group. Without this, the <optgroup> element would be meaningless.

The <optgroup> tag must be nested inside a <select> tag.

Like this:

<select name="City">
	<optgroup label="Australia">
		<option value ="sydney">Sydney</option>
		<option value ="melbourne">Melbourne</option>
		<option value ="brisbane">Brisbane</option>
	</optgroup>
</select>

Example

Here, we have a list of cities that are grouped by country. The <optgroup> tag enables us to do this by adding the country name to the label attribute.

CodeResult

Differences Between HTML 4 & HTML 5

None.

To see more detail on the two versions see HTML5 <optgroup> Tag and HTML4 <optgroup> Tag. Also check out the links to the official specifications below.

Template

Here's a template for the <optgroup> tag with all available attributes for the tag (based on HTML5). These are grouped into attribute types, each type separated by a space. In many cases, you will probably only need one or two (if any) attributes. Simply remove the attributes you don't need.

For more information on attributes for this tag, see HTML5 <optgroup> Tag and HTML4 <optgroup> Tag.

<optgroup  
 disabled=""
 label=""
 
 accesskey=""
 class=""
 contenteditable=""
 contextmenu=""
 dir=""
 draggable=""
 dropzone=""
 hidden=""
 id=""
 itemid=""
 itemprop=""
 itemref=""
 itemscope=""
 itemtype=""
 lang=""
 spellcheck=""
 style=""
 tabindex=""
 title=""
 translate=""

 onabort=""
 onautocomplete=""
 onautocompleteerror=""
 onblur=""
 oncancel=""
 oncanplay=""
 oncanplaythrough=""
 onchange=""
 onclick=""
 onclose=""
 oncontextmenu=""
 oncuechange=""
 ondblclick=""
 ondrag=""
 ondragend=""
 ondragenter=""
 ondragexit=""
 ondragleave=""
 ondragover=""
 ondragstart=""
 ondrop=""
 ondurationchange=""
 onemptied=""
 onended=""
 onerror=""
 onfocus=""
 oninput=""
 oninvalid=""
 onkeydown=""
 onkeypress=""
 onkeyup=""
 onload=""
 onloadeddata=""
 onloadedmetadata=""
 onloadstart=""
 onmousedown=""
 onmouseenter=""
 onmouseleave=""
 onmousemove=""
 onmouseout=""
 onmouseover=""
 onmouseup=""
 onmousewheel=""
 onpause=""
 onplay=""
 onplaying=""
 onprogress=""
 onratechange=""
 onreset=""
 onresize=""
 onscroll=""
 onseeked=""
 onseeking=""
 onselect=""
 onshow=""
 onsort=""
 onstalled=""
 onsubmit=""
 onsuspend=""
 ontimeupdate=""
 ontoggle=""
 onvolumechange=""
 onwaiting=""
	>
</optgroup>

Tag Details

For more details about the <optgroup> tag, see HTML5 <optgroup> Tag and HTML4 <optgroup> Tag.

Specifications

Here are the official specifications for the <optgroup> element.

What's the Difference?

W3C creates "snapshot" specifications that don't change once defined. So the HTML5 specification won't change once it becomes an official recommendation. WHATWG on the other hand, develops a "living standard" that is updated on a regular basis. In general, you will probably find that the HTML living standard will be more closely aligned to the current W3C draft than to the HTML5 specification.