Skip to content

Markdown List Normalizer

Normalize Markdown bullets — convert * and + to -

One-click cleanup that unifies your unordered list markers without touching task checkboxes, ordered lists, or fenced code blocks. Runs entirely in your browser — no upload, no signup.

5 line(s) normalized

Fenced code blocks are skipped. Task markers (- [ ], - [x]) are preserved exactly. Nested indentation is kept so list hierarchy is unchanged.

How to use the Markdown list normalizer

  1. Paste your Markdown into the left pane, or click Open .md to load a file.
  2. The right pane updates instantly — every * and + bullet outside fenced code becomes -.
  3. The counter shows how many lines changed, so you can sanity-check the diff before copying.
  4. Copy output to overwrite the original, or paste it into your editor and review the diff in your IDE.

Why consistency matters

Markdown specifications allow three unordered list markers — -, *, and + — and renderers treat them identically. The trouble starts when a single document mixes them:

  • Diffs look noisier than they are. A reviewer can't tell at a glance whether the change is "fixed wording" or "marker churn".
  • Auto-formatters fight each other. Prettier prefers -, some Markdown linters prefer *. Each pass through a formatter can churn the file again.
  • AI tools introduce drift. LLMs default to whichever marker showed up earlier in their training data — you'll get one style this week and another next week.

Picking - and enforcing it removes a recurring source of trivial diffs.

What the normalizer preserves

ElementBehavior
* itemBecomes - item
+ itemBecomes - item
* nestedBecomes - nested (indent kept)
- [ ] taskUntouched
- [x] doneUntouched
1. orderedUntouched
Lines inside \``` fencesUntouched
Trailing whitespace on linesPreserved verbatim

A common workflow

  1. Run the normalizer on your repo's README.
  2. Pipe the result through the Markdown Formatter for whitespace and heading fixes.
  3. Compare the before / after with the Markdown Diff tool to confirm only style changed.
  4. Optionally run the GFM Compliance Checklist for a final sanity pass.

That sequence turns a years-of-drift document into a clean baseline in under a minute.

When NOT to normalize

  • Documents pinned to a different style guide. If your repo's lint rule is bullet: "*", run the formatter both ways instead.
  • Live mid-edit. If a teammate has the document open in another tab, coordinate the bulk style change so their unsaved edits don't conflict on save.

Privacy & data

The transform runs entirely inside your browser. Nothing is uploaded, logged, or stored.

Frequently asked questions

What does the list normalizer do?
It converts every unordered list marker (`*` and `+`) to a hyphen (`-`) so a document uses one consistent bullet style. Nested lists keep their indentation. Fenced code blocks are skipped so embedded snippets stay exactly as written.
Why pick `-` over `*` or `+`?
All three are valid Markdown unordered list markers, but `-` is the convention used by Prettier, the official GitHub style guide, most static-site generators, and the majority of public READMEs. Picking one style across your project removes a flavor of noise from code reviews.
Will it touch ordered lists or task list checkboxes?
No. Ordered lists (`1.`, `2.`) are untouched. Task list items keep their checkboxes — `- [ ]` and `- [x]` are preserved exactly so the GitHub task UI keeps working.
How does it handle fenced code?
Anything inside triple-backtick fences is left as-is. That keeps shell prompts, diff output, and snippets that intentionally use `*` markers (e.g. shell wildcards or globs) from being mangled.
Is my Markdown uploaded?
No. The replacement is a small string transform that runs entirely in your browser. We don't upload, log, or store any content.
Can I integrate this in CI?
Yes — the underlying transform is in the project source (`normalizeMarkdownListMarkers` in `lib/markdown-toolkit.ts`). For a CI workflow you can also use Prettier with the `prose-wrap: preserve` and default list marker settings to get the same result.