Skip to content

JSON ⇄ CSV

Flattens nested JSON into columns or rebuilds objects from a table, with a dot-path column naming rule.

Turns an array of JSON objects into a spreadsheet table: one row per record, one column per key. The interesting part is what it does with the parts of JSON that a table has no room for — nested objects, arrays, and records that do not all carry the same keys — and each of those is a choice you make at the top of the page.

🔒 Runs entirely in your browserjsoncsvconverttable
Nested objects

user.address.city becomes its own column.

Array values

tags.0, tags.1 — widest, loses nothing.

Ragged rows

Missing values are blank cells.

JSON in

Drop a .json file

Read in this tab. Nothing is uploaded.

CSV out

Delimiter

The download carries a UTF-8 BOM so Excel on Windows does not read 한글 as CP949. The copy button gives you the text without it.

How to use it

  1. Paste an array of objects

    That is the shape a table wants. A single object becomes one row, and an object wrapping an array — the usual `{ "data": [...] }` API envelope — is unwrapped for you, with a note saying so.

  2. Decide how nesting flattens

    Dotted paths give `user.address.city` its own column, which is what you want if the sheet is going to be filtered or pivoted. First level only keeps `user.address` as one cell holding JSON, which is smaller and reversible.

  3. Decide what happens to arrays

    One column each (`tags.0`, `tags.1`) loses nothing but widens the sheet to the longest array in the document. Joined puts `a; b; c` in one cell and reads well. As JSON keeps the brackets so a later step can parse it back.

  4. Check the column types in the preview

    Each column header carries the type the values actually had and, when some records were missing it, a present/total count. A column typed `mixed` is usually where the export is going to bite you later.

  5. Download CSV, or copy TSV

    The CSV download has a UTF-8 BOM in front of it so Excel on Windows opens Korean correctly. If you are pasting into a sheet rather than opening a file, switch to TSV and use the copy button.

Common questions

Why is my Korean text broken in Excel?

Because the file was saved without the BOM — Excel on Windows still guesses CP949 for a bare UTF-8 CSV. The download button here adds one; the copy button deliberately does not, because a BOM pasted into a text editor shows up as a stray character.

Can it convert back, CSV to JSON?

Not on this page — it only goes one way. And the trip is lossy in general: dotted column names can be rebuilt into objects, but a joined array cannot be told apart from a string that happened to contain a semicolon.

What happens to records with different keys?

That is the "Ragged rows" setting. Every key keeps them all and leaves blanks, Shared keys only drops any column that is not in every record, and First row’s keys treats record one as the schema and silently ignores the rest. The first is the safe default; the second is what you want when a downstream importer refuses ragged files.

Are big numbers safe?

The parse is the browser’s, so numbers beyond 2^53 are already rounded before the table is built — and a spreadsheet will round them again on open. Long ids belong in the JSON as strings, and even then Excel may reformat them; a leading apostrophe in the sheet is the usual defence.

Feed it from

Next

These accept what this tool produces, so the result can go straight in.