Tools · Markdown

# CSV to Markdown table

The separator and the header row are read from the text, asked about only when the text is unclear, and the rows write out as a pipe table a README renders.

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

CSV to a Markdown table — A Kibana export opens as rows; Convert, Markdown writes a pipe table for a README, the header from the file. · 10 s

## What you get

- Writes the Kibana export's 6 rows as a 8-line pipe table — the header, the rule, one row each
- Detects the separator — comma, semicolon, tab, pipe — and whether the first row is a header, and shows the guess before writing
- Escapes a pipe inside a cell and writes a line break as <br>, so the table survives a renderer
- Reads quoted cells, embedded commas and doubled quotes the way RFC 4180 writes them

## What it will not do

- Write alignment colons. The rule line is plain --- under every column.
- Render the Markdown. It writes the table text; your README renders it.
- 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 CSV gives

sku,qty A,1 B,2| sku | qty | | --- | --- | | A | 1 | | B | 2 |

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

The separator is read from the text — comma, semicolon, tab or pipe — and shown as a chip before anything is written.

The columns are numbered c1, c2 … and the table’s header says so; you can name them in the app.

## The sample

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

```
"@timestamp",log.level,service.name,host.name,trace.id,message
"2026-04-21T14:32:08.412Z",INFO,checkout-api,ip-10-0-3-17,4bf92f3577b34da6a3ce929d0e0e4736,"{""event"":""stripe.charge.completed"",""amount"":17054,""currency"":""usd"",""order_id"":""ord_8f3aa19c4d""}"
"2026-04-21T14:32:07.940Z",WARN,checkout-api,ip-10-0-3-17,4bf92f3577b34da6a3ce929d0e0e4736,retry.scheduled attempt=2 backoff=400ms
"2026-04-21T14:32:07.813Z",ERROR,checkout-api,ip-10-0-3-17,9c02fe13a1d04b7e8c6f2e1d0b3a5c47,"stripe.webhook.signature_invalid: no signatures found matching the expected signature for payload"
"2026-04-21T14:32:07.512Z",INFO,checkout-api,ip-10-0-3-17,08bb31f7c2a94d1e9f6b3a8d5e2c7f10,"{""event"":""cart.items.priced"",""items"":2,""total"":14900}"
"2026-04-21T14:32:06.301Z",INFO,auth-svc,ip-10-0-5-42,51e8cc02d7f34a6b8e1c9d2f3a4b5c6d,session.token.issued ttl=3600
"2026-04-21T14:32:05.087Z",ERROR,inventory,ip-10-0-7-09,f1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6,"{""event"":""inventory.hold.failed"",""sku"":""BRD-OAK-002"",""reason"":""insufficient_stock"",""requested"":1,""available"":0}"
```

## in VS Code

Read as records asks separator and first row; Convert, then Markdown writes the pipe table into a new editor.

## Questions

### My CSV uses semicolons. Does it work?

Yes. The separator is read from the text itself and shown as a chip; a European export with semicolons and decimal commas is the case that question exists for.

### What about a cell that holds a pipe?

It is written as \|, so the table keeps its columns when rendered.

### Can I go back from the table?

Yes — the Markdown table to CSV page opens a pipe table as rows with no question and writes the CSV.

## Behind this page

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

free while in alpha · no signup

---

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