Blog · Guide

Markdown Lists: Ordered, Unordered, and Nested

May 31, 2026 · 5 min read
advertisement

Lists are among the most-used elements in Markdown — from README bullet points to step-by-step numbered instructions. Markdown supports ordered lists, unordered lists, nested lists, and task checklists. Here’s how they all work.

Unordered Lists

Use a hyphen -, asterisk *, or plus sign + as the list marker, followed by a space:

- First item
- Second item
- Third item

All three markers produce the same output. Hyphens are the most widely used and recommended for consistency.

You can mix markers in a document (different sections use different markers), but mixing them within the same list can cause unexpected behavior in some parsers — stick to one per list.

Ordered Lists (Numbered Lists)

Use a number followed by a period and a space:

1. First step
2. Second step
3. Third step

The numbers don’t have to be sequential. Most parsers renumber the list automatically. This is valid Markdown:

1. First item
1. Second item
1. Third item

Renders as 1, 2, 3. You can also start a list at any number:

5. Fifth item
6. Sixth item

Renders starting at 5. This is useful for resuming a list after an interruption.

Nested Lists

Indent items by two or four spaces (or one tab) to create sub-lists:

- Fruit
  - Apple
  - Banana
  - Cherry
- Vegetables
  - Carrot
  - Broccoli

Rendered output:

  • Fruit
    • Apple
    • Banana
  • Vegetables
    • Carrot

You can nest ordered inside unordered and vice versa:

1. Download the repository
   - Option A: use `git clone`
   - Option B: download ZIP from GitHub
2. Install dependencies
   - Run `npm install`
   - Run `pip install -r requirements.txt`
3. Start the server

Most parsers support multiple levels of nesting. Three levels is usually the practical limit before readability suffers.

Task Lists (Checkboxes)

GitHub Flavored Markdown supports task list items with - [ ] for an open checkbox and - [x] for a checked one:

- [x] Create a new project
- [x] Write the README
- [ ] Add tests
- [ ] Deploy to production

Task lists are widely supported in GitHub, GitLab, Notion, and most modern Markdown editors. They’re useful for project checklists, meeting action items, and feature tracking.

Adding Content Between List Items

To add a paragraph, blockquote, or code block between list items, indent it to align with the list marker:

1. First item

   This paragraph is still part of item 1.
   It's indented to match.

2. Second item

   > A blockquote inside an ordered list item.

3. Third item

code block inside a list item

The indent must align with the text start of the list item (typically 3 spaces for ordered, 2 for unordered).

Continuation Without Extra Elements

A blank line between list items turns them into “loose” list items — each one gets wrapped in a <p> tag in the HTML output, which adds spacing. Tight lists (no blank lines between items) render more compactly.

Tight list:

- Item one
- Item two
- Item three

Loose list (each item in a <p>):

- Item one

- Item two

- Item three

Use tight lists for short bullet points, loose lists when items contain full sentences or multiple lines.

Escaping List Markers

If a line starts with a number-period (like 1986. What a year) and you don’t want it to become a list, escape the period with a backslash:

1986\. What a year it was.

Common Mistakes

Forgetting the space after the marker- item works, -item does not. The space between the marker and text is required.

Inconsistent indentation — Use the same number of spaces throughout your nested lists. Mixing 2-space and 4-space indentation confuses some parsers.

Interrupting an ordered list — A non-list paragraph between numbered items resets the counter in some parsers. If you need numbered items with content between them, use the indented continuation syntax.

Try It

Create and preview lists in the Markdown Monk editor — paste your list, see it rendered, and export to PDF, DOCX, or HTML with one click.

Free tool

Try it in the editor

Test every syntax example above — live in your browser, free, no sign-up.

Open editor → More guides →