Markdown Table Generator

Paste CSV or TSV to get a Markdown table with its columns lined up, or paste a Markdown table to get CSV. The result is ready to copy into a README or a comment.

Free Runs in your browser Checked Tuesday, November 10, 2026

Convert

CSV or TSV whose first row is the header, or a Markdown table with its delimiter row.

Detect reads the first line. Choose a separator if the text is not read correctly.

Automatic puts a column of numbers on the right and leaves the other columns plain.

Pads each cell with spaces, so the raw Markdown reads as a grid. The rendered table looks the same.

Result

Data rows — The rows below the header.
Columns — The columns of the header.
Markdown table
CSV

This tool runs in your browser. What you enter is not sent to us.

How to use it

  1. Choose the Convert direction: CSV or TSV to a Markdown table, or a Markdown table to CSV.
  2. Paste the text into Text to convert. In CSV, the first row is the header of the table.
  3. Under Column alignment, keep Automatic, which puts numbers on the right, or choose one side for every column.
  4. Copy the Markdown table or the CSV, whichever the direction gives you.

The Markdown table syntax

A table in the GitHub Flavored Markdown tables extension has a header row, a delimiter row and body rows. The cells are set between pipes, and the delimiter row has one cell for each column, made of hyphens with an optional colon at either end. The GFM specification says the delimiter row must have as many cells as the header. A colon on the left aligns the column to the left, a colon on the right aligns it to the right, and colons on both sides centre it.

A body row with fewer cells than the header gets empty cells added. A body row with more cells has the extra cells ignored. A pipe inside a cell is written with a backslash in front of it, so the renderer keeps it in the cell.

| header | header |  then  | --- | ---: |  then  | body | body |

Column widths, numbers and escaping

Each column is as wide as its widest cell, with a minimum of three characters, so every line of a padded table has the same length. A column in which every filled cell is a number is aligned to the right, which makes the digits easy to compare. The width is counted in characters, so a wide letter may not line up exactly.

A table row must be one line, so a line break inside a CSV cell is written as a space. CSV reading follows the usual rules: a cell that holds a comma or a quotation mark is wrapped in quotation marks, and a quotation mark inside it is doubled.

  • Choose the separator yourself when Detect picks the wrong one; a Turkish spreadsheet often uses semicolons.
  • Turn off Line up the columns when the Markdown is long and the file size matters more than the layout of the raw text.

Worked example: a price list with a pipe in one name

The CSV has the header Product, Price, Stock and the rows Tea, 12.5, 40 and Coffee | beans, 85, 12. The cell Coffee | beans is 15 characters wide once its pipe is escaped, so the Product column is 15 wide, and Price and Stock are 5 wide, because their numbers are right-aligned.

The delimiter row is --------------- for Product, and ----: for Price and Stock. The row of Coffee reads Coffee \| beans, followed by 85 and 12 padded to the right. The table has 2 data rows and 3 columns.

Frequently asked questions

Why does a pipe in a cell need a backslash?

A pipe is the column separator in a Markdown table, so a bare pipe inside a cell would start a new column. A backslash in front of the pipe keeps it in the cell, and the rendered table shows a single pipe.

Do the spaces added for alignment change how the table looks?

No. Renderers ignore the spaces around the text of a cell, so the table looks the same. The padding only makes the raw Markdown easier to read in an editor.

Why are number columns aligned to the right?

Digits are easier to compare when their last places line up, so the automatic alignment puts a column of numbers on the right. A column with any text in it stays plain, on the left.

What happens to a line break inside a CSV cell?

A table row has to be on one line, so the tool writes a line break inside a cell as a space. The text of the cell stays the same, apart from that space.

Where do Markdown tables display correctly?

GitHub and most Markdown tools that follow the GFM tables extension display them. Some plain Markdown renderers have no table syntax at all, so check the place where you will publish the table.

Is the text I paste sent or saved anywhere?

No. The table and the CSV are made in your browser. Nothing is stored or sent to our server, so copy the result before you leave the page.

Sources

Figures and text last checked on Tuesday, November 10, 2026.

We use necessary cookies to run the site. With your consent, Google also uses advertising cookies to show personalised ads. If you reject them, you still see ads, but they are not personalised.