Format Markdown
Paste Markdown or drop a .md file and get it back tidied — consistent headings, list markers, spacing, and aligned tables.
Your file never leaves your device.
0 / 2,000,000 characters
Drop a .md file here, or
Formatting…
Formatted Markdown ready
Download .mdCode blocks, YAML front matter, and raw HTML are preserved exactly as written. Emphasis markers and line wrapping are left alone on purpose — see the list of what gets normalized below.
About Format Markdown
What it normalizes
Line endings become LF. Tabs in indentation become spaces. Trailing whitespace is stripped — except a deliberate two-space line break, which is kept. Underlined (setext) headings become # headings, closing hashes are dropped, and every heading gets exactly one blank line above and below. Bullets all become -; ordered lists are renumbered in sequence. Thematic breaks become ---. Runs of blank lines collapse to one. Table pipes are padded so the columns line up, keeping any alignment colons. The file ends with exactly one newline.
What it deliberately leaves alone
Code blocks — fenced and indented — are copied through byte for byte, so a bullet or heading inside an example is never rewritten. YAML front matter is preserved exactly, since it is YAML rather than Markdown. Emphasis markers are not touched: swapping _italic_ for *italic* would corrupt snake_case names and URLs. Lines are never re-wrapped, because reflowing text makes every later diff unreadable. And a table containing a row with more cells than its header is left untouched rather than truncated — nothing is ever dropped.
How it works
Formatting runs as a documented pass over your document's lines rather than a parse-and-reprint round trip, because reprinting loses front matter, footnotes, and reference-style links. Everything happens locally in your browser: the file is read on your own device and the tidied Markdown is offered for download. Nothing is uploaded, stored, or sent to a server.
Format without uploading — your file never leaves your device
This tool runs entirely in your browser using JavaScript. Your Markdown is never uploaded to a server, never stored, and never leaves your device — so drafts, notes, and documents stay private.
Frequently asked questions
- Does this change my content?
- No — only formatting. Words, links, code, and structure stay exactly as you wrote them; what changes is whitespace, heading and bullet syntax, list numbering, and table padding. Running it twice gives the same result as running it once.
- Will it touch my code blocks?
- No. Fenced blocks (``` and ~~~) and indented code blocks are copied through unchanged, including their tabs and bullets. A `* item` line inside an example stays a `* item`.
- Is my YAML front matter safe?
- Yes. A leading --- block is preserved exactly as written. It is YAML, not Markdown, so reformatting it could change its meaning.
- Why doesn't it normalize _italic_ to *italic*?
- Because underscores are load-bearing elsewhere — inside snake_case identifiers and in URLs. A blanket swap corrupts prose about code, so emphasis markers are left as you wrote them.
- Why doesn't it re-wrap long lines?
- Line wrapping is a personal choice, and reflowing paragraphs makes every subsequent git diff unreadable. The tool preserves your line structure.
- What's the difference between this and Lint Markdown?
- Format Markdown fixes style automatically and hands you the cleaned file. Lint Markdown reports problems by line number — including ones no tool can safely fix, like a broken link with no URL. Lint to understand, format to apply.
- Does this upload my file?
- No. Formatting runs entirely in your browser with JavaScript — your Markdown is never sent to a server and never leaves your device. You can verify it: open your browser's Network tab and format a file — you'll see no upload request.
More Markdown tools, coming soon
Markdown to PDF, table of contents, front matter editing, and more — all free and all in your browser.
Back to all tools →