Markdown Formatter
Tidy messy Markdown: one list marker, aligned table columns, code blocks left untouched
Your data stays with you. Conversion happens inside the browser; nothing is sent to a server.
Did this tool do the job?
Thanks, your feedback came through.
How it works
A README written by several people, or a notes file kept for years, drifts: some items start with *, others with -, table columns no longer line up and headings run straight into paragraphs. Paste the text into the left box. On the right, every list item starts with the marker you chose, sub-items are indented by two spaces, numbers written as 1) become 1., and tables are aligned column by column. For example, a |Command|Description| row and the rows below it are padded to the widest cell so the columns form straight lines, while alignment markers such as :- and -: are kept. One blank line is placed between headings, paragraphs, lists and code blocks. The inside of fenced code blocks (opened with ```) is never touched, and your paragraph line breaks stay where they are. The result line gives the line count and the number of list items and tables, or tells you the text was already tidy.
This tool is also known as markdown formatter, markdown beautifier, format markdown online, markdown table formatter, align markdown table, readme formatter.
What is Markdown?
Markdown is a way to format plain text with a few signs: # makes a heading, * or - a list item, ** bold and ` code. README files on GitHub, many notes apps and documentation sites use it. It is designed to be readable as raw text too, which is why a tidy source, with aligned tables and one kind of list marker, matters when a team works on the same file.
What is Markdown table (GFM)?
Markdown tables come from GitHub Flavored Markdown (GFM): cells are separated by |, the --- row under the header defines the table, and :--, --: and :-: say whether a column is aligned left, right or centre. The rendered table does not depend on how wide the raw cells are, but if the columns are not aligned in the source, the table is very hard to read or edit.
What is the difference between formatting Markdown and converting it to HTML?
Formatting keeps Markdown as Markdown and only tidies the raw text: one list marker, aligned tables, consistent blank lines. You paste the result back into the same README. Converting to HTML turns Markdown into web page code: a # heading becomes an <h1> tag, a list item becomes <li>, and the result goes into a web page or an email. This page does the first; for the second, use the Markdown to HTML tool.
Does formatting change how the Markdown looks when rendered?
No. GitHub, GitLab or a notes app ignore extra spaces and which list marker you used when they turn Markdown into HTML, so the tidied text renders the same page. What changes is how readable the raw text is: you can read the table as plain text, edits from different people look the same, and version-control diffs get smaller.
One thing to know: under the Markdown rules, consecutive lines that start with different markers (* and +) are two separate lists. The tool keeps them separate and writes the second list with the other marker. If you want one list, write all its items with the same marker.
Dash or asterisk?
Both are valid and render the same. GitHub's own docs, Prettier and most open-source projects use the dash (-); the asterisk (*) is common in older documents and some notes apps. Pick whichever your project already uses most; what matters is that the file is consistent.
When two separate lists follow each other, the tool writes the second with the other marker so Markdown does not merge them. Numbered lists use a number and a full stop (1.); the 1) form is converted too.
- GitHub README, open-source project → - dash
- Matching older docs or your team's habit → * asterisk
- Numbered steps → 1. 2. 3. (the tool fixes them)
Frequently asked questions
How do I align a Markdown table?
Paste the table into the left box on this page. Each column is padded to its widest cell, the separator row is widened to match, and alignment markers (:--, --:, :-:) are kept. Cell contents are not changed.
Does the tool change what is inside my code blocks?
No. Every character inside a block opened with ``` or ~~~ stays as it is; only a blank line is added before and after the block.
Will my paragraph lines be joined or wrapped?
No. Line breaks inside paragraphs are kept; the tool does not wrap long lines or join short ones.
Is my text sent to a server?
No. Formatting runs entirely in your browser; the text you paste never leaves this page and is not stored anywhere.