A flat Markdown list generator
This tool produces a single-level Markdown list. Every non-blank input line becomes one list item, prefixed with your chosen bullet character and a single space. There is no nesting, no task-list checkboxes, and no content-level escaping - Markdown renderers accept `&`, `<`, `>`, and most punctuation inside list items as-is, so we do not touch them.
The Numbered option (`1.`) is a special case: instead of prefixing every line with the literal text `1.`, the tool actually numbers each line sequentially (`1.`, `2.`, `3.` and so on). Most Markdown renderers also auto-renumber `1.`-prefixed lists, but explicit numbering makes the source readable in plain text too, so that is what we emit.
Blank and whitespace-only input lines are skipped before emission. That means a stray trailing return in your paste does not produce an empty bullet `- ` in the output, and a paragraph break in your input does not create a numbered gap in the output list.
How to use convert a list to markdown
- 1Paste your list into the input panel, one value per line
- 2Pick a bullet character: `-` (default, canonical), `*`, `+`, or `1.` for numbered
- 3Output updates live; blank lines are dropped automatically
- 4Copy the Markdown or download it as a .md file from the output panel
Keyboard shortcuts
Drive ListShift without touching the mouse.
What this generator actually does
One option and a handful of fixed behaviors.
Four bullet styles
Dash (`-`) is the default and the one CommonMark-compliant renderers produce when you round-trip. Asterisk (`*`) and plus (`+`) are semantically identical in Markdown - pick whichever your team standardises on. Numbered (`1.`) auto-increments per line for an ordered list.
Sequential numbering in `1.` mode
With Numbered selected, line 1 gets `1.`, line 2 gets `2.`, and so on. This produces Markdown source that is already readable as a numbered list in plain text, not just after rendering. Most renderers also accept all-`1.` source and auto-increment, but explicit numbering plays nicer with diff tools and grep.
Blank lines dropped
Empty and whitespace-only input lines are filtered out. That avoids emitting empty `- ` bullets when your paste has a trailing newline, and keeps numbered lists contiguous (`1. 2. 3.`) even if your source has paragraph breaks between items.
No content escaping
List-item text is emitted verbatim. Markdown renderers accept raw `&`, `<`, `>`, and most punctuation inside list items, so the tool does not transform them. If you want HTML-safe output, follow up with the convert-a-list-to-html tool.
Runs in your browser
The conversion is client-side JavaScript. Your list never leaves the tab - matters if you are pasting meeting notes, internal IDs, or anything else that should not round-trip to a third-party service.
Worked example
The blank line between Bananas and Cherries is dropped in the output.
Apples Bananas Cherries
- Apples - Bananas - Cherries
Settings reference
One option - Bullet style. Blank-line dropping and no-escape behavior are fixed.
| Setting | What it does | Effect on the sample |
|---|---|---|
| Bullet: `-` (dash) | Default CommonMark bullet; each line prefixed with `- ` | `- Apples` / `- Bananas` / `- Cherries` |
| Bullet: `*` (asterisk) | Alternative unordered bullet - semantically identical | `* Apples` / `* Bananas` / `* Cherries` |
| Bullet: `+` (plus) | Third legal unordered bullet; use only if your team standardises on it | `+ Apples` / `+ Bananas` / `+ Cherries` |
| Bullet: `1.` (numbered) | Ordered list; each line numbered sequentially starting at 1 | `1. Apples` / `2. Bananas` / `3. Cherries` |
| Blank lines (automatic) | Empty and whitespace-only input lines are skipped before emission | The blank line between `Bananas` and `Cherries` is dropped |