CSV to Markdown table converter

Paste CSV, TSV, cells copied from Excel or Google Sheets, or a JSON array. Get a clean, aligned Markdown table.

From spreadsheet to Markdown in one paste

When you copy a range in Excel, Google Sheets, LibreOffice Calc or Apple Numbers, the clipboard holds the cells as tab-separated text. Paste that here and the tab delimiter is detected automatically. The same works for .csv exports from databases, analytics tools and bank statements.

How parsing works

  • Delimiters are detected from the first rows (comma, semicolon, tab or pipe). European CSV files often use semicolons because the comma is the decimal separator.
  • Quoted values follow RFC 4180: "Smith, Jane" stays one cell and "" inside quotes is a literal quote.
  • Line breaks inside quoted cells become <br>, since Markdown table rows must be one line.
  • Pipes in values are escaped as \|.
  • Number columns (including currency and percentages) are right-aligned with ---: so the digits line up.

JSON to Markdown table

Paste an array of objects like [{"name":"Ana","role":"Dev"}]. Keys from every object are merged into the header, missing values become empty cells, and nested values are shown as compact JSON. If the JSON is an object that contains an array (as many APIs return, e.g. {"data":[…]}), the first array is used.

Want to edit the result cell by cell? Import it into the table generator.

Questions people ask

How do I convert CSV to a Markdown table?
Paste the CSV or open the .csv file. The first row becomes the table header and the Markdown table appears on the right, ready to copy or download.
How do I convert an Excel sheet to Markdown?
Select the cells in Excel, Google Sheets or Numbers, copy, and paste them here. Spreadsheets copy as tab-separated text, which is detected automatically.
Can I convert JSON to a Markdown table?
Yes. Choose JSON as the input and paste an array of objects. Each key becomes a column; nested objects are shown as JSON text.
What about commas inside values?
Quoted CSV values such as "Smith, Jane" are parsed correctly (RFC 4180), and pipes inside values are escaped so they don’t break the table.
My data has no header row. What do I do?
Untick “First row is header” and the columns get generic names you can edit afterwards.

Related tools