Logo

MonoCalc

/

Bullet List Formatter

Text

Puts the chosen marker in front of every non-empty line, removing any bullet or number the line already had.

Load a sample:

Text to format

64 chars8 lines
Drop a text or Markdown file here or click to browse

.txt, .md, .markdown, .csv, .log, up to 2.00 MB, read in your browser

Shortcuts: Ctrl/Cmd + Enter formats now, Ctrl/Cmd + Shift + C copies the result.

Marker and numbering

Bullet marker

Numbering style

Numbering applies in Numbered mode only.

First index of an ordered list, 0 to 100,000.
Markers used per depth, separated by spaces. Up to five.
Used in Split mode to break one line into items.
How un-bulleted lines are put back together.
Markdown limits markers to -, * and + plus decimal numbers.

Cleanup and ordering

With nesting on, sorting stays inside each level.
Title Case keeps short joining words lowercase mid-item.
The comma variant is the pattern legal and spec lists use.
Bullets mode fixes some options
The dimmed controls are set by this mode. Switch modes to change them.

Statistics

Items formatted

6

from 8 input lines

Blanks removed

2

Duplicates removed

0

Markers stripped

3

Max depth

0

nesting levels

Words

9

Characters

60

43 without markers

Average item

7.17

characters

Longest item

12

“coffee beans”

Output size

60 B

from 64 B

Formatted list

About This Tool

Bullet List Formatter – Turn Any Text Into a Clean List

Lists arrive broken. Meeting notes come back with half the lines already bulleted, a transcript has none at all, a spreadsheet column pastes in as one long comma-separated string, and a colleague's draft mixes *, - and 1. in the same block. The bullet list formatter normalises all of it: paste the text, choose what you want out, and every line comes back with the same marker, the same indentation and the same punctuation.

Strip first, then add

The order of operations is what separates this from a find-and-replace. Each line is measured for indentation, then any marker already present — a hyphen, asterisk, plus, bullet dot, arrow, check mark, a decimal index such as 3. or 3), an alphabetic c. or a Roman iii. — is removed before the new marker is attached. That is why re-formatting an already formatted list never produces - - item. The detection is deliberately conservative: a marker must be followed by whitespace or the end of the line, so a sentence beginning A cat sat keeps its first word instead of losing it to an imagined A. index.

Five modes for five jobs

Bullets puts one marker in front of every non-empty line — the everyday case for README files, tickets and slide notes. Numbered produces an ordered list in one of seven styles: 1., 1), (1), a., A), i. or I., starting from any index you like. Nested reads the leading spaces or tabs as list depth and re-emits them with a consistent indent and a different marker per level, which is how Markdown draws a sub-list. Split by delimiter turns one comma, semicolon, pipe, tab or custom-delimited line into one bullet per value. And Remove bullets runs the whole thing backwards, stripping markers and indentation to recover plain prose, optionally joined back into a single delimited line.

The cleanup pipeline

Between stripping and re-marking, each item passes through the options you enable: trim leading and trailing spaces, collapse runs of internal whitespace, drop blank lines, remove duplicates with a case-sensitivity toggle, and sort A→Z, Z→A, numerically, by length or randomly. Case conversion offers lowercase, UPPERCASE, Sentence case, Title Case with a stop-word list that leaves a, the, of and friends lowercase in the middle of an item, and a capitalise-first-letter pass that leaves the rest of the text alone.

Sorting never separates a parent from a child
When nesting is preserved, the sort runs inside each level: sibling items are reordered against one another and the block of children that follows an item travels with it. A shuffled list uses a seeded generator, so the order stays put until you ask for a new shuffle.

Punctuation for specifications

Requirement documents, contracts and statutory lists follow a convention: every entry but the last two ends in a comma, the second-to-last ends in , and, and the final entry ends in a full stop. The end punctuation option applies exactly that pattern, with a semicolon variant for items that already contain commas, and a simpler mode that just puts a period on every line. Existing trailing punctuation is replaced rather than doubled.

Plain text, Markdown or HTML

The same list can leave in three shapes. Plain text keeps whatever marker you chose, including emoji. Markdown emits only what a renderer understands — -, *, + and decimal indexes — swapping anything else and saying so. HTML builds real <ul> and <ol> elements with child lists correctly nested inside their parent <li>, escaped and ready to paste into a CMS or an email template.

Hard wrapping needs room for the marker
If the wrap width is not wider than the indent plus the marker, there is nowhere for the text to go, so wrapping is skipped and a notice appears. Wrapped items get a hanging indent, which keeps continuation lines aligned under the first character rather than under the bullet.

Everything stays local

Formatting is string processing, so it runs in your browser with no upload step. Notes, unreleased requirements and client material are safe to paste, files you drop on the page are read locally, and the share link carries your settings only. Statistics — items formatted, blanks and duplicates removed, markers stripped, nesting depth, word and character counts, byte size and the longest item — update as you type.

Frequently Asked Questions

Is the Bullet List Formatter free?

Yes, Bullet List Formatter is totally free :)

Can I use the Bullet List Formatter offline?

Yes, you can install the webapp as PWA.

Is it safe to use Bullet List Formatter?

Yes, any data related to Bullet List Formatter only stored in your browser (if storage required). You can simply clear browser cache to clear all the stored data. We do not store any data on server.

How does the bullet list formatter work?

Your text runs through one pipeline: each line is split off, its indentation is measured, any bullet or number already on the line is removed, the remaining text is trimmed and optionally deduplicated, sorted and re-cased, and only then is the new marker attached. Because stripping happens before adding, re-formatting a list that already has markers produces a clean result instead of stacking a second bullet in front of the first.

Why does my list keep its indentation in nested mode?

Nested mode measures the leading spaces or tabs on every line, divides that width by the smallest indent it finds in the document, and treats the result as the depth of the item. That depth is then re-emitted at the indent size you choose, with a different marker per level, which is how Markdown renders a sub-list. Turn Preserve nesting off in any other mode and every item is flattened to a single level.

Which markers are safe to use in Markdown and HTML?

Markdown recognises only a hyphen, an asterisk or a plus for bullets and decimal numbers followed by a dot or bracket for ordered lists. Characters such as a bullet dot, an arrow, a check mark or an emoji are literal text to a Markdown renderer, so the Markdown output swaps them for a hyphen and tells you it did. Plain text keeps whatever marker you pick, and the HTML view emits real ul and ol elements where the browser draws the marker itself.

What does the comma-with-final-and punctuation mode do?

It formats items the way contracts, specifications and requirement lists are written: every entry but the last two ends in a comma, the second-to-last ends in a comma followed by the word and, and the final entry ends in a full stop. Choosing the semicolon variant does the same with semicolons, which is the convention when the items themselves contain commas. Existing trailing commas, semicolons and periods are replaced so the punctuation stays consistent.

Will sorting break a nested list?

No. When Preserve nesting is on, sorting is applied inside each level only: sibling items are reordered against one another and each child block travels with the parent it belongs to. If nesting is off, every item is a sibling, so the sort applies to the whole list at once. The shuffle option uses a seeded generator so the order stays stable until you press the reshuffle button.

Is my text sent anywhere?

No. Formatting is plain string processing that runs entirely in this browser tab, so meeting notes, unreleased requirements and client material never leave your machine. Files you drop on the page are read locally, and the share link carries your option settings only, never the text you pasted.