DevTools Logo

Markdown Table Generator

Markdown Table Generator

Easily create and format Markdown tables.

Table Editor

Edit values to generate markdown.

Col 1
Col 2
Col 3

    Examples

    Filling out a 3×3 team table

    Input
    Headers: Name | Role | Years
    Row 1: Alice | Engineer | 5
    Row 2: Bob | Designer | 3
    Output
    | Name | Role | Years |
    | --- | --- | --- |
    | Alice | Engineer | 5 |
    | Bob | Designer | 3 |

    The first row is rendered as the header; the rest are body rows. The column count of every line matches, so the table renders on any CommonMark renderer.

    Empty cells get a placeholder label

    Input
    Row 0: (empty) | Language | Tier
    Row 1: (empty) | TypeScript | 1
    Output
    | Header | Language | Tier |
    | --- | --- | --- |
    | Cell | TypeScript | 1 |

    If you leave a cell blank, the generator emits 'Header' in row 0 and 'Cell' elsewhere — the table remains syntactically valid Markdown and renders correctly.

    Growing the grid on the fly

    Input
    Start with 2 rows × 2 cols, click Add Column once, fill: H1 | H2 | H3; R1C1 | R1C2 | R1C3
    Output
    | H1 | H2 | H3 |
    | --- | --- | --- |
    | R1C1 | R1C2 | R1C3 |

    Adding a column appends an empty cell to every existing row, so the table stays rectangular. Existing data is preserved on resize.

    About this tool

    Markdown tables are written as pipe-delimited rows with a separator line of dashes after the header. They render on GitHub, GitLab, Bitbucket, Reddit, Discord, Obsidian, Notion and most static-site generators, but the syntax is fiddly: cell counts have to match the column count, the separator row must use at least three dashes per cell, and a single missing pipe quietly breaks the whole table.

    This generator replaces the manual syntax with a small editor: pick how many rows and columns you want, type values into the cells, and watch the Markdown table build itself on the right. Add rows or columns at any time, and reset the editor back to a 3×3 blank grid whenever you want to start over.

    Empty cells are auto-filled with placeholder labels (Header for the first row, Cell for the rest) so the output is always syntactically valid. Everything runs in your browser — the data you type never leaves the page.

    How to use

    1. Pick the size you need

      Start from the default 3×3 grid or change the row/column counts before you start typing. You can also resize after typing — existing data is preserved.

    2. Fill in the cells

      Type into each input. The first row is treated as the header and rendered in bold in the preview; the rest are body rows.

    3. Add or reset rows and columns

      Use Add Row / Add Column to grow the table, or Reset to clear everything back to a blank 3×3 grid.

    4. Copy the Markdown

      Click the copy button next to the output panel to copy the generated table to your clipboard, ready to paste into a README or a forum post.

    Use cases

    Documentation tables in a README

    Sketch the columns you want, type the rows, and paste the result into your Markdown file. The output uses standard pipe syntax that renders on GitHub, GitLab, Bitbucket, and every major static-site generator.

    Comparison tables in blog posts and docs

    Make a 'Library A vs Library B vs Library C' table with consistent columns for license, size, and feature flags. The generator keeps the column count in sync across every row.

    Spec / RFC summaries

    List parameter, type, default and description columns once and add rows for every option — no manual pipe-counting.

    Test matrices and CI reports

    Generate a row-per-test, column-per-environment table for inclusion in a GitHub Actions summary or a Jira ticket.

    Output format

    PartWhat it looks like
    Header row| Name | Role | Years |
    Separator| --- | --- | --- |
    Body row| Alice | Engineer | 5 |

    Empty cells are filled with the placeholder 'Header' (top row) or 'Cell' (body rows).

    Common mistakes

    Mistake:Trying to type the pipes and dashes by hand and getting the column count wrong.

    Fix:Use the editor — the generator emits one pipe per column boundary and keeps every row aligned.

    Mistake:Pasting cells that contain pipes or newlines.

    Fix:The generator escapes nothing; a literal | inside a cell will break the column count, and a newline will start a new row. Replace | with the HTML entity | or rephrase.

    Mistake:Assuming alignment markers work without enabling them.

    Fix:CommonMark supports :--- / ---: / :---: in the separator for alignment, but this generator always emits plain ---. For alignment, edit the separator line by hand after copying.

    Mistake:Leaving an entire row blank.

    Fix:An empty row renders as | | | | |, which shows up as a visible blank line on most renderers. Delete the row with Reset or fill in placeholder values.

    Frequently asked questions

    References & standards