Tools / Text & Data / JSON to CSV Converter
Client-side

JSON to CSV Converter

Turn a JSON array into a flat CSV table you can open in Excel or Google Sheets, entirely in your browser with no upload.

What it does

  • Flattens nested objects into dot-notation columns
  • Unions keys across every record, not just the first
  • Copy or download the result as a .csv file
  • Runs locally in WebAssembly, nothing leaves the device

JSON to CSV converts a JSON array of objects into a flat, spreadsheet-ready table, and it runs entirely in your browser so the data is never uploaded. Most people land here because they pulled JSON from an API, a database export, or an app and now need it as rows and columns they can open in Excel or Google Sheets, filter, pivot, or push into a legacy system that only accepts flat files. This page does that locally, so even an export full of customer records or proprietary payload data stays on your machine.

What this conversion actually does (and does NOT do)

JSON is hierarchical and CSV is strictly two-dimensional, so this conversion is inherently lossy unless the nesting is flattened. A nested object like {address:{city,zip}} does not collapse into one cell; it becomes dot-notation columns such as address.city and address.zip. Arrays inside a record have no single correct mapping, so you choose deliberately between stringifying the array as JSON in one cell, expanding it into bracket-indexed columns like tags[0] and tags[1], or exploding it into multiple rows, each with different trade-offs.

A correct converter must walk every record and union all keys in first-seen order, not just read the keys of the first object. Naive tools build the header row from the first object alone and silently drop fields that appear only in later records. When records are heterogeneous, a record missing a column gets an empty cell in that position, which is expected behavior, not an error: if one object has middle_name and the next does not, the second row simply leaves that cell blank.

The conversion also drops all type information. CSV is text, so booleans, nulls, and numbers lose their JSON typing. That is why JSON to CSV is a one-way, lossy operation and not perfectly symmetric with CSV to JSON. Finally, CSV correctness requires quoting any field that contains the delimiter, a quote character, or a newline (per RFC 4180), and Excel-friendly output sometimes needs a UTF-8 BOM and a locale-aware delimiter (a semicolon in many EU locales) to open cleanly.

When to choose CSV over keeping JSON

Convert to CSV when the destination is a spreadsheet, a BI tool, a pandas DataFrame, or a legacy flat-file import that cannot read structured data. Keep JSON when nesting and types must be preserved, for example when feeding another API or storing structured config. The tool needs an array of objects as the tabular root; a single top-level object or a deeply nested payload will not produce rows until you point at the right array. If you later need the structure back, use the reverse CSV to JSON converter, but remember the original types will not return automatically.

How to convert JSON to CSV

  1. Paste your JSON, or drop a .json file, into the input area.
  2. The page is locked to the JSON to CSV direction, so the opposite-direction button is hidden and no setting can flip it by accident.
  3. Click convert to flatten the array into a table.
  4. Copy the CSV to your clipboard, or download it as a .csv file ready to open in Excel or Google Sheets.

No upload. It runs on your device.

The conversion is performed by Rust compiled to WebAssembly, running inside your browser tab. There are zero network requests for the data: your JSON is never POSTed to a server, so a server-side converter's upload-size limit never applies and nothing is stored that you would need to delete later. After the page loads once it works offline, and you can confirm the silence yourself in the DevTools Network tab. This matters because JSON exports routinely carry sensitive content, customer PII, financial records, healthcare data, or API payloads, and pasting that into a server converter is a non-starter for anyone with compliance obligations.

No limits

No file-size cap, no row limit, no watermark, no sign-up, and no ads. Paste an entire database dump and convert it as many times as you like.

Frequently asked questions

How do I convert JSON to CSV without uploading my file?
Paste the JSON or drop the file into this page and convert; the work runs in WebAssembly inside your browser. Because nothing is sent over the network, there is no upload step and no file ever reaches a server.
How does the converter handle nested JSON objects and arrays?
Nested objects are flattened into dot-notation columns, so {address:{city}} becomes an address.city column rather than one unreadable cell. Arrays have no single correct mapping, so you decide whether to stringify them, expand them into bracket-indexed columns, or explode them into rows.
What happens when my JSON objects have different fields?
The converter walks every record and unions all keys in first-seen order, so fields that appear only in later objects are not dropped. Any record missing a column gets an empty cell in that position, which is the expected result for heterogeneous arrays.
Will the CSV open correctly in Excel and Google Sheets?
Fields containing commas, quotes, or newlines are quoted per RFC 4180 so columns do not break apart. For locales where Excel expects a semicolon, or for files that need a UTF-8 BOM, choose the matching delimiter so the table loads cleanly.
Can I convert a large JSON file without hitting an upload size limit?
Yes, because nothing is uploaded there is no server-side size limit to hit. The Rust and WebAssembly engine processes the data in memory on your own machine, so large export files are handled locally.
Does converting JSON to CSV lose data or data types?
CSV is plain text, so booleans, nulls, and numbers lose their JSON typing and everything becomes a string. This makes JSON to CSV a one-way, lossy conversion that is not perfectly symmetric with CSV to JSON.
My JSON is a single object, not an array, how do I get rows?
A table needs an array of objects as its root, so a single top-level object maps to just one row of columns. If the records you want are nested inside a property, restructure the JSON so that array is at the top level before converting.
How do I convert the CSV back to JSON?
Use the reverse CSV to JSON converter to rebuild objects from the table. Note that types lost during the CSV step do not return automatically, since CSV stored everything as text.

Explore more in the text and data tools hub, validate or pretty-print structured data with the JSON formatter, or go the other way with the CSV to JSON converter.