Convert Markdown to CSV
Extract any table
from any .md file.
Free Markdown table to CSV converter. Upload a .md file or paste Markdown directly — all GFM pipe tables detected automatically with row counts. Handles escaped pipes, alignment rows and multi-table documents. Runs in your browser.
GFM Markdown table syntax
What CSVShift recognises — and what the separator row alignment markers mean.
| Name | Score | Grade | Status | |:------|------:|:-----:|--------| | Alice | 95 | A | active | | Bob | 82 | B | active | | Carol | 78 | C | alumni |
:---— left aligned---:— right aligned:---:— centre aligned---— default (left)- Must have at least one
-per cell
- Leading and trailing
|are required - Use
\|to include a literal pipe in a cell - Cell content is trimmed of whitespace
- Inline Markdown (
**bold**) is kept as-is in CSV - Empty cells become empty CSV fields
How Markdown to CSV conversion works
Line-by-line detection of GFM pipe tables — no regex soup.
Detect tables line by line
CSVShift scans each line of the Markdown document. A pipe table is detected when a line starting and ending with | is followed by a separator row — a line where every cell contains only -, : and spaces. All subsequent pipe lines are collected as data rows until a non-pipe line is encountered.
Split cells with escape handling
Each row is split on |, but \| inside cells is first replaced with a placeholder to prevent accidental splitting. After splitting, the placeholder is restored as a literal pipe character in the cell value. Leading and trailing whitespace is trimmed from each cell.
Select table and export
All detected tables are listed in a selector with their dimensions. Select the table you need and click Export — the cells are re-serialised as RFC 4180 CSV with correct quoting for any values that contain the delimiter, double quotes or newlines.
Markdown table to CSV in Python
Code examples for scripting workflows.
When do you need Markdown to CSV?
Common situations where extracting data from a Markdown table is necessary.
GitHub README data extraction
Package comparison tables, benchmark results and feature matrices in GitHub READMEs are often the canonical source of structured data. Extracting these to CSV enables further analysis, import into a database or reuse in other documents.
Documentation to spreadsheet
API reference tables, configuration option lists and migration guides in Markdown docs often contain structured data that is easier to analyse or maintain in a spreadsheet. Converting to CSV produces a version that can be edited in Excel and converted back.
Notion and Obsidian data export
Notion and Obsidian export pages as Markdown. Tables in these exports can be extracted as CSV using CSVShift — useful for migrating data from a knowledge base to a structured database or analytics tool.
Changelog and release notes
Changelogs in Markdown format often contain structured tables of breaking changes, new features and deprecated APIs. Extracting these to CSV enables systematic analysis of what changed across versions.
Related CSV tools
Markdown parsed
in your browser. No server.
CSVShift detects GFM pipe tables by scanning line-by-line — no server, no external parser. The escape handling (\| → literal pipe) uses a placeholder swap pattern that correctly handles pipes that appear inside cell content without accidentally splitting the row.
All tables detected
Escaped pipe handling
Separator row skipped
Free, no conditions
How do I convert a Markdown table to CSV?
How do I extract data from a GitHub README table?
What Markdown table formats are supported?
|, and the header must be followed by a separator row of --- cells. Alignment markers (:---, ---:, :---:) are recognised and the separator row is skipped in the CSV output.What happens to inline Markdown formatting in cells?
**bold**, `code` and [link](url) inside cells is kept as-is in the CSV output — the raw Markdown syntax is exported. If you want clean text, post-process the CSV to strip the Markdown formatting.