NV ToolkitFormat · Validate · Convert

Formatters

Markdown Formatter

Canonical CommonMark style — lists, headings, emphasis and tables normalized in one pass.

In short

Format Markdown online: normalize headings, lists, emphasis and tables to canonical CommonMark style with the prettier engine. Free, in-browser.

By NaveenKumar T · Updated

  • Industry-standard formatting
  • Exact error line & column
  • 2/3/4-space or tab indent

Runs entirely in your browser — nothing you paste or open here is uploaded, logged, or stored.How we handle data →

Example

Markdown Formatter: input and output

A release-notes section from a README: setext headings, an unaligned table, bullets with uneven spacing and mixed emphasis markers, and a `1. 1. 1.` checklist.

Input · markdown
Release notes
=============

Version | Date | Notes
---|---|---
2.1.0 | 2026-08-14 | Adds `--dry-run`; deprecates `--force`
2.0.0|2026-06-02|Breaking: config moved to `acme.config.ts`

Upgrading
---------
*   Install with __npm__ or *pnpm*
*  Run `acme migrate`   and review the diff
* Commit the generated  lockfile

1. Back up `acme.config.js`
1. Run the codemod
1. Delete the old file
Output · markdown
# Release notes

| Version | Date       | Notes                                      |
| ------- | ---------- | ------------------------------------------ |
| 2.1.0   | 2026-08-14 | Adds `--dry-run`; deprecates `--force`     |
| 2.0.0   | 2026-06-02 | Breaking: config moved to `acme.config.ts` |

## Upgrading

- Install with **npm** or _pnpm_
- Run `acme migrate` and review the diff
- Commit the generated lockfile

1. Back up `acme.config.js`
1. Run the codemod
1. Delete the old file

The table's pipes are padded so every column lines up, the setext underlines become `#`/`##` headings, `__npm__` and `*pnpm*` are rewritten as `**npm**` and `_pnpm_`, and the `1. 1. 1.` numbering is kept as written.

Learn more

Formatting Markdown, properly

Markdown has a dozen ways to write the same thing — *, -, + bullets; setext vs ATX headings; inconsistent emphasis markers. Prettier's Markdown engine normalizes them all to one canonical form: dash bullets, # headings, consistent emphasis, aligned tables — the same conventions major OSS repos enforce.

Format READMEs and docs before committing and your Markdown diffs shrink to actual content changes. It also rescues exported Markdown (from Notion, wikis, converters) whose generators had... opinions.

Help

Frequently asked questions

Everything you need to know about the Markdown Formatter.

01How do I format Markdown code here?

Paste your Markdown (or load a file/URL) and press Format. Prettier's Markdown engine normalizes headings, bullets, emphasis markers and tables to one canonical CommonMark style, leaving fenced code block contents untouched.

02Will my embedded code blocks get reformatted too?

Fenced code blocks are preserved verbatim — formatting your prose must never touch your code samples. The fence syntax itself is normalized (consistent backticks, language tags kept), but contents pass through byte-for-byte.

03How are ordered lists renumbered, and what happens when bullet markers change mid-list?

Prettier keeps your first number and looks at the second item: if it is `1`, the whole list is printed `1. 1. 1.` (the merge-friendly style); otherwise items are renumbered sequentially from the first number, so a list starting at `3` becomes `3. 4. 5.`. Bullets are always printed as `-`, but CommonMark starts a new list whenever the marker character changes, so a list that mixes `*`, `+` and `-` comes out as separate lists, alternated between `-` and `*` so they stay separate.

Keep working

Related tools