Skip to main content

JSON ⇄ CSV ⇄ Excel Converter

Convert tabular data between JSON, CSV and Excel (.xlsx) — free, fast and entirely in your browser.

An array of objects becomes a table

Two records of JSON, converted to CSV.

Input
[{"name":"Ada","dept":"R&D","hours":7.5},{"name":"Bo","dept":"Sales, EU","hours":8}]
Output
name,dept,hours
Ada,R&D,7.5
Bo,"Sales, EU",8

Look at row 2: Sales, EU came out wrapped in quotes. A comma inside a value has to be quoted or the column count breaks — that is exactly the bug you get from hand-built CSV.

What is JSON ⇄ CSV ⇄ Excel conversion?

Development, data analysis and spreadsheets constantly need format swaps: code emits JSON, a colleague wants Excel, an import tool expects CSV. This tool converts tabular data between all three, entirely in your browser with no upload — safe even for data with personal information.

How to use

  1. Paste JSON or CSV into the input box, or upload a .json / .csv / .xlsx file.
  2. Click To JSON, To CSV or To Excel.
  3. JSON/CSV results can be copied or downloaded; Excel downloads an .xlsx directly.

Common use cases

  • Hand a JSON API response to a colleague who only uses Excel.
  • Turn a spreadsheet CSV export into JSON your code can parse.
  • Package database query results into an .xlsx report.
  • Clean up columns before importing into another system.

Why does nested JSON turn into a mess in Excel?

A backend teammate hands you data as JSON, but your finance or marketing colleague only opens spreadsheets — or the reverse, they save a tidy sheet as CSV and you need it as JSON for a script. This converter is the bridge, turning JSON, CSV, and Excel into one another without manual copy-paste. One thing to expect: nested JSON objects don't map cleanly onto flat CSV columns. A CSV has just rows and columns, so an object inside an object, or an array inside an array, usually gets flattened into column names like a.b.c or stringified into a single cell. If your data is deeply nested, pick and flatten the fields you actually need at the source first — the output comes out far cleaner.

What does the output look like when a value contains a comma?

One set actually run through this page: the input [{"name":"Ada","dept":"R&D","hours":7.5},{"name":"Bo","dept":"Sales, EU","hours":8}] gives name,dept,hours Ada,R&D,7.5 Bo,"Sales, EU",8. Only Sales, EU got quotes; R&D did not — that is the whole rule: a field is quoted when it contains the delimiter, a quote character, or a newline. Note too that the header row comes from the keys of the first object rather than from scanning every record; if your second record has an extra key, it has nowhere to go, so flatten and normalise before you export.

Frequently Asked Questions

Is my data uploaded?

No. All conversion runs locally in your browser (using SheetJS). The data you paste or the file you upload is never sent to a server or stored.

What JSON shape is supported?

It works best with an array of objects — each element is a row and its properties are columns, e.g. [{"name":"A","age":1}, …]. A single object is treated as one row.

How does Excel input and output work?

Input: upload an .xlsx file and the first sheet is read. Output: choosing "Excel" downloads an .xlsx file directly. JSON and CSV can be pasted as text or uploaded.

Can it handle large files?

Yes, as long as it fits in your browser memory. Tens of thousands of rows are usually fine; for very large files, use a desktop browser.

Related reading

How to Convert JSON to CSV and Excel (and Back) →

Embed this tool

Add this tool to your own website or blog for free — just copy and paste the code below (it includes a link back to this site).