Markdown Lists: Bullet Points, Numbered Lists and Nested Lists
By the MDConverter team · Updated · 2 min read
Quick answer
Start a line with -, * or + and a space for a bullet point, or with a number followed by a period (1.) for a numbered list. Indent a line so it lines up with the text of the item above (usually 2 spaces for bullets, 3 for numbers) to nest it. Numbered lists count from the first number you type, so you can write every item as 1. and the renderer numbers them for you.
Bullet lists
Any of -, * or + followed by a space starts a bullet. Pick one and use it consistently — switching markers in the middle starts a new list.
- Milk
- Eggs
- Bread- Milk
- Eggs
- Bread
Numbered lists
Write a number, a period (or a closing parenthesis) and a space. Only the first number matters: the list counts up from it.
1. Preheat the oven
1. Mix the ingredients
1. Bake for 25 minutes- Preheat the oven
- Mix the ingredients
- Bake for 25 minutes
1. for every item means you never have to renumber when you insert a step.7. Seventh step
8. Eighth step- Seventh step
- Eighth step
Nested lists
Indent the child item so its marker lines up with the text of the parent item. For - that is 2 spaces; for 1. it is 3 spaces; for 10. it is 4. Four spaces works for most cases in most apps.
1. Fruit
- Apples
- Pears
2. Vegetables
- Carrots
- Orange
- Purple- Fruit
- Apples
- Pears
- Vegetables
- Carrots
- Orange
- Purple
- Carrots
Paragraphs, code and quotes inside a list item
Indent follow-up content to the item's text and leave a blank line before it. The content then belongs to that item instead of ending the list.
1. Install the package:
```bash
npm install marked
```
2. Import it in your file.
> Tip: use the ESM build in browsers.Install the package:
npm install markedImport it in your file.
Tip: use the ESM build in browsers.
Tight vs loose lists
If any items are separated by a blank line, the whole list becomes "loose" and every item is wrapped in a paragraph — which adds space between all items. Keep items on consecutive lines for a compact list.
- Tight
- List
Text between the lists.
- Loose
- List- Tight
- List
Text between the lists.
Loose
List
Ending a list (or keeping two lists apart)
A list ends at a blank line followed by unindented text. To place two separate lists next to each other, put something between them — a short sentence, or an HTML comment <!-- --> which renders as nothing.
To start a line with a number and period without creating a list (for example 2026. What a year.), escape the period: 2026\. What a year.
Lists in Word, Google Docs and email
Converters keep list structure: Markdown to Word produces real Word numbering and bullets with the nesting levels intact (not typed "1." characters), and the same lists paste correctly into Google Docs and Gmail or Outlook. For a checklist, see task lists.
List support by app
| App | Supported | Notes |
|---|---|---|
| GitHub, GitLab, VS Code | Yes | Full CommonMark rules: nesting by indentation, any start number. |
| Obsidian | Yes | Tab indents a list item; supports collapsing nested items. |
| Notion | Yes | Typing - or 1. creates a list block; Tab nests. |
| Discord | Yes | Bullets and numbers, nested with indentation. |
| Slack | Partly | The message editor creates lists when you type - or 1. ; pasted Markdown lists stay as text. |
| Partly | Since 2024 - / * bullets and 1. numbers are formatted; no nesting. |
Common mistakes and how to fix them
| Problem | Fix |
|---|---|
| Nested item shows at the top level | Indent it further — to line up with the parent’s text (3+ spaces under 1.). |
| Numbering restarts at 1 after a code block | Indent the code block (and the blank lines around it) to the item’s text so it stays inside the item. |
| A sentence starting with "2026." became a list | Escape the period: 2026\.. |
| Big gaps between list items | Remove blank lines between items to make the list tight. |
Tools for this
Frequently Asked Questions About Lists
Comprehensive answers to common technical, formatting, security, and compatibility questions.
Related reading
- Markdown Checkboxes: How to Make a Task List — The - [ ] syntax, checked items, nested tasks, and where checkboxes are clickable.
- How to Add a Line Break in Markdown (4 Ways) — Why pressing Enter does nothing, and the four ways to force a new line or paragraph.
- Markdown Headings: Syntax, Levels and Linking to a Heading — Heading levels, the setext alternative, anchor links and the mistakes that break headings.