Tools · Markdown

# Markdown table to CSV

A pipe table carries its own proof — the |---| line — so it opens as rows with no question asked, and the rows write out as CSV, JSON or NDJSON.

no signup · runs entirely in your browser · ⌘V works anywhere on this page

Markdown table to CSV — A pipe table opens straight as rows — the |---| line is the proof, no question asked; Convert, CSV writes them out. · 10 s

## What you get

- Reads the sample as 6 rows and writes them as CSV — 6 rows under the table's own header
- Keeps an escaped pipe as the character it is, and quotes a cell that then holds a comma
- Reads a table pasted from a README, a ticket or a chat, leading and trailing pipes or not
- Converts the same rows to a JSON array, NDJSON, YAML or XML from the app

## What it will not do

- Render Markdown, or read anything but the table — text around it is left alone.
- Keep alignment. A CSV has no column alignment to carry, so the colons in the rule line are ignored.
- Send your text anywhere. The page is static and the engine runs in this tab — open the network panel and watch it stay empty.

## What the table gives

| sku | qty | |---|---| | A | 1 |sku,qty A,1

The signature and the header proof in one: the row above it is the header, so no question is asked.

| a | b | |---|---| | x \| y | 1 |a,b x | y,1

Read and ignored — :---: says nothing a CSV can carry.

## The sample

What the first sample opens — a real file, not an illustration written for this page.

```
| @timestamp | level | service | message | duration_ms |
|---|---|---|---|---|
| 2026-04-21T14:32:08Z | INFO | checkout-api | stripe.charge.completed | 88 |
| 2026-04-21T14:32:07Z | WARN | checkout-api | retry.scheduled attempt=2 | 400 |
| 2026-04-21T14:32:07Z | ERROR | checkout-api | stripe.webhook.signature_invalid | 12 |
| 2026-04-21T14:32:07Z | INFO | checkout-api | cart.items.priced items=2 | 51 |
| 2026-04-21T14:32:06Z | INFO | auth-svc | session.token.issued ttl=3600 | 9 |
| 2026-04-21T14:32:05Z | ERROR | inventory | inventory.hold.failed sku=BRD-OAK-002 | 130 |
```

## in VS Code

A Markdown table is found by its rule line, not its file type; Read as rows, then Convert, then CSV writes it into a new editor.

## Questions

### Why is there no question about the header?

Because the table answers it: the |---| line under the first row is a Markdown table’s signature, and the row above it is the header by definition.

### What about a pipe inside a cell?

Written in Markdown as \|, it is read as a pipe and written into the CSV cell as one, quoted if the cell needs it.

### Can I get JSON instead of CSV?

Yes — open the rows in the app and Convert offers JSON, NDJSON, YAML and XML beside CSV.

## Behind this page

## Try it on the file that broke your afternoon.

free while in alpha · no signup

---

Canonical: https://unstringify.com/tools/markdown-table-to-csv
