JSON to CSV converter
Paste JSON or choose a local file. Flatten the structure, check the rows and download the CSV without uploading your data.
Your JSON
Protection adds a tab before risky text, changing those values. Leave it on for spreadsheet use; turn it off only when you need the original text for a programmatic import.
Processed entirely in your browser. Nothing is uploaded or saved. Limits: 1 MiB input, 5,000 rows, 200 columns, 20 nested levels.
Your CSV
Convert your JSON to preview, copy or download the CSV.
Missing values and null become empty cells. Arrays stay as JSON inside one cell. Downloads use UTF-8 with a BOM; records use CRLF line endings. Spreadsheet behaviour can vary.
See the shape before the export.
Nested objects, missing fields and arrays can make a simple export less simple. Choose whether to flatten object paths, inspect the first rows and keep arrays together as JSON when one cell is the clearest representation.

Choose the output for the destination.
A file for a spreadsheet has different concerns from a file for an automated importer. The protection option changes risky text deliberately. Keep it enabled for spreadsheet viewing, or preserve the original strings when that is what a trusted data pipeline needs.

How to use it
Add the source
Paste one JSON document or choose a local file. An explicit example is available if you want to try the converter first.
Choose the shape
Decide whether to flatten nested objects and protect spreadsheet text. Converting after an edit creates a fresh result.
Check and export
Inspect the column/row count and preview, then copy or download the CSV. Missing values, arrays and protected text are explained alongside the output.
A predictable table from uneven records.
If one record has a city and another has a plan, both columns appear. A missing value becomes an empty cell; an interests array stays together as JSON. Use the example to inspect commas, quotes, line breaks and an accented name before converting your own data.
References: CSV formatting in RFC 4180 and OWASP’s spreadsheet-injection guidance.
When the one-off export becomes a workflow.
My work with Aura Ads paired a Webflow migration with structured publishing and connected Airtable workflows. If the same data keeps moving by hand, a clearer content model or integration may be more useful than another manual conversion.
JSON to CSV questions
No. Parsing, conversion, preview, copy and file creation run in your browser. Files are read locally and are not uploaded. The input is not saved after you leave.
Use an array of records or a single object. Primitive values and primitive array items are placed in a value column. Empty arrays and objects without columns produce a clear error instead of an empty download.
With flattening on, nested objects become dot-path columns such as plan.name. Literal dots and backslashes in keys are escaped so they do not collide with nested paths. Arrays stay as JSON strings inside one cell. With flattening off, nested objects also stay as JSON strings.
The converter takes the union of columns in first-seen order. Missing fields and null values become empty cells. Zero and false are preserved.
Yes. Every CSV cell is quoted, embedded quotes are doubled and records use CRLF line endings. Text values can contain commas, quotes, newlines and Unicode. Downloads are UTF-8 with a BOM.
When enabled, risky text values and headers receive a leading tab inside the quoted cell to help prevent Excel formula execution. It changes the underlying text. Spreadsheet applications and later re-saves can behave differently; no single CSV escape is a universal guarantee. Turn protection off if you need original strings for a trusted programmatic import.
The tool accepts up to 1 MiB of input, 5,000 rows, 200 columns and 20 nested levels. CSV output is capped at 4 MiB. Large unsafe integers or non-finite numbers are rejected; quote IDs and exact high-precision values as JSON strings.
This converter expects one valid JSON document. JSON Lines, comments and trailing commas need to be converted or removed before parsing.
Need the data to keep moving correctly?
Tell me which systems you use, what owns the data and where the current handoff breaks. I can help scope a reliable connection.