Tools · CSV

CSV to JSON

Paste the CSV. Separator, header row and a decimal comma are asked once, beside your text — then the rows are a JSON array, NDJSON or a Markdown table.

no signup · runs entirely in your browser · ⌘V works anywhere on this page
See it done · 10 s
CSV to JSON — A Kibana export: separator and first row answered beside the text, Read as rows, then Convert writes JSON — one object per row. · 10 s

What you get

  • Detects the separator — comma, semicolon, tab, pipe — and whether the first row is a header, and shows the guess as chips with a preview; the semicolon export opens with “semicolon” already chosen
  • Finds a split decimal — “12,50” read as two cells — and asks: read as 12.50 · keep text
  • Reads the Kibana export as 6 rows, with 3 message cells holding JSON that open in the panel as nested rows
  • Converts the rows to a JSON array, NDJSON, YAML, XML or a Markdown table
  • Reads quoted fields, embedded commas and doubled quotes the way RFC 4180 writes them

What it will not do

  • Open .xlsx. Save as CSV first — the tool reads text.
  • Coerce a value silently. A decimal written with a comma is a question with a preview, not a guess.
  • 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 it decides, and asks

The separator

Comma, semicolon, tab or pipe — detected, shown as chips with a preview, asked once.

The first row

Header or data. A header row names the keys; without one the columns are numbered.

A decimal comma

1,5 in a comma-separated file is a question with a preview, never a silent guess.

JSON in a cell

A cell that parses as JSON opens as nested rows; the cell in the table stays the text the file wrote.

The output
id,name 1,Rin 2,Kai[ { "id": 1, "name": "Rin" }, { "id": 2, "name": "Kai" } ]
NDJSON

Convert → NDJSON writes one object per line instead of one array — the form a stream takes.

The sample

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

kibana-export.csv
"@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 writes the JSON into a new editor.

unstringify for VS Code14-day trial · Free and Pro

Questions

My CSV uses semicolons. Does it work?

Yes. The separator is scored from the text itself — a European export with semicolons and decimal commas is the case the question exists for.

What does it do with JSON inside a cell?

A cell that parses as JSON shows Unpack. It opens in the panel as nested rows, and the cell in the table stays the string the file wrote.

Can it convert CSV to a JSON array of objects?

Yes — with the header row as the keys. NDJSON writes one object per line instead.

Does it read TSV?

Yes, with the same engine; a tab is one of the separators it scores.

Try it on the file that broke your afternoon.

free · no signup