Preparing the page
Public context is loading before any interactive tool code.
Preparing the page
Public context is loading before any interactive tool code.
Flatten nested JSON objects, preview the columns, and download CSV without uploading the data.
Your checked result will appear here.
An object such as result.score becomes a dot-path header. The path preserves where the value came from while producing a flat table.

The same deterministic rules are applied in this browser. No model infers a schema or renames a field.
The root must be a non-empty array, and every row must be a JSON object.
Parent and child keys are joined with a dot, so result and score become result.score.
Keys first encountered anywhere in the array are added to one shared header row.
Quotes are doubled, complex cells are quoted, and formula-leading values receive an apostrophe.
This fixture is covered by the product test. The apostrophe before =2+2 is deliberate output, not source data.
[{"name":"Asha","result":{"score":92},"tags":["reviewed","local"],"unsafe":"=2+2"}]name,result.score,tags,unsafe Asha,92,"[""reviewed"",""local""]",'=2+2
{"name":"Asha"}A single object has no row boundary. Wrap records in an array before converting.
CSV has no native nested-object, array, null or type system. Review these conversions before importing the file.
result.score → result.scoreThe dot path becomes the column name; the leaf value becomes the cell.
["a","b"] → "[""a"",""b""]"The full array is encoded as a JSON string inside one CSV cell.
missing | null → empty cellThese states are indistinguishable after export, so preserve them another way if the distinction matters.
= + - @ → apostrophe prefixThe extra character reduces formula-execution risk when a spreadsheet opens the file.
Inspect the preview in the destination spreadsheet, especially when columns contain identifiers, dates, long numbers or multilingual text.