How to use it
- Choose the Convert direction: CSV or TSV to a Markdown table, or a Markdown table to CSV.
- Paste the text into Text to convert. In CSV, the first row is the header of the table.
- Under Column alignment, keep Automatic, which puts numbers on the right, or choose one side for every column.
- 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
- GitHub Flavored Markdown Spec, tables extension
- IETF: RFC 4180, Common Format and MIME Type for CSV Files
Figures and text last checked on Tuesday, November 10, 2026.