Tools · CSV

# CSV to JSON

A spreadsheet that lost its formatting, and every ambiguity that implies — asked about once, beside your text, before anything is converted.

JSON, YAML, XML, CSV, a log file, or something broken. It stays in this tab.

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

## What it does

- 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; a text column never squeezes under 120px
- 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.

## The sample

The text below is what the first chip opens — a real document the engine reads, 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}"
```

## How

- Paste the CSV, or drop the file.
- Answer the reading question — separator, first row, and the decimal finding if there is one — with the preview beside it.
- Read as rows. Convert from the row above the table, or open a cell that holds JSON.

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

## 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-json
