How to Make Bullet Points in Slack, Including Nested Lists
To make bullet points in Slack, type * or - and a space at the start of a line, or press Cmd+Shift+8. We tested it: Tab nests up to five levels, markup mode turns lists off, and API mrkdwn text has no lists while a markdown block does.
On this page
To make bullet points in Slack, type an asterisk (*) or a hyphen (-) and a space at the start of a line. Slack turns the line into a bullet. You can also select lines you already typed and press Cmd+Shift+8 on a Mac (Ctrl+Shift+8 on Windows). Press Shift+Enter for the next bullet, Tab to indent it, and Shift+Tab to move it back. For a numbered list, type 1. and a space.
We tested each of these in Slack's message box on 3 October 2026, sent the results to ourselves, and read back how Slack stored them. The messages were deleted afterwards.
What starts a list in the message box
| Typed at the start of a line | Result |
|---|---|
* and a space | Bulleted list |
- and a space | Bulleted list |
• and a space | Bulleted list |
1. and a space | Numbered list |
| Select lines, Cmd+Shift+8 | Each line becomes a bullet |
Slack's help article only mentions the asterisk, but all three bullet starts worked in our test. The formatting toolbar (Aa in the message field) has the same list buttons, and Slack's shortcut page lists Cmd+Shift+7 (Ctrl+Shift+7) for a numbered list.
How to make nested bullet points
- Type
*and a space, then your first item. - Press Shift+Enter for a new bullet. Plain Enter sends the message.
- Press Tab right after the new bullet to move it one level in. Press it again to go deeper.
- Press Shift+Tab to move an item back out. Backspace on an empty bullet ends the list.
The message box stops at five levels. We pressed Tab ten times in a row: levels 2 to 5 appeared, and every Tab after that left the item at level 5. Each level gets its own bullet shape:
Slack stores the list as a rich text block, one rich_text_list per run of items with an indent from 0 to 4. The plain-text copy Slack keeps in the message's text field looks like this:
• Level 1 (typed * and space)
◦ Level 2 (Tab x1)
▪︎ Level 3 (Tab x2)
• Level 4 (Tab x3)
◦ Level 5 (Tab x4)
◦ Level 6 (Tab x5)
Never appear "away" on Slack again
Cloud-based. No downloads. Works 24/7 even when your laptop is off.
Bullet points not working in Slack?
The asterisk stays an asterisk. Format messages with markup is on. We switched it on and typed * and - : both stayed as plain characters, with no list. To turn it off, click your profile picture, open Preferences, then Advanced, and untick Format messages with markup under Input Options.
The message sends when you press Enter. Use Shift+Enter for the next bullet, or change the Enter key preference so Enter adds a line.
A pasted list shows dashes or stars. A markdown list pasted from ChatGPT or a README arrives as plain text. Slack offers Apply formatting in a toast, or paste it into our markdown to Slack converter first.
On a phone. The same typed starts apply, but phone keyboards have no Tab key, so build nested lists on a computer. We did not test the mobile apps.
Bullet points in bot and API messages
Text sent through the API in Slack's mrkdwn format has no list syntax. We sent the same three bullet starts with chat.postMessage, and Slack kept them as typed characters. A Block Kit markdown block is different: Slack converted its - lines into a real list, including a nested line indented with two spaces.
Read back from the API, the markdown block came out as the same rich_text_list structure the message box makes. The payload we sent:
{
"channel": "D0123456789",
"text": "markdown block test",
"blocks": [
{"type": "markdown", "text": "Markdown block test:\n- dash line\n- second line\n - nested line"}
]
}
For full control, send a rich_text block with rich_text_list elements yourself; style is bullet or ordered and indent sets the level. Payloads, limits and errors are in Slack rich text block and Slack Block Kit markdown. For rows and columns instead of bullets, see how to make a table in Slack.
A markdown block also turns - [ ] into a checklist with real boxes, shown on Slack checkbox in a message.
FAQ
Can a bot post deeper lists than the message box allows?
The message box stops at five levels. A rich_text_list sent through the API takes a higher indent; our rich text block tests posted lists nine levels deep.
Stop Jiggling Your Mouse.
Join hundreds of remote workers who never worry about their Slack status. Set it up once, stay green forever.
Related Articles
How to See All Your DMs in Slack, Including the Hidden Ones
The DMs tab lists your direct messages with people. App DMs, Slackbot and DMs with deleted accounts sit elsewhere. We compared the tab with the full list the Slack API returned.
Slack Images Not Showing? 5 Causes We Reproduced
We uploaded images to a Slack test channel and then switched each image setting off, ran /collapse, and posted from a bot that was not in the channel. Five causes, each reproduced.
How to Message Yourself on Slack (and What It Notifies)
Your own name under Direct messages opens a private DM with yourself. We sent it a note, a file, a scheduled message and a reminder, and checked which ones raised a badge.