Add bullets to list items

Paste a list and get each non-blank line prefixed with your chosen bullet character. Default is `•`. Any single character or short string works - `-`, `*`, `+`, `→`, emoji, whatever.

Input
Ready
Output
Live

A simple bullet prefixer

Each non-blank line is prefixed with your Bullet text + one space. Default is `•` (U+2022 BULLET). Blank lines pass through unchanged - they do not get a bullet. That means a pasted list with spacing keeps its spacing, with bullets added only to actual items.

The Bullet field accepts any text. Single character (`•`, `-`, `*`, `→`, `▸`), short string (`** `, `>> `), or emoji all work. Only limitation: whatever you type is used as-is - no trimming, no escaping - followed by a single space.

For Markdown-compatible lists, use `-` / `*` / `+` via convert-a-list-to-markdown which also handles the numbered-list case. For task-list checkboxes, use Add a prefix in Task style.

How to use add bullets to list items

  1. 1Paste your list into the input panel
  2. 2Type your bullet character in the Bullet field (default `•`)
  3. 3Output prepends `bullet + space` to every non-blank line
  4. 4Blank lines pass through unchanged
  5. 5To remove bullets later, use Remove bullets

Keyboard shortcuts

Drive ListShift without touching the mouse.

Shortcut Action
Ctrl ZUndo last input change
Ctrl Shift ZRedo
Ctrl Shift EnterToggle fullscreen focus on the editor
EscExit fullscreen
Ctrl KOpen the command palette to jump to any tool
Ctrl SSave current pipeline draft Plus
Ctrl PRun a saved pipeline Plus

What this tool actually does

One option, two rules.

Any bullet character or short string

Type whatever you want in the Bullet field. Single character, multi-character string, emoji. The tool adds your text plus a single space to every non-blank line.

Blank lines pass through

An empty line stays empty - no bullet added. This keeps the spacing of your input intact.

One bullet per line

Every non-blank line gets exactly one bullet at the start. No nesting, no hierarchy - for indented hierarchies, combine with Indent.

No escaping or trimming

The bullet text is emitted verbatim. Your line content is emitted verbatim. If either contains leading/trailing whitespace you do not want, run trim first.

Reversible

Remove bullets strips leading `-`, `*`, `+`, `•` + whitespace. If you used a custom bullet character, use Replace to strip it instead.

Worked example

Default bullet `•`. The blank line between `Write docs` and `Call mom` stays blank.

Input
Buy milk
Write docs

Call mom
Output
• Buy milk
• Write docs

• Call mom

Settings reference

How the Bullet option shapes the output.

Setting What it does Effect on the sample
Bullet: • (default) Prepends U+2022 BULLET + space to every non-blank line `• Buy milk` / `• Write docs` / (blank) / `• Call mom`
Bullet: `-` Markdown-compatible dash `- Buy milk` / etc.
Bullet: `→` Arrow or any other glyph `→ Buy milk` / etc.
Bullet: emoji (e.g. `✅ `) Any string works - no trimming applied `✅ Buy milk` (your trailing space from the field is preserved)
Blank-line behaviour (automatic) Empty lines pass through without a bullet The blank between items stays blank

FAQ

Can I use a multi-character bullet like `** `?
Yes. The Bullet field accepts any string. It is added verbatim to the start of every non-blank line followed by a single space.
How is this different from the Markdown tool?
convert-a-list-to-markdown specifically targets the Markdown bullet set (`-`, `*`, `+`) plus numbered-list auto-counting. This tool accepts any character and is purely additive - no numbered option.
What happens to blank lines?
They are preserved in place without a bullet. A pasted list with spacing keeps its spacing; only actual items get bulleted.
Does the tool trim spaces from my input?
No - item content is emitted verbatim. If items have extra whitespace you do not want, chain trim before this tool.
How do I remove bullets later?
For the standard bullets (`-`, `*`, `+`, `•`), use Remove bullets. For custom bullets, use Replace with the bullet text as Find and empty as Replace.