A CSV ↔ JSON converter that handles the edge cases.
Convert tabular data between CSV and JSON in your browser. Powered by Papa Parse — handles quoted fields, embedded newlines, and escaped quotes correctly, where hand-rolled parsers fail.
Parsing happens in this browser tab via Papa Parse (a battle-tested CSV library) and the native `JSON.parse` / `JSON.stringify` APIs. No data leaves the page; we never see what you convert.
A real CSV parser, not a `split(",")` regex.
CSV looks simple until you have a field containing a comma, a quote, or a newline. We use Papa Parse — the most-trusted JS CSV library — so the edge cases that break hand-rolled parsers round-trip cleanly.
Fields wrapped in `"…"` can contain commas, quotes (`""` → `"`), and embedded newlines without breaking parsing. Hand-rolled CSV parsers based on `split(",")` get this wrong on day one.
CSV → JSON emits an array of objects (or arrays, if you turn off the header). JSON → CSV detects a flat object schema, walks the array, and emits a properly-escaped CSV with a header row.
Comma, tab (TSV), semicolon (European CSV), pipe, plus a custom single-character delimiter for the long tail. Auto-applied to both parse and emit.
Most CSVs have a header row; some do not. Toggle on/off — with header, JSON keys come from the first row; without, the output is an array of arrays.
Every keystroke triggers a re-parse and re-emit. Inputs up to a few megabytes stay responsive; the parser is the standard `papaparse` package, optimized for browser execution.
Status pill shows row count and field count so you can sanity-check the parser made the right shape — common debug for "did my CSV import all 4,832 rows or did it stop at row 23 because of an unescaped quote".
When parsing fails, the error includes the row and the reason. "Unclosed quoted field at row 412" beats "unexpected token" every time.
Use anonymously. No account, no history, no telemetry. Inspect the network tab — there is nothing outbound.
Wherever tabular data has to change shape.
You export a spreadsheet to CSV and the API wants `application/json`. Paste the CSV, copy the JSON, post the request. No one-off Python script required.
You have a JSON array of objects from your analytics API and the stakeholder wants it in Excel. Convert to CSV, send it on, get on with your day.
When a CSV import fails on the receiving end, the parser here surfaces the offending row. Often it is an unescaped quote, an embedded comma, or a stray BOM — fix once, retry.
Take a CSV of test data and convert to JSON for a database seed script. Toggle the header row, copy, paste into your `seed.json`.
Sometimes you receive `;`-delimited CSV (German Excel default) but the downstream tool wants commas. Paste in with `;`, switch to comma, copy out.
Quick sanity-check: paste the CSV, read the row count off the status pill. Verifies the file is the size you expected before importing.
CSV ↔ JSON, the plain answers.
CSV looks like comma-separated values until you have a field containing a comma. The spec (RFC 4180) says wrap it in quotes — but then the field can contain a quote (escaped as `""`), or a newline, or a leading BOM, or a different line-ending convention. A correct parser is ~200 lines of state machine; we use Papa Parse, which has been tested on every edge case people have hit since 2014.
CSV is fundamentally flat — a single row maps to a single record. When converting JSON → CSV, nested objects and arrays are stringified into a single cell (so `{"meta": {…}}` becomes a column with JSON in it). You will see a warning when this happens; for properly tabular output, flatten the JSON first.
When **on** (default), CSV → JSON treats the first row as column names and emits an array of objects keyed by those names. JSON → CSV emits a header row from the first object's keys. When **off**, both directions deal in array-of-arrays — no keys, just positional fields.
Not in the current build — paste works for inputs up to a few megabytes (~10k rows of moderate width). For really large CSVs, paste a representative slice to validate the shape, then run the actual conversion via a CLI tool like `csvkit` or the streaming Papa Parse API in Node.
No. Parsing runs entirely in this browser tab via Papa Parse and `JSON.parse`. The page makes no network calls related to your input. Open DevTools → Network and watch nothing happen as you paste.
All supported — pick the right delimiter (tab, pipe, semicolon) from the dropdown. The CSV spec is really a family of formats varying by delimiter and quoting convention; one config covers most of them. For exotic dialects (fixed-width, ASCII Record Separator etc.) you will need a dedicated parser.
Building pipelines that move tabular data between systems?
Sign up for the free tier and you get $100 in credits, plus VMs, managed PostgreSQL with native CSV import (`COPY`), object storage, and zero-config autoscaling across four regions.