Skip to content
W3C Design System
  • Home
  • Settings
  • Styles
  • Layouts
  • Components
  • Scripts
  • Templates
  • Avatars
  • Buttons
  • Forms
  • Forms: errors
  • Forms: validation
  • Hide and show items inclusively
  • Links
  • Lists
  • SVG icons
  • SVG images
  • Tables
  • Typography
  • Utilities
  • Vertical spacing

Lists

Use lists to make blocks of text easier to read, and to break information into manageable chunks.

Note that lists that are a descendant of the <nav> element have all margins, padding and list item markers removed by default.

¶Unordered lists

Open this Unordered list with markers in a new tab

HTML:

<ul>
	<li>Level 1 list item 1</li>
	<li>Level 1 list item 2</li>
	<li>Level 1 list item 3
		<ul>
			<li>Level 2 list item 1</li>
			<li>Level 2 list item 2</li>
			<li>Level 2 list item 3</li>
		</ul>
	</li>
	<li>Level 1 list item 4</li>
	<li>Level 1 list item 5</li>
	<li>Level 1 list item 6</li>
</ul>

¶Ordered lists

Open this Ordered list with markers in a new tab

HTML:

<ol>
	<li>Level 1 list item 1</li>
	<li>Level 1 list item 2</li>
	<li>Level 1 list item 3
		<ol type="a">
			<li>Level 2 list item 1</li>
			<li>Level 2 list item 2</li>
			<li>Level 2 list item 3</li>
		</ol>
	</li>
	<li>Level 1 list item 4</li>
	<li>Level 1 list item 5</li>
	<li>Level 1 list item 6</li>
</ol>

¶Classes to modify list styles

The .clean-list class removes all margin and padding and list item markers:

Open this Unordered list without spacing and bullets in a new tab

HTML:

<ul class="clean-list">
	<li>Level 1 list item 1</li>
	<li>Level 1 list item 2</li>
	<li>Level 1 list item 3</li>
	<li>Level 1 list item 4</li>
	<li>Level 1 list item 5</li>
	<li>Level 1 list item 6</li>
</ul>

The .nomarkers-list class removes list item markers only:

Open this Unordered list without bullets in a new tab

HTML:

<ul class="nomarkers-list">
    <li>Level 1 list item 1</li>
    <li>Level 1 list item 2</li>
    <li>Level 1 list item 3</li>
    <li>Level 1 list item 4</li>
    <li>Level 1 list item 5</li>
    <li>Level 1 list item 6</li>
</ul>

The .noindent-list class removes padding from the leading edge of lists:

Open this Unordered list without bullets in a new tab

HTML:

<ul class="noindent-list">
    <li>Level 1 list item 1</li>
    <li>Level 1 list item 2</li>
    <li>Level 1 list item 3</li>
    <li>Level 1 list item 4</li>
    <li>Level 1 list item 5</li>
    <li>Level 1 list item 6</li>
</ul>

Adding the .counter class to an ordered list will ensure that any nested ordered lists are displayed as decimals, with the first digit corresponding to the number of the parent list item:

Open this Ordered list with a counter in a new tab

HTML:

<ol class="counter">
    <li>Level 1 list item 1</li>
    <li>Level 1 list item 2</li>
    <li>Level 1 list item 3
        <ol>
            <li>Level 2 list item 1</li>
            <li>Level 2 list item 2</li>
            <li>Level 2 list item 3</li>
        </ol>
    </li>
    <li>Level 1 list item 4</li>
    <li>Level 1 list item 5</li>
    <li>Level 1 list item 6</li>
</ol>

¶Considerations

The .clean-list and .nomarkers-list classes that remove list item markers also remove list semantics in Webkit browsers, as noted by Scott O'Hara. If list semantics are important for your users, add role="list" to restore them.

The .counter class supports the "start" and "reversed" attributes on the ordered list, but does not support the "type" attribute, e.g. for Roman numerals. Ordered lists with the .counter class will always use decimal numbers for the markers.

¶Description lists

Open this Description list in a new tab

HTML:

<dl>
	<dt>Term</dt>
	<dd>Description</dd>
	<dt>Term</dt>
	<dd>Description</dd>
	<dt>Term</dt>
	<dd>Description</dd>
	<dt>Term</dt>
	<dd>Description</dd>
</dl>

¶Tabulated description lists

For a more tabulated style, add the .grid class to the <dl> element:

Open this Description list with grid styling in a new tab

HTML:

<dl class="grid">
	<dt>Term</dt>
	<dd>Description</dd>
	<dt>Term</dt>
	<dd>Description</dd>
	<dt>Term</dt>
	<dd>Description</dd>
	<dt>Term</dt>
	<dd>Description</dd>
</dl>

¶Inline description lists

To align the terms and the descriptions separated with a comma, add the .inline class to the <dl> element and a <div> around the <dt>/<dd>:

Open this Inline description list in a new tab

HTML:

<dl class="inline">
	<div>
		<dt>Term</dt>
		<dd>Description</dd>
		<dd>Other description</dd>
	</div>
	<div>
		<dt>Term</dt>
		<dd>Description</dd>
		<dd>Other description</dd>
	</div>
	<div>
		<dt>Term</dt>
		<dd>Description</dd>
		<dd>Other description</dd>
	</div>
	<div>
		<dt>Term</dt>
		<dd>Description</dd>
		<dd>Other description</dd>
	</div>
</dl>

Copyright © 2026 W3C - generated 30 Sep 2026, 08:36:40 UTC

Feedback is welcome and can be submitted as a GitHub issue.