go-supertools
Developer & Data Tools

Markdown Table Generator

Turn CSV or spreadsheet data into a Markdown table, or turn a Markdown table into CSV, JSON or HTML.

Runs in your browser Your input never leaves your device.

Pipes in cells are escaped, line breaks become <br>, and short rows are filled with empty cells. If you paste a Markdown table, it is read back and can be re-aligned or exported as CSV, JSON or HTML. Runs in your browser.

Report a problem with this tool

About this tool

Paste data copied from Excel or Google Sheets (tab-separated), a CSV file (comma, semicolon or pipe separated, with quoted fields), or an existing Markdown table, and the tool writes a GitHub-flavoured Markdown table. The separator is detected for you. You can mark the first row as the header, align all columns left, center or right (or let numbers align right automatically), line the columns up so the source reads like a table, and escape characters such as * and _ if your cells should show them literally. Pipes inside cells are escaped, line breaks become <br>, and short rows are filled with empty cells. The same data can be shown as CSV, JSON (an array of objects keyed by the header) or an HTML table. The generated tables were checked against a real Markdown parser. Everything runs in your browser.

How to use it

  1. Paste CSV, spreadsheet cells or a Markdown table.
  2. Choose alignment and whether the first row is a header.
  3. Pick the Markdown, CSV, JSON or HTML tab for the format you need.
  4. Press Copy.

Common problems

My table does not render
Markdown needs the header row and the --- delimiter row. Leave the header option on, and make sure there is a blank line before the table in your document.
Pipes in my text break the columns
They are escaped automatically as \\|. If you pasted an existing table, check the original had them escaped.
Columns are not lined up
Turn on Line up the columns. Wide characters such as Chinese are counted as two columns, but fonts differ, so the source can look slightly off while the rendered table is correct.