Skip to content

Convert

Markdown Table to CSV

Markdown Table to CSV

Beta

Paste a GitHub-flavored Markdown pipe table, or a whole README with several, and download clean CSV. Escaped pipes, alignment rows and code fences are handled, and the same page turns a CSV back into a Markdown table.

Use via API
  • Free, no sign-up
  • REST + MCP
  • Updated
  • Reviewed by Olgun Ozoktas

On this page, the Markdown is parsed and the CSV is built in your browser. Paste the raw Markdown or drop a .md file; the page does not fetch README links. Inline Markdown in a cell, such as **bold** or a [link](url), is kept as written.

Markdown
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
CSV

The CSV will appear here..

How to Convert a Markdown Table to CSV

  1. Add the Markdown

    Paste the Markdown into the Markdown panel, upload a .md file, or drop it on the panel. The tables are found as soon as the text arrives.
  2. Pick the table

    If the text holds more than one table, pick one in Table. Each entry gives its number, the line it starts on, and its rows and columns.
  3. Set the separator and header

    Choose the separator your spreadsheet expects and whether the header row goes into the CSV. Turn on Excel BOM if Excel on Windows shows accented letters wrongly.
  4. Read the notes and download

    Read the notes. They name any line whose cells did not match the header. Then download the CSV or copy it.
  5. Go back to Markdown

    To go the other way, switch the direction to CSV to Markdown. The CSV you just made moves into the input, so you can check the round trip.

Common Use Cases

README tables to a spreadsheet

Pull a comparison matrix out of a GitHub README into Google Sheets or Excel.

API docs to test data

Turn an API parameter table from the docs into a CSV a test or a script can read.

Wiki tables you need to edit

Move a pricing or feature table from a wiki page into a spreadsheet to edit it.

CSV into a pull request

Convert a spreadsheet export into a Markdown table for a pull request, an issue or a changelog.

Check a hand-written table

Check that a hand-written Markdown table has the same number of cells on every row.

Why Use Markdown Table to CSV?

Comparison matrices, API parameter lists and pricing tables live in READMEs, wikis and pull request comments as Markdown pipe tables. A spreadsheet cannot read them: retyping the cells is slow, replacing pipes with commas breaks on an escaped \| or a comma inside a cell, and pandoc or pandas is a lot of setup for one table. This page reads GitHub-flavored Markdown the way GitHub renders it. It finds every table in the text, skips tables inside code fences, drops the alignment row, turns \| into a literal pipe and writes RFC 4180 CSV. When the table has to go back into a pull request, the same page turns a CSV into a Markdown table.

A GitHub-flavored Markdown table is a header row, a delimiter row and data rows, with pipes between the cells. The delimiter row holds one run of dashes per column, optionally with colons that set the alignment: :--- for left, :---: for center, ---: for right. The pipes at the start and end of a line are optional. The table ends at a blank line or at the start of another block, such as a heading, a quote or a code fence.

This page follows those rules. It scans the whole text, ignores lines inside ``` and ~~~ fences, and lists every table it finds by number, with the line it starts on and its size. The table you pick is written as CSV: the delimiter row is dropped, cells are trimmed, \| becomes a literal pipe, and other backslashes stay as typed. A row with fewer cells than the header is padded with empty cells and extra cells are dropped, which is what GitHub shows; both are reported by line number. Quoting follows RFC 4180, so a cell that holds a comma or a quote is quoted. The parser is run() from the markdown_table_to_csv module, so the page and the API read a table the same way.

The reverse direction reads a CSV with an RFC 4180 reader, so a quoted cell may hold the separator, and writes a GitHub-flavored table with the alignment you choose. A pipe in a cell is escaped as \|, and a line break inside a cell becomes a space, because a Markdown table row is one line. For a JSON array, JSON to Markdown Table does the same job. HTML tables are a different format: use HTML Table to JSON for those.

How it compares

Replacing pipes with commas in an editor works until a cell holds a comma or an escaped pipe. pandoc and pandas read Markdown tables reliably, if they are installed and you remember the options. The Markdown Table Generator builds tables but does not read them back. This page is the paste-and-download step: every table in a README is listed, code fences are skipped, and the CSV is quoted for a spreadsheet.

Markdown Table Tips

  • A pipe inside a cell must be written as \| in Markdown. The CSV gets a plain |. A pipe inside backticks still splits the cell, as it does on GitHub, so escape it there too.
  • A table is a header row followed by a delimiter row such as | --- | :---: | ---: | with the same number of cells. Without that row, the lines are a paragraph, not a table.
  • Tables inside ``` or ~~~ code fences are skipped, so a SQL snippet or a table shown as an example is not picked up.
  • A row with fewer cells than the header gets empty cells. Extra cells are dropped, because GitHub drops them when it renders the table; the notes name those lines.
  • Inline Markdown stays as written: **Team** stays **Team** and a link stays [text](url). Remove the markup in the spreadsheet if you only want the text.

Frequently Asked Questions

How do I convert a Markdown table to CSV?

Paste the Markdown into the Markdown panel or drop the .md file on it, and the CSV appears in the CSV panel. If the text holds several tables, pick one in the Table menu. Then download the CSV or copy it. The alignment row is dropped and each data row becomes one CSV line.

Which Markdown tables can it read?

It reads GitHub-flavored Markdown pipe tables: a header row, a delimiter row of dashes with one cell per column, and data rows. The outer pipes are optional and the alignment colons are recognized. It does not read HTML tables, pandoc grid tables or lists; for an HTML table, use HTML Table to JSON.

What if my README has several tables?

Every table is listed in the Table menu with its number, the line it starts on, and its rows and columns, and the first one is converted until you pick another. Tables inside ``` or ~~~ code fences are ignored, so an example inside a code block is not mistaken for data.

How are escaped pipes and inline Markdown handled?

An escaped pipe, \|, becomes a plain | in the CSV cell. A pipe inside backticks still splits the cell, as it does on GitHub, unless it is escaped. Other Markdown in a cell, such as **bold**, `code` or a [link](url), is kept exactly as written.

What happens when a row has more or fewer cells than the header?

A short row gets empty cells for the missing columns. Extra cells are dropped, which is what GitHub does when it renders the table. Both are listed in the notes with their line numbers, so you can fix the source if the extra cells mattered.

Can I convert CSV to a Markdown table on this page?

Yes. Switch the direction to CSV to Markdown, paste the CSV, and copy or download the table. The separator is detected or set by hand, quoted cells may hold commas, pipes are escaped as \|, and you choose left, center or right alignment. The table is capped at 10,000 rows and 200 columns. For a JSON array, JSON to Markdown Table builds the table instead.

Can it read a README from a GitHub link?

No. The page does not fetch URLs. Open the README on GitHub, choose Raw or copy the Markdown source, and paste it here, or download the .md file and drop it on the Markdown panel.

Is my Markdown uploaded?

On this page, no. The tables are found and the CSV is built in your browser, and the page sends no request with your text; you can check that in the network panel. The REST API and MCP tool are a separate path: a call sends the input you include to FindUtils over HTTPS, where it is processed and the result returned. FindUtils does not store that input, and logs the request without its content.

Is there an API for Markdown table to CSV?

Yes. The markdown_table_to_csv tool on the FindUtils REST API and MCP server takes the Markdown text, the table number, the separator and the header choice, and returns the CSV with the parsed rows and a list of every table found. It parses tables with the same module as this page.

Will the CSV open correctly in Excel or Google Sheets?

Yes. Google Sheets and Numbers read the UTF-8 file as it is. Excel on Windows can show accented letters wrongly in a plain UTF-8 CSV; turn on Excel BOM before you download. If your Excel expects semicolons, choose the semicolon separator.

How long can the Markdown be?

Up to 5,000,000 characters, which is far more than a README. When the output has more than 2,000 lines, the panel shows the first 200, and Copy and Download still use the whole CSV.

Rate This Tool

0/1000

Get Weekly Tools

Suggest a Tool