📋

Markdown Table Generator

Create Markdown tables easily with our visual editor. Design tables with headers, alignment, and copy formatted code.

A Markdown table generator turns a grid you fill in into the pipe-and-dash syntax Markdown expects. Set Rows and Columns, type into the cells, and the Markdown Output box rewrites itself on every keystroke. The three-by-three grid it opens with produces | Header 1 | Header 2 | Header 3 |, a separator row of | --- | --- | --- |, and three rows of empty cells - the exact shape a renderer needs.

Alignment:
Delimiter:
👁️ HTML Preview
Table Size
Total Cells
Output Size

Embed this tool on your website

× px

                        

💡 Integration Tip

Copy the embed code and paste it into your website HTML. The responsive version adapts to all screen sizes automatically.

2.0
3 ratings

About Markdown Table Generator

You edit a real grid rather than the text. Rows and Columns have plus and minus buttons, capped at 50 rows and 20 columns, with size presets from 2x2 to 2x8 beside them; every header and cell is its own input, and typing in any of them regenerates the output immediately. Add Row and Add Column extend the grid, and a header you leave empty is written as Col 1, Col 2 and so on rather than left blank, because a Markdown table needs a header row.

Alignment is set per column by clicking through left, centre and right, and it lands in the separator row exactly as the syntax requires: --- for left, :---: for centre and ---: for right. The HTML Preview beside the output shows the same table rendered, with the alignment applied, so you can check the result without pasting it anywhere.

Two characters need care inside cells, and the generator handles both. A pipe would end the cell early, so it is escaped as a backslash-pipe; a line break would end the row, so it is replaced with a <br> tag, which is HTML rather than Markdown but is the standard way to get two lines into one Markdown cell. Everything else you type is passed through as-is, including asterisks and backticks, so inline formatting works.

The CSV import takes pasted data with a comma, tab, semicolon or pipe delimiter and a First Row Is Header switch, which is the fast path from a spreadsheet. What the tool cannot do is the thing Markdown itself cannot do: merged cells. There is no rowspan or colspan in the table syntax of any common Markdown flavour, so a table that needs them has to be written as raw HTML instead.

Use Cases

A developer documenting an API fills in a four-column grid of parameter, type, required and description, sets the third column to centre, and pastes the result straight into a README.
Someone moving a small spreadsheet into a wiki copies the rows, pastes them into CSV Input with the comma delimiter and First Row Is Header ticked, and imports rather than retyping.
A writer preparing release notes uses the 2x8 preset for a long two-column list of change and ticket number, which is faster than counting pipes by hand.
Someone comparing three options builds a 3x4 grid, right-aligns the price column so the numbers line up, and checks the HTML preview before committing the file.
A student writing lab notes types values with pipes in them, such as a shell command, and relies on the generator escaping each one so the table does not fall apart.

How to use

1

Set the grid size with the minus and plus buttons beside Rows and Columns, or press one of the presets from 2x2 to 2x8.

2

Type the column names into the header inputs; an empty one is written as Col 1, Col 2 and so on.

3

Fill in the cells; the Markdown Output box regenerates on every keystroke.

4

Click a column's alignment button to cycle left, centre and right, which changes the dashes in the separator row.

5

Check the HTML Preview beside the output to see the table rendered with that alignment.

6

Copy the Markdown Output, or paste delimited data into CSV Input and press Import CSV to build the grid from a spreadsheet instead.

Pro Tips

  • The header cells arrive pre-filled with Header 1, Header 2 and Header 3, so overwrite them rather than starting from blank. Clear one entirely and it falls back to Col 1 in the output, because Markdown requires a header row.
  • Click a column's alignment button to cycle left, centre, right. It changes the separator row to ---, :---: or ---:, which is the only place alignment lives in Markdown - the cells themselves are unchanged.
  • Paste a pipe character into a cell and it is escaped for you as \|. That is what keeps a shell command or a regular expression from splitting the row into extra columns.
  • A line break inside a cell becomes a <br> tag, not a real newline, because a newline would end the table row. That is HTML inside Markdown, which most renderers accept but a strict one may not.
  • Use the CSV import with the tab delimiter to bring in a block copied from a spreadsheet, where cells arrive tab-separated. Comma import fails on any cell that itself contains a comma.

Troubleshooting

Problem:

The table renders as plain text with visible pipes.

Solution:

Either the renderer does not support tables, or the separator row is missing or has the wrong number of columns. Copy the whole block including the dashes line, and check the target supports GitHub Flavored Markdown; the original Markdown specification has no tables.

Problem:

A cell containing a pipe split into two columns.

Solution:

That happens when the Markdown is written by hand. This generator escapes every pipe you type as a backslash-pipe, so build the row here rather than editing the output text, and the character survives into the rendered cell.

Problem:

My CSV import put everything in one column.

Solution:

The delimiter selector does not match the file. Spreadsheet copies are tab-separated, exports are usually comma or semicolon separated depending on locale. Pick the matching delimiter and import again; the preview grid shows immediately whether it split correctly.

Problem:

A line break inside a cell disappeared or shows as <br>.

Solution:

The generator replaces a newline with a <br> tag because a real newline would end the table row. A renderer that allows inline HTML shows the break; one that strips HTML shows the tag as text. In the second case, split the content across two rows instead.

Frequently Asked Questions

Yes, in most flavours. Tables are not part of the original Markdown specification but were added by GitHub Flavored Markdown and are now supported by GitHub, GitLab, most static site generators and many note apps. The syntax is a header row, a separator row of dashes, and one line per data row, with cells between pipes.

Write the header cells between pipes, then a separator line of at least three dashes per column, then one line per row: | Name | Role |, then | --- | --- |, then | Ada | Engineer |. Every row needs the same number of cells. This page builds that text for you so the pipe count always matches.

The grid opens as a three-column table, so the output starts as | Header 1 | Header 2 | Header 3 | on the first line, | --- | --- | --- | on the second, then a line of empty cells per row. Overwrite the header inputs and fill the cells and the same structure appears in the Markdown Output box with your text in it.

With colons in the separator row. :--- is left, :---: is centre and ---: is right; a plain --- means the renderer's default, which is left. Click a column's alignment button here and the separator row updates, which is where alignment is expressed - the data cells never carry it.

No. Neither GitHub Flavored Markdown nor any other widely used flavour has rowspan or colspan, so there is no way to merge cells in table syntax. If you truly need merged cells, write the table as raw HTML with a table element, which most Markdown renderers pass through.

Not in standard Markdown table syntax: the header row and the separator row underneath it are what identify the block as a table. The usual workaround is to leave the header cells empty, which most renderers show as a thin blank strip. This page substitutes Col 1, Col 2 for a cleared header, so remove those after copying if you want that look.

Copy the visible table out of the browser into a spreadsheet, then paste from there into CSV Input with the tab delimiter, which is what a spreadsheet copy produces. This page converts a grid or delimited text into Markdown; it does not parse HTML directly.

Usually yes for inline tags, which is why a line break inside a cell can be written as <br>, and that is exactly what this generator emits. Block-level HTML inside a cell is far less reliable. If a renderer strips HTML for safety, the tag will show as text instead of breaking the line.

This page allows up to 50 rows and 20 columns, and shows the cell count as you go. Markdown itself sets no limit, but a wide table is painful to read in a diff and on a phone; past a few dozen rows, a linked CSV file is usually kinder to the reader than a table in the document.

It marks the line above as the header and carries the alignment. The number of dashes does not matter as long as there is at least one per column - three is the convention - and the pipes have to line up with the header's column count. Get that row wrong and the whole block renders as plain text.

Popular Tools

No more tools to show
Explore All Tools
FreeWebTools AI
Powered by free AI models · Full chat →