Markdown table to CSV Converter
Paste a whole Markdown document and pull its tables out as CSV — every GitHub-style table is found, escaped pipes are unescaped, and you choose which table to convert.
Markdown table to CSV Converter
Runs in your browser — nothing you enter is uploaded or stored.
Scratchpad auto-saved
How it works — in four simple steps
No signup and nothing to install — it all runs in your browser.
Add your Markdown table
Paste it into the left box, press Open file, or drag a .md file onto it. Sample loads a realistic example.
Set the options
Adjust the options above the boxes — the output updates instantly as you change them.
Check the result
Read the status line: it reports rows, keys and any value that couldn't be represented in CSV.
Copy or download
Copy the CSV or download it as a .csv file. Nothing was uploaded at any point.
Paste the whole document — every table is detected and Table # picks which one to export.
Features
Pick any table
When the page has several tables, choose which one to convert by number.
Header row or not
Use the first row as field names, or treat every row as data with generated column1, column2… names.
Any output delimiter
Comma for most tools, semicolon for European Excel, tab or pipe when your data is full of commas.
Opens cleanly in Excel
Add a UTF-8 byte-order mark so Excel on Windows shows accents, ₹, € and emoji correctly instead of mojibake.
Quoting control
Quote only the fields that need it (RFC 4180 minimal) or every field for strict importers.
Private by design
Parsing and conversion run in your browser with JavaScript — your data is never uploaded, logged or stored.
About the Markdown table to CSV Converter
Tables in README files, wikis, changelogs and LLM answers are written in Markdown, but analysing them means getting them into a spreadsheet. This converter scans the text you paste for GitHub Flavored Markdown tables — a header row followed by a delimiter row like | --- | :-: | — so you can paste an entire document, not just the table.
Each table row is split on unescaped pipes; \| becomes a literal pipe, pipes inside `code spans` are left alone, leading and trailing pipes are optional, and cell whitespace is trimmed. Short rows are padded to the header width so every CSV row has the same number of fields. When the document contains several tables, the status line tells you how many were found and the Table # box picks one.
The CSV is written to RFC 4180, ready for Excel, Google Sheets or a database import. Markdown formatting inside cells (like **bold** or links) is kept as written, since it's part of the cell text.
Examples
A section of a README with prose and a table; the converter finds the table and ignores the rest.
## Supported formats
The CLI reads these input formats:
| Format | Extension | Streaming | Notes |
| :----- | :-------: | :-------: | ----- |
| CSV | `.csv` | yes | RFC 4180, auto delimiter |
| JSON Lines | `.jsonl` | yes | one value per line |
| Excel | `.xlsx` | no | first sheet unless `--sheet` |
| Pipe-separated | `.psv` | yes | use `--delim \|` |
See the docs for details.Format,Extension,Streaming,Notes
CSV,`.csv`,yes,"RFC 4180, auto delimiter"
JSON Lines,`.jsonl`,yes,one value per line
Excel,`.xlsx`,no,first sheet unless `--sheet`
Pipe-separated,`.psv`,yes,use `--delim |`This output was produced by the converter on this page with the default options — load it with the “README” preset above and change any option to see the effect.
How Markdown table maps to CSV
| In Markdown table | Becomes in CSV |
|---|---|
| a | b | header | CSV header row |
Delimiter row | --- | --: | | dropped (alignment isn't data) |
a \| b | a | b |
`x|y` | `x|y` (code span kept whole) |
| Missing trailing cells | empty fields |
| Several tables | pick one with Table # |
Things that trip people up
- No delimiter row, no table. A block of pipe-separated lines without the | --- | row isn't a GFM table and won't be detected.
- <br> in cells. Line breaks written as <br> stay as the text <br>; replace them in a spreadsheet if needed.
- Formatting markers. **bold**, _italic_ and [links](…) remain in the cell text. Use Markdown Stripper on the table first if you want plain text.
- Tables in code blocks. A table inside a ``` fenced block is still detected; delete the block if it's only an example.
Markdown table vs CSV at a glance
| Property | Markdown table | CSV |
|---|---|---|
| Specification | GitHub Flavored Markdown 0.29-gfm | RFC 4180 (2005) |
| File extension | .md | .csv |
| Media type | text/markdown (RFC 7763) | text/csv |
| Data types | text (inline Markdown allowed) | text only — every cell is a string |
| Comments | HTML comments | No |
| Nesting | None | None (flat rows) |
- Markdown table: A GFM table needs a header row and a delimiter row (| --- |); colons set alignment and a literal pipe inside a cell is written \|.
- CSV: Fields containing a comma, a double quote or a line break must be wrapped in double quotes, and a quote inside is written twice ("").