Free Tool · No signup

CSV to Markdown Table

Paste CSV (or a copied Excel / Google Sheets range) and get a clean, GitHub-flavored Markdown table. Handles quoted fields, semicolons, tabs, and pipes. Everything runs in your browser.

Auto-detects delimiterRFC 4180 quote handlingPer-column alignment

Start from a real CSV

Click any sample to load it. Then edit, add rows, or paste your own.

CSV input

Delimiter in use: comma (auto-detected) · 6 rows · 4 columns

Per-column alignment

Click a column to cycle left → center → right. Overrides the default alignment.

Markdown tablemarkdown
| Method | Endpoint      | Auth    | Description                     |
| :----- | :------------ | :------ | :------------------------------ |
| GET    | /v1/pages     | API key | List all pages in a project     |
| POST   | /v1/pages     | API key | Create a new page               |
| GET    | /v1/pages/:id | API key | Retrieve a single page          |
| PATCH  | /v1/pages/:id | API key | Update page content or metadata |
| DELETE | /v1/pages/:id | API key | Delete a page permanently       |

Output is GitHub-flavored Markdown — the same flavor that renders on GitLab, Bitbucket, npm, Reddit, Obsidian, and most static-site generators. Slack and Discord don't render this syntax; use the builder tool in Slack mode instead.

Dokly

Tables like these — live inside your docs

In Dokly's editor you drop in a table, type in the cells, and it's live on your docs site. No CSV juggling, no rebuild. Tables, callouts, and code blocks included.

Build your docs in Dokly →

How CSV → Markdown actually works

A Markdown table has three parts: a header row, a separator row of dashes, and one row of data per line. Pipes (|) divide the columns. Here's what the converter turns your CSV into:

| Method | Endpoint   | Auth    |
| :----- | :--------- | :------ |
| GET    | /v1/pages  | API key |
| POST   | /v1/pages  | API key |

Colons in the separator row control alignment: :--- is left, :---: is center, and ---: is right. The padding spaces are cosmetic — Markdown ignores them — but they keep the raw table readable in your source files.

Delimiter detection

Left on Auto, the tool looks at the first ~20 non-empty lines and picks whichever of ,, \t, ;, or | has the most consistent frequency. That handles the common cases: US-style CSV, Excel/Sheets copy-paste (tabs), European locales (semicolons), and pipe-delimited database dumps. Override the dropdown when your data is ambiguous — a description field full of commas can throw off detection on tab-separated data with only a couple of rows.

Quoted fields, escaped quotes, and inline newlines

The parser is RFC 4180-compliant, which is a slightly-boring way of saying: quote a field with double quotes and it can contain commas, semicolons, newlines, or anything else — the delimiter is only respected outside quotes. If you need a literal double quote inside a quoted field, escape it by doubling: "he said ""hi""". Inline newlines survive parsing and are converted to <br> in the Markdown output, since GitHub-flavored Markdown tables don't allow real line breaks inside cells.

Pipes in your data

A single unescaped | inside a cell would split the column and break the table. Every pipe is escaped as \| in the output so it renders as a literal pipe — safe to paste anywhere without hand-editing.

Privacy

Everything runs in your browser. Your CSV never touches a server — no upload, no round-trip, nothing stored. Open the Network tab in DevTools while you convert and you'll see zero requests.

Frequently asked questions

How do I convert CSV to a Markdown table?
Paste your CSV into the input box on the left. The converter treats the first row as the header, detects your delimiter automatically (comma, tab, semicolon, or pipe), and renders a GitHub-flavored Markdown table on the right that you can copy into any README, GitHub issue, docs page, or comment.
What CSV format does this support?
Standard CSV per RFC 4180 — comma-separated values with optional double-quoted fields, escaped quotes as "" inside a quoted field, and commas or newlines allowed inside quoted fields. Ragged rows (different column counts per row) are padded to the widest row so the Markdown table stays valid. Empty rows can be skipped with the toggle.
Can I paste from Excel or Google Sheets directly?
Yes. Select cells in Excel, Numbers, or Google Sheets and copy them — spreadsheet copies land on the clipboard as tab-separated values (TSV). The converter detects tabs automatically and treats them as the delimiter, so you get a Markdown table without exporting a file first.
How do I set column alignment in the output?
Use the alignment control above the output. "Left" is the Markdown default. "Center" wraps each column's separator in colons (:---:), and "Right" places a colon at the end (---:). You can also set alignment per column by clicking each column's alignment button in the preview above the output.
Does the tool handle quoted values with commas inside them?
Yes. The parser follows RFC 4180 — anything wrapped in double quotes is treated as a single field even if it contains commas, semicolons, or newlines. Escaped quotes inside a quoted field are written as two double quotes (""), and the parser normalizes them back to a single quote in the output.
Can I upload a .csv file instead of pasting?
Yes. Click "Upload CSV" and pick a file — everything runs in the browser, so the file is parsed locally and never uploaded to a server. Large files (multiple MB) may take a moment to render but there's no size limit imposed by the tool.
What if my CSV uses semicolons or pipes instead of commas?
European CSV exports often use semicolons (because commas are decimal separators in many locales), and some database exports use pipes. Switch the "Delimiter" dropdown from Auto to Semicolon, Pipe, or Tab — the parser applies the chosen delimiter instead of auto-detecting.
Do pipe characters (|) inside cells break the Markdown table?
They would if left alone, because pipes divide columns in Markdown table syntax. The converter escapes every pipe inside a cell as \| so it renders as a literal pipe character in GitHub, GitLab, Bitbucket, and every other Markdown renderer. Newlines inside cells are converted to <br> for the same reason.
Which Markdown flavor does this output?
GitHub Flavored Markdown (GFM), which is the same flavor GitLab, Bitbucket, npm, Reddit, Notion (partial), Obsidian, and most static site generators use. The output is a pipe table with a separator row of dashes and colons — copy it straight into any of those platforms with no modification.
Does Slack or Discord render Markdown tables?
No. Slack, Discord, and Microsoft Teams do not render pipe-table syntax — you'll see the raw pipes as text. For chat apps, use the Markdown Table Generator's Slack mode, which produces a space-aligned monospace block wrapped in a code fence so the columns line up visually.
Is my data uploaded anywhere?
No. All parsing and Markdown generation runs in your browser via JavaScript. Your CSV never touches a server, there's no upload, no logging, and nothing stored. You can verify this by opening browser DevTools' Network tab while converting — you won't see a single request.
How do I convert a Markdown table back to CSV?
That's the inverse operation and this tool doesn't do it — but the sister tool at /tools/markdown-table-generator lets you edit tables in a grid interface and copy either format. For programmatic Markdown-to-CSV, most parser libraries (remark, markdown-it) expose the table AST which you can serialize as CSV in a few lines.