Markdown Table Formatter: Align & Normalize Pipe Table Spacing
What is the Markdown Table Formatter tool? It rebuilds raw Markdown pipe-table text with consistent column widths. It reads a header row, a separator row, and optional data rows, then uses the separator row's alignment markers when it creates the formatted output.
Format a table
- Paste a Markdown pipe table into the input area. Include a header row and a separator row; data rows are optional.
- Use Upload or the Drop file area to load a file as text. The first selected or dropped file is read into the input.
- Change an option if needed. Formatting runs automatically when the input or an option changes; there is no separate Format or Submit control.
- Read the result in the read-only output area. Leading and trailing blank input lines are removed from the final result, and errors appear in the error box.
- Use Copy to copy the result or Download to save it.
Adjust the formatting controls
- Minimum column width sets the smallest padded width for each column. The formatter clamps the effective value to at least
3. Values are clamped to the displayed range of3through40. - Use compact separator row (---) instead of full-width dashes makes each separator cell three characters wide. Depending on alignment, the output can use
---,:--,--:, or:-:.
How rows and columns are handled
The output column count is the maximum cell count across the header, separator, and data rows. Rows with fewer cells receive empty trailing cells, and the header is padded too when later rows contain more cells. Extra cells expand the output.
The separator row is rebuilt from its detected left, right, center, or unspecified alignment markers. Other than checking the separator row, the formatter does not validate header or data-row Markdown syntax.
Validation and current limitations
- At least two non-empty table lines are required: a header and a separator.
- The second row must contain separator cells matching patterns such as
---,:---,---:, or:---:. A missing or invalid separator produces an error. - An escaped pipe,
\|, is preserved as an escaped pipe in the formatted output and remains inside its original cell. - The page does not define an accepted file-type allowlist or a file-size/input-length limit.
- The local implementation rebuilds raw text but does not verify behavior in GitHub, GitLab, or other Markdown renderers.
Copy, download, and output details
The output footer shows line and character counts for the rebuilt result. Copy copies the output, while Download downloads it. Download saves the formatted table as markdown-table.md.
Frequently Asked Questions (FAQs)
What happens if my table has no separator row?
The tool requires at least two non-empty lines, and the second line must contain separator cells such as ---, :---, ---:, or :---:. If it is missing or invalid, the error box reports the problem.
What happens to rows with fewer columns than the header?
Missing trailing cells are treated as empty. The output uses the maximum cell count across the header, separator, and data rows, so later rows can also expand the header.
Does this tool change how the table renders on GitHub or elsewhere?
The local implementation only rebuilds raw table text. It does not verify rendering in GitHub, GitLab, or other Markdown renderers.
Can I use escaped pipe characters inside a cell?
The parser recognizes an escaped pipe as content inside a cell and re-escapes it in the formatted output, so the pipe remains part of that cell.
Is my data sent anywhere?
Parsing and formatting are implemented in the page's browser-side JavaScript. The shared upload handler reads the selected file as text in the browser.