CSV ↔ JSON Converter

CSV ↔ JSON Converter

Paste CSV or JSON in either pane — the other side updates instantly. RFC 4180-compliant, type-aware, nested-object flatten / unflatten, Excel-friendly. Runs entirely in your browser.

CSV ↔ JSON Converter — TL;DR

Paste CSV or JSON in either pane — the other side updates instantly. RFC 4180-compliant, type-aware, nested-object flatten / unflatten, Excel-friendly. Runs entirely in your browser.

Paste your CSV into the left pane and JSON appears on the right instantly. By default the first row becomes object keys, types are inferred (numbers / booleans / null), and dotted-path columns like address.city rebuild as nested objects. Toggle the options bar above to change any of those defaults.

Paste a JSON array of objects into the right pane and CSV appears on the left. Nested objects flatten to dotted-path columns ({user: {name: "…"}} → column user.name); arrays inside values become indexed columns (tags.0, tags.1). The output is RFC 4180-compliant — fields containing commas, quotes, or newlines are quoted automatically.

Customer lists, sales reports, employee data — sensitive datasets never leave your device. Open DevTools → Network and you'll see zero outbound requests during conversion.

Delimiter: , Rows: 0
Drop a.csv,.tsv,.json or.xlsx file here, or
CSV / TSV
JSON

Built for real data, not demo files

RFC-compliant parsing, type inference, nested-object support, Excel-aware — every detail that breaks lesser tools.

Bidirectional, instant

Paste CSV in the left pane or JSON in the right — the other side updates as you type. Edit either side and the other re-renders within 300 ms.

RFC 4180-compliant CSV

Hand-rolled state-machine parser handles every edge case: quoted commas ("Hello, world"), embedded double-quotes (""), multi-line cells inside quotes, and Windows / Unix line endings.

Smart delimiter detection

Auto-detects comma, semicolon, tab, or pipe by scoring row-count consistency in the first 10 KB. Manual override available for European CSVs (semicolons) or TSV exports.

Type inference + nested objects

"42" becomes 42, "true" becomes true, empty becomes null. Dotted-path columns like address.city rebuild as nested JSON. Toggle off for strict-string mode.

Excel / XLSX in the browser

Drag a .xlsx file onto the page — SheetJS reads it locally, no upload. Export back to CSV or JSON. Supports .csv, .tsv, .txt, .json, .xlsx, .xls.

Privacy by design

Every byte of your data stays on your machine. The parser, type inferer, and download all run in JavaScript locally — open DevTools → Network and verify zero outbound requests.

How to use the converter

Four ways to get clean data out the other side.

  1. 1

    Paste or drop your data

    Paste CSV / TSV in the left pane, JSON in the right. Or drag a .csv, .tsv, .json, or .xlsx file onto the drop zone. The tool detects the format automatically and runs the conversion.

  2. 2

    Tune the options

    Set the delimiter (or leave on auto-detect), toggle whether the first row is a header, choose whether to infer numbers / booleans / null, and decide if dotted-path columns should rebuild as nested JSON objects. Each toggle re-runs the conversion immediately.

  3. 3

    Edit either side

    Both panes are fully editable. Tweak a value in JSON — CSV updates within 300 ms. Fix a column header in CSV — JSON updates the same way. Use the swap button to flip the panes.

  4. 4

    Copy or download

    Click the copy icon to send either side to the clipboard. Click the download icon to save as data.csv or data.json with proper UTF-8 BOM (so Excel opens the CSV correctly). For batch work, paste the next dataset and the tool re-runs.

What people use it for

Four common workflows where in-browser CSV ↔ JSON beats the alternatives.

API ↔ Spreadsheet round-trip

Backend gives you a JSON array — paste it, get a CSV the product team can open in Excel. They edit, give you back a CSV — paste it, get JSON your API can ingest. No CLI, no Python script, no upload to a third-party service.

Cleaning a messy export

CRM / analytics tools love to export semicolon-separated CSVs with quoted multi-line cells. The auto-detect handles the delimiter; the RFC 4180 parser handles the quotes correctly (most regex-based tools mangle them). Re-export as JSON or clean CSV.

Flattening nested API responses

A REST API returns {user: {address: {city: "…"}}} per row. Paste it, get a flat CSV with user.address.city as a column header. Drop the CSV in Excel for a non-technical stakeholder and they can pivot, filter, and chart without ever seeing JSON.

Seeding a database

You have a CSV of users / products / orders. Convert to JSON, drop into a Laravel / Django / Rails seeder, or paste straight into a NoSQL bulk-insert. The type inference saves the work of casting "42" back to 42 in your seed script.

100% private — runs in your browser

Customer lists, sales reports, employee data — sensitive datasets never leave your device. Open DevTools → Network and you'll see zero outbound requests during conversion.

  • All CSV and JSON parsing runs as JavaScript on your machine — the source is visible in the page.
  • Excel .xlsx files are parsed locally via SheetJS, which is loaded only when you drop an Excel file (zero network cost otherwise).
  • No login, no telemetry on data values, no third-party CSV API. We only use one cookie for cookie-consent state and one for language preference.

Related guides

Hand-picked tutorials on CSV, JSON, and data conversion.

Frequently asked

How do I convert CSV to JSON?

Paste your CSV into the left pane and JSON appears on the right instantly. By default the first row becomes object keys, types are inferred (numbers / booleans / null), and dotted-path columns like address.city rebuild as nested objects. Toggle the options bar above to change any of those defaults.

How do I convert JSON to CSV?

Paste a JSON array of objects into the right pane and CSV appears on the left. Nested objects flatten to dotted-path columns ({user: {name: "…"}} → column user.name); arrays inside values become indexed columns (tags.0, tags.1). The output is RFC 4180-compliant — fields containing commas, quotes, or newlines are quoted automatically.

Does it handle European CSVs (semicolon-separated) or TSV?

Yes. Auto-detect picks the most likely delimiter (comma / semicolon / tab / pipe) by scoring row-count consistency in the first 10 KB. You can also manually pick the delimiter from the dropdown — useful when your CSV has both commas and semicolons in the data and the heuristic guesses wrong.

Can I upload an Excel file?

Yes. Drag a .xlsx or .xls file onto the drop zone (or click "Choose file") and the first sheet is converted to CSV in your browser using SheetJS. The library is loaded only when you actually drop an Excel file — zero cost on cold load. After the conversion you can edit, copy, or download as JSON or CSV.

Is anything sent to your server?

No. The CSV parser, JSON parser, type inference, nested-object flatten / unflatten, and file download all run as JavaScript in your browser. Even Excel files are parsed locally with SheetJS. Open DevTools → Network and you'll see zero outbound requests during conversion. Sensitive data — emails, sales reports, customer lists — never leaves your device.