Format Markdown consistently, without touching your code
The Markdown Formatter tidies README files, documentation and notes so they follow one consistent style. It is built on Prettier 3.9’s Markdown engine (MIT) — the formatter many open-source projects already run on their docs — and adds the style choices people most often ask for: the bullet character, _italic_ or *italic*, **bold** or __bold__, ATX or underlined headings, aligned or compact tables, and prose wrapped at a fixed width or kept on one line per paragraph.
Code blocks are treated as untouchable: their contents come out byte for byte as they went in, and the tool proves it with a check after every run. YAML or TOML front matter is kept exactly, too. A before-and-after preview renders both versions so you can see that the document still looks the same.
Everything runs locally in your browser, so private notes and internal docs stay on your device.
How to use the Markdown Formatter
- Paste Markdown into the Markdown box, drop a .md file on it, or press Load .md file.
- Pick Prose wrap and Width: keep your line breaks, wrap paragraphs at 60–120 characters, or put each paragraph on one line.
- Choose the List marker, Emphasis, Bold, Headings and Tables styles.
- Press Format Markdown. Results then update as you type or change an option.
- Check the badges and the Before and After previews, review Changes, then copy or download the .md file.
Markdown Formatter features
Prettier’s Markdown printer
Consistent spacing between blocks, normalised list indentation, escaped special characters and GitHub Flavored Markdown tables.
Your style choices
Bullet -, * or +; underscore or asterisk emphasis; ** or __ bold; ATX or setext headings; aligned or compact tables.
Wrap prose your way
Preserve existing line breaks (best for clean diffs), hard-wrap at a width, or unwrap so each paragraph is one line.
Code kept byte-exact
Fenced and indented code blocks are never reformatted, and a check confirms every block is unchanged.
CJK and emoji-aware tables
Column alignment counts Chinese, Japanese and Korean characters and emoji as double width, so tables line up in a monospaced editor.
Safety checks
If a chosen style would change the document’s structure in a particular spot, Prettier’s version is kept and a badge tells you why.
Worked example
With Prose wrap set to “Wrap at width” and Width 60, list marker *, emphasis *italic*, bold __bold__, headings underlined and tables compact, this input:
# Title · Some _emphasis_ and **bold** text that is long enough to wrap at sixty columns, so the line breaks here. · - one · | Name | Qty |
becomes Title underlined with =====, the paragraph broken after “long enough to” (56 characters — adding “wrap” would make 61), bullets written as * one, emphasis as *emphasis*, bold as __bold__, and the table delimiter row as | :-- | --: | with no padding. The rendered HTML is identical before and after.
What Prettier changes, and what it never touches
| Element | Result |
|---|---|
| Blank lines | Exactly one blank line between blocks; trailing whitespace removed |
| Lists | Consistent marker and indentation; 1) becomes 1.; an adjacent separate list alternates - and * so it stays separate |
| Numbered lists | Kept as 1. 1. 1. if the list started that way, otherwise numbered 1. 2. 3. |
| Code fences | ~~~ fences become ``` (unless the code contains backticks); the contents are never changed |
| Front matter | Kept exactly as written |
| HTML blocks and inline HTML | Kept as written |
| Hard line breaks | Kept; two trailing spaces are preserved |
Tips
- For files kept in Git, Preserve line breaks gives the smallest diffs; hard-wrapping reflows whole paragraphs when one word changes.
- Underlined (setext) headings only exist for levels 1 and 2. Deeper headings always use
###. - To build a new table from a spreadsheet, use the Markdown Table Generator; to publish the result, convert it with the Markdown to HTML converter.
- Going the other way, the HTML to Markdown converter turns web pages into Markdown you can then tidy here.
Markdown Formatter FAQ
Is this Markdown formatter free and private?
Yes. It is free, needs no account, and runs in your browser. Your Markdown is never uploaded; only the Prettier and marked libraries are downloaded from a public CDN.
Will it change the code inside my code blocks?
No. Code inside fenced and indented blocks is left byte-for-byte as written, and the “code blocks unchanged” badge confirms it after every run. Only the fence characters may change from ~~~ to ```.
Is it the same as running Prettier on my Markdown?
With the default options (dash bullets, underscore emphasis, double-asterisk bold, headings kept, aligned tables), the output is exactly Prettier 3.9.10’s. Other choices are applied on top of Prettier’s output and checked against the document structure.
How do I align a Markdown table?
Paste the Markdown and keep Tables set to “Align columns”. Every cell is padded so the pipes line up, using double width for Chinese, Japanese, Korean and emoji characters.
Why did it keep a dash or underscore I asked it to change?
In rare cases a different marker would change the meaning — for example emphasis next to an asterisk would become bold. The formatter keeps Prettier’s version there and shows a badge naming the option.
Does it support GitHub Flavored Markdown?
Yes: tables, task lists, strikethrough and autolinks are understood and kept. Front matter in YAML (---) or TOML (+++) is kept exactly.