Skip to content

Markdown Table Formatter

Paste a messy Markdown table and get it back with aligned pipes, even padding and consistent delimiter rows.

Row
1
🟢 Active
2
🟡 In Review
3
🟢 Active
4
🔴 Blocked
Output
| Task ID | Feature & Architecture Summary                                 | Lead Developer | Allocated Budget | Release Status |
| :------ | :------------------------------------------------------------- | :------------- | :--------------- | :------------- |
| DEV-101 | Implement OAuth 2.0 PKCE client flow with refresh rotation     | Alice Cooper   | $4,500.00        | 🟢 Active      |
| DEV-102 | Deploy serverless edge cache layer across 45 worldwide regions | Bob Dylan      | $12,850.50       | 🟡 In Review   |
| DEV-103 | Tune SQL indices and optimize user session storage lookup      | Charlie Parker | $3,200.00        | 🟢 Active      |
| DEV-104 | Upgrade microservices cluster to Go 1.22 runtime on Kubernetes | David Bowie    | $18,900.00       | 🔴 Blocked     |
4 rows × 5 columns
Rendered Preview
Task IDFeature & Architecture SummaryLead DeveloperAllocated BudgetRelease Status
DEV-101Implement OAuth 2.0 PKCE client flow with refresh rotationAlice Cooper$4,500.00🟢 Active
DEV-102Deploy serverless edge cache layer across 45 worldwide regionsBob Dylan$12,850.50🟡 In Review
DEV-103Tune SQL indices and optimize user session storage lookupCharlie Parker$3,200.00🟢 Active
DEV-104Upgrade microservices cluster to Go 1.22 runtime on KubernetesDavid Bowie$18,900.00🔴 Blocked

How to format a Markdown table in 3 steps

  1. Paste the messy table

    Press Ctrl+V (⌘V) anywhere on the page outside a text box, or open the Markdown tab and paste over the source. The output on the right is already re-padded.

  2. Adjust style and alignment

    Pick Padded, Compact or No outer pipes under the output. Click Auto-align to right-align numbers, or open Options to wrap long cells with <br> and change header case.

  3. Copy the formatted table

    Click Copy Markdown and paste it back into your file. For a chat message or terminal, use Options › Copy Unicode Box and send it in a code block.

Example

Before: hand-edited, uneven spacing
|ID|Task|Owner|Budget|Status|
|-|-|-|-|-|
|DEV-101|OAuth PKCE flow|Alice|$4,500.00|🟢 Active|
| DEV-102 |Edge cache|Bob| $12,850.50|🟡 Review|
|DEV-103|Index tuning |Charlie|$3,200.00|🔴 Blocked|
After: formatted, Auto-align applied
| ID      | Task            | Owner   |     Budget | Status     |
| :------ | :-------------- | :------ | ---------: | :--------- |
| DEV-101 | OAuth PKCE flow | Alice   |  $4,500.00 | 🟢 Active  |
| DEV-102 | Edge cache      | Bob     | $12,850.50 | 🟡 Review  |
| DEV-103 | Index tuning    | Charlie |  $3,200.00 | 🔴 Blocked |

Options explained

Format
Rewrites the table in the chosen style and applies the wrap setting from Options. The output is padded even without it; use Format after changing wrap or style.
Auto-align
Sets every column’s alignment from its content: columns that are at least 75% numbers, currency or percentages go right; columns of yes/no, true/false, ✓/✕ and similar status values go center; everything else goes left.
Spacing (under the output)
How the Markdown source is laid out. All three render identically; Padded is easiest to read and review in diffs.Padded (default) · Compact · No outer pipes
Output style (Options)
The same three Markdown styles plus two plain-text box styles for terminals and chat. Box styles are not Markdown tables and will not render as tables on GitHub.Padded · No outer pipes · Compact · Unicode box (┌─┬─┐) · ASCII box (+---+)
Copy Unicode Box
Copies the table drawn with box characters, for Discord, Slack, terminals or code comments. Paste it inside a ``` code block so the columns stay aligned.
Line breaks as <br>
Wraps long cell text at word boundaries with <br>, so very wide columns become narrower when rendered. Applied when you click Format or pick a style.Wrap width: 30, 40 (default), 50 or 60 characters
Emoji Monospace Width
Counts emoji and CJK characters as two columns wide when padding, so pipes line up in editors that draw them double-width. Turn it off if your editor shows them single-width.On by default
Header case
Changes all header names at once. Title Case capitalizes only all-lowercase words (don’t becomes Don’t; iPhone and SKU are kept) and leaves small words such as of and the lowercase in the middle.Title Case · UPPERCASE · lowercase
Column alignment pills
Click a column’s pill to cycle its alignment.Left (:---) → Center (:---:) → Right (---:) → Default (---)
Flavor
GFM for GitHub, GitLab, Obsidian and most tools; reStructuredText and Org-mode write those formats’ table syntax instead.GFM (default) · MultiMarkdown · Pandoc Pipe · reStructuredText · Org-mode
Browse all 36 tools

About this tool

A table typed by hand or edited a few times ends up with uneven spacing and pipes that no longer line up, which makes the source hard to read and every later edit a noisy diff. Paste it here and the formatter pads each column to its widest cell, stretches the delimiter row to match, makes outer pipes consistent and escapes stray pipes. It counts emoji and CJK characters as double width so columns stay straight in a monospace editor.

  • Aligns pipes and pads every column to the widest cell
  • Counts emoji and CJK characters as double width
  • Padded, compact or no-outer-pipes Markdown styles
  • Unicode and ASCII box tables for chat and terminals
  • Auto-align numbers right and status columns center
  • Wraps long cells with <br> at 30–60 characters
  • Normalizes delimiter rows and escapes stray pipes

Technical details

What formatting changes, and what it never changes

Formatting only changes whitespace and the length of the delimiter dashes. Renderers ignore the padding, so a formatted table looks exactly the same on GitHub; the benefit is a source that is readable in an editor and produces clean line-by-line diffs.

  • Column width: Each column is padded to its widest cell (minimum three characters), and the delimiter row is stretched to match.
  • Alignment colons: :---, :---: and ---: are kept, and padding follows them, so right-aligned columns are right-padded in the source too.
  • Ragged rows: Missing cells are added as empty cells, and outer pipes are made consistent on every line.
  • Pipes: Unescaped | inside cell text is written as \| so it cannot split the cell.
  • Content: Cell text is not changed unless you turn on <br> wrapping or change header case.

Common problems and fixes

Pipes still look crooked in my editor

Cause: The editor uses a proportional font, or it draws emoji at a different width than two columns.

Fix: Switch to a monospace font. If emoji are the problem, toggle Emoji Monospace Width and copy again.

One column is huge

Cause: A long URL or sentence sets the width for the whole column.

Fix: Use a Markdown link with short text ([docs](https://…)), or turn on Line breaks as <br> to wrap long text.

The box table shows as plain text on GitHub

Cause: Unicode and ASCII box styles are plain text, not Markdown table syntax.

Fix: Use Padded, Compact or No outer pipes for anything that should render as a table; keep box styles for code blocks and chat.

Platform compatibility

PlatformSupportNotes
GitHub, GitLab, Obsidian SupportedPadded, Compact and No outer pipes all render the same table.
Prettier SupportedPrettier also aligns Markdown tables, so the Padded output and Prettier can maintain the same file.
markdownlint SupportedConsistent outer pipes and column counts satisfy MD055 and MD056.

Frequently asked questions

How do I format a Markdown table?

Paste the table on this page (Ctrl+V or ⌘V outside a text box) and copy the output: every column is padded to its widest cell and the pipes line up. You can also paste into the Markdown tab. Nothing about the rendered table changes, only the source layout.

Does formatting change how the table looks on GitHub?

No. Renderers ignore the extra spaces, so a padded, compact or no-outer-pipes table renders identically. Formatting is for people reading the raw file and for cleaner diffs in pull requests.

Why are my pipes still crooked when the table has emoji?

Most monospace editors draw emoji and CJK characters two columns wide, so a plain character count misaligns them. The formatter counts them as double width by default; if your editor draws them single-width, turn off Emoji Monospace Width in Options.

How do I right-align numbers in a Markdown table?

Click Auto-align: columns that are mostly numbers, currency or percentages become right-aligned (---:). To set one column yourself, click its pill under Options or use the ▾ menu on the column header in the grid.

What is the “no outer pipes” style?

It omits the leading and trailing | on each line (Name | Role instead of | Name | Role |). GFM accepts both forms and renders them the same; some teams prefer it because the lines are shorter.

How do I post a table in Discord or Slack?

Chat messages do not render Markdown tables. Use Options › Copy Unicode Box and paste it between ``` fences so it shows as an aligned text table in a code block. Slack’s Block Kit has a table block, but it is only available to apps through the API, not in typed messages.

How do I shorten a very wide column?

Turn on Line breaks as <br> in Options and pick a wrap width; long text is split at word boundaries with <br>, which GitHub renders as line breaks inside the cell. For long URLs, use link text: [docs](https://example.com/very/long/path).

Is my table sent anywhere?

No. Formatting runs in your browser and the table is not uploaded. A draft is kept in this browser’s local storage so a reload does not lose it.