Free Markdown table extractor — upload or paste — no server

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.

Your data never leaves your browser
GFM pipe table parser
All tables auto-detected
Upload or paste
Always free
Markdown Table to CSV  100% client-side
Drop your Markdown file here
.md, .markdown, .mdx, .txt — all tables detected automatically
or paste Markdown directly
Paste Markdown containing a table
Select table to export
 Table exported

      
GFM Markdown table syntax

What CSVShift recognises — and what the separator row alignment markers mean.

Full GFM table with alignment markers
| Name  | Score | Grade | Status |
|:------|------:|:-----:|--------|
| Alice |    95 |   A   | active |
| Bob   |    82 |   B   | active |
| Carol |    78 |   C   | alumni |
Separator row rules
  • :--- — left aligned
  • ---: — right aligned
  • :---: — centre aligned
  • --- — default (left)
  • Must have at least one - per cell
Cell content rules
  • 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.

1
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.

2
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.

3
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.

Python — parse pipe table manually
import csv, re def md_table_to_csv(md_text, output_file): lines = md_text.strip().split('\n') # Filter out separator rows rows = [l for l in lines if re.match(r'^\|', l) and not re.match(r'^\|[\s:\-|]+\|', l)] with open(output_file, 'w', newline='') as f: writer = csv.writer(f) for row in rows: cells = [c.strip() for c in row.strip('|').split('|')] writer.writerow(cells) with open('README.md') as f: md_table_to_csv(f.read(), 'output.csv')
Simple approach for clean Markdown tables. Does not handle \| escaped pipes — use CSVShift for those.
Python — markdown + pandas (most robust)
import markdown, pandas as pd from io import StringIO with open('document.md') as f: md_text = f.read() # Convert Markdown to HTML, then extract tables with pandas html = markdown.markdown(md_text, extensions=['tables']) tables = pd.read_html(StringIO(html)) # Export first table: tables[0].to_csv('output.csv', index=False)
Requires: pip install markdown pandas lxml. This approach handles all GFM table features correctly by converting to HTML first.
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
Popular searches
markdown table to csv markdown to csv converter convert markdown table to csv markdown to csv online markdown to csv python extract table from markdown markdown table to spreadsheet github readme table to csv convert markdown to csv free parse markdown table md table to csv obsidian markdown to csv

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
Every GFM pipe table in the document is found — multi-table files get a selector with dimensions for each.
Escaped pipe handling
\| in cell values is correctly decoded as a literal pipe character — not treated as a column separator.
Separator row skipped
The |:---|---:| alignment row is correctly identified and skipped — it never appears as a data row in the CSV output.
Free, no conditions
No file size limit, no watermark, no account. Funded by display advertising only.
Frequently asked questions
Common questions about extracting Markdown tables to CSV.
How do I convert a Markdown table to CSV?
Paste your Markdown or upload a .md file. CSVShift detects all GFM pipe tables automatically. Select the table, choose your delimiter, and click Export to CSV. Download or copy to clipboard.
How do I extract data from a GitHub README table?
On GitHub, click the Raw button on the README to see the raw Markdown. Copy all the text (Ctrl+A, Ctrl+C), paste into CSVShift, and click Detect tables. All tables in the README are listed — select the one you need.
What Markdown table formats are supported?
CSVShift supports GFM (GitHub Flavored Markdown) pipe tables — the most widely used Markdown table format. Each row must start and end with |, 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?
Inline Markdown such as **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.
Is my data safe when converting Markdown online?
Yes. CSVShift parses Markdown entirely in your browser. Your file or pasted content is never uploaded to any server. Open the Network inspector — zero outbound data requests are made.