Skip to main content

Markdown Table Generator with Alignment

Build a Markdown table, edit its cells, and choose column alignment. Copy the output into a renderer that supports Markdown tables.

Markdown Table Generator workspace

Left :--- Center :---: Right ---:

Spreadsheet-Style Editor

Click any cell to edit. Add rows and columns with one button. Drag to reorder. The grid stays in sync with the Markdown source — no parse/serialize round-trips lose your data.

Per-Column Alignment

Left, center, or right per column — encoded via the colon markers GitHub, GitLab, Bitbucket, and every Markdown processor accept. Switch alignment without retyping the table.

Paste from Anywhere

Copy a range from Excel, Google Sheets, Numbers, or a CSV file — we auto-detect tab / comma / pipe / semicolon delimiters and import the rows directly. No copy-paste-and-re-edit loop.

100% Client-Side

Internal product roadmaps, financial breakdowns, customer data tables — every cell stays on your device. We render the Markdown in your browser, no network round-trip.

Markdown Table Generator: Build GFM Tables Without Typing Pipes

Build a Markdown table, edit its cells, and choose column alignment. Copy the output into a renderer that supports Markdown tables. Pipe tables are an extension to basic Markdown. Preview the result in the destination renderer, especially when cells contain pipes, line breaks, or inline formatting. For accessible published tables, review the rendered headers and table structure as well as the source.

How to use the Markdown table generator

  1. Edit the grid directly, or click Paste from Spreadsheet and paste a copied range from Excel, Google Sheets, or a CSV file.
  2. Add or remove columns and rows with the toolbar buttons — the grid stays rectangular, so a new column adds an empty cell to every row.
  3. Click the alignment control above each column to cycle left → center → right; it rewrites the delimiter-row colon markers for you.
  4. Pick an output style: Pretty pads columns for readable source, Compact uses single-space padding for the smallest byte count.
  5. Press Copy to send the GFM source to your clipboard, then paste it into a README, pull request, issue, or docs page.

What is GFM table syntax and how does it work?

Markdown tables are not part of core Markdown. They are a GitHub-flavoured Markdown extension defined in section 4.10 of the GFM spec. A table has three parts: a header row, a delimiter row, and zero or more body rows. Cells are separated by pipes (|), and a leading and trailing pipe is recommended for clarity. The delimiter row sets alignment: per the spec, it "consists of cells whose only content are hyphens (-), and optionally, a leading or trailing colon (:), or both."

| Column 1 | Column 2 | Column 3 |
|:---------|:--------:|---------:|
| left     |  center  |    right |
| a        |    b     |        c |

Two spec rules trip people up. First, the header row must match the delimiter row in the number of cells — if it does not, "a table will not be recognized" and the whole block renders as plain text. Second, only inline content is allowed: per the spec, "block-level elements cannot be inserted in a table." That means no lists, headings, or fenced code blocks inside a cell — just **bold**, `code`, links, and <br> line breaks.

Worked examples: input → output

Right-aligned number column · pretty style

| Item   | Price |
|:-------|------:|
| Coffee |  3.50 |
| Bagel  |  2.25 |

Centered status column · compact style

| Task | Status |
| --- | :---: |
| Build | done |
| Ship | wip |

Edge case · a literal pipe inside a cell

Typing a | b in a cell would split the column. This tool escapes it to a \| b on output, so the cell stays intact. Type the pipe normally — do not pre-escape it yourself, or you will get a double backslash a \\| b.

Alignment marker reference

Alignment lives entirely in the delimiter row. The number of dashes is cosmetic — the spec requires only one or more hyphens per cell — what matters is where the colons sit.

AlignmentDelimiter markerColon placementBest for
Left:---Leading colon (or no colon)Labels, names, descriptions
Center:---:Leading and trailing colonStatus, checkmarks, badges
Right---:Trailing colonNumbers, prices, totals

Markdown table vs HTML table vs CSV

FormatBest forLimitations
Markdown tableREADMEs, PR descriptions, issue templates, Notion docsNo row/col spans, no styling, rectangular only
HTML <table>Complex layouts, spans, styling, accessibility-critical docsVerbose, breaks plain-text readability
CSV / TSVBulk data, importable to spreadsheets, machine-to-machineNot human-readable inline, requires a renderer

Two paste quirks worth knowing

When you paste, the delimiter detector samples only the first 200 characters and picks the most frequent of tab, comma, pipe, or semicolon — tab wins ties first, then comma. So a CSV whose first two columns are short but whose later rows contain many commas can still misread if those commas fall outside the sample. Fix: copy a clean range, or export to a single consistent delimiter before pasting.

The escape order also matters. Cells are escaped backslash-first (\\\), then pipe (|\|), then newlines to <br>. That ordering is why you should never pre-escape pipes yourself — the tool would double the backslash. In pretty mode every column is padded to at least three characters so the delimiter row always keeps room for its colon markers, even for one-letter headers.

Last updated: September 15, 2026 · Runs 100% in your browser — no uploads, tool input is not sent to Toolk.

Frequently asked questions

How is column alignment encoded in the output?

Through colons in the delimiter row: :--- for left, :---: for center, and ---: for right. Clicking the alignment control above a column rewrites those markers for you, so nobody has to hand-count dashes to change how a column renders.

Can a cell contain a line break?

Not across physical source lines — GFM cells must live on one line each. This generator accepts multi-line cell input and converts every internal newline to an HTML <br> tag, which renders the visual break while keeping the table syntactically valid.

Why did my pasted spreadsheet come through mangled?

Three usual causes: the delimiter was misdetected (check CSV versus TSV selection), the source contained merged cells that Markdown’s strictly rectangular grid cannot express, or a cell held an unescaped pipe. Export with one clean delimiter and unmerge cells first; pipe escaping is handled automatically.

Do my table contents get uploaded anywhere?

No. Editing, paste parsing, and generation all run locally in your browser tab, and Toolk’s page analytics do not receive your table data — relevant when the rows contain internal metrics or client names. It keeps working offline once loaded.

Does GFM support merged cells or nested lists inside tables?

No. The spec keeps tables strictly rectangular and forbids block-level elements in cells, so there is no spanning of any kind. Bold, links, and inline code do work inside cells; anything more complex calls for embedding a raw HTML table instead.

Need a different tool?

Browse all 103 browser-based tools (103 currently marked free), or tell us what useful utility we should build next.

Browse all tools