CSV to Markdown Table
Convert comma-, semicolon- or tab-separated data into a GitHub-Flavored Markdown table, with quoted-field handling and an optional header row.
You can also drop a .csv, .tsv or .txt file onto this box.
| name | role | city | | --- | --- | --- | | Ada, Jr. | Engineer | London | | Grace | Admiral | New York |
Turn CSV into a Markdown table
Paste comma-, semicolon-, or tab-separated data and instantly get a valid GitHub-flavored Markdown table you can drop into a README, an issue, a wiki page, or any Markdown document. The table is standard GFM table syntax, so it renders on GitHub and GitLab, in README files and issue comments, in Obsidian and Notion, and in most static-site generators and chat tools that support Markdown. Toggle First row is header to choose whether your top row becomes the table heading, pick the delimiter that matches your data, and copy the result with one click. The output updates live as you type. Going the other way, from a Markdown table back to CSV, is the job of the Markdown Table Generator: paste the table into its Markdown table to edit box, press Load into grid and set Output format to CSV. To edit a converted table cell by cell, load it into the Markdown Table Generator grid the same way.
Handles the tricky parts of CSV
The converter understands quoted fields, so a value like "Ada, Jr." keeps its comma instead of splitting into two columns, and doubled quotes ("") are unescaped back into a single quote. Pipe characters inside cells are escaped as \| so they never break the table layout, line breaks inside a quoted cell collapse to a space, and rows with missing values are padded so every row has the same number of columns.
Frequently asked questions
What if a value contains a comma or a quote?
Wrap the value in double quotes, exactly like standard CSV. A quoted field can contain the delimiter and line breaks, and you can include a literal double-quote by writing it twice (""). The converter unwraps all of this correctly.
Which delimiters are supported?
Comma, semicolon, and tab. Pick the one that matches your source data — semicolon is common in European spreadsheets, and tab-separated values (TSV) exported from Excel or Google Sheets work too.
What happens to Markdown characters or line breaks inside a cell?
Tick the escaping option and characters Markdown would read as formatting are escaped; tick the line-break option and a line break inside a quoted cell becomes a <br> instead of breaking the table.
Can I bold the first row or column, or number the rows?
Yes. Bold the first row wraps every heading cell in ** (or the first data row when First row is header is off), and Bold the first column does the same to the first cell of each row. Number the rows puts a column of row numbers in front of the table and numbers the data rows, and any column alignment you set moves along with its column. Each is off by default, and Align columns counts the added asterisks when it pads.
What is a Markdown table?
Rows of cells separated by | characters, with a row of dashes under the first to mark it as the heading — the table extension of GitHub-Flavored Markdown, which most Markdown renderers now read. A colon in the dash row sets a column's alignment. With First row is header off, the page writes an empty heading row, because the format needs one.
What happens to a row with more or fewer cells than the others?
Every row is padded with empty cells to the width of the widest row, so the table stays rectangular and no cell is cut off.
How big a file can it open?
Open file… reads a CSV, TSV or text file of up to 10 MB, and a file dropped onto the box is held to the same limit; a bigger one is refused with its size and the limit shown.
Can I edit the table in a grid, transpose it or remove duplicate rows first?
Not on this page, whose box is plain text, but the site has each of those as a tool of its own. The Markdown Table Generator, in the related tools, gives you a grid to edit the table in; CSV Transpose turns rows into columns and Remove Duplicate Lines drops repeated rows. Paste the result back here to convert it.