Free, no signup. Change the text in any PDF.Edit a PDF
JSON → CSV Converter

Convert JSON to CSV - Open Your Data in Excel or Sheets

Upload a JSON file and get a CSV table, with nested data split into columns.

Select your file to convert

or drop your file here

Expert Tips

What the pros know

Pro Tip

If your data has ZIP codes, phone numbers or IDs that start with a zero, don't double-click the CSV. Import it with Excel's From Text/CSV option instead, and mark those columns as Text, so the zeros stay.

Common Mistake

Expecting every list in a record to become rows. Only the first list of records is split into rows, and the others are kept whole, as text.

Best For

Someone who exported data from an app, a website or an API as JSON, and needs to sort, filter or share it in Excel or Google Sheets.

Not Recommended

JSON files over 20 MB. The converter stops them, so split a large export into smaller files first.

FAQ

Frequently Asked Questions

Upload the file in the box at the top of this page, keep CSV as the output, and download the result. Each record in your JSON becomes a row in the CSV.

Yes. Names inside nested records are joined with a dot, so a city inside an address becomes an address.city column. The first list of records in each record is split into one row per item.

The CSV keeps the zero, but Excel turns values that look like numbers into numbers when you double-click a CSV. Open the file through Data, then From Text/CSV, and set the column to Text.

The converter adds one to text that starts with =, +, - or @. Without it, Excel could run that text as a formula, which is how some harmful files trick people.

No. The converter needs one JSON value per file. A .jsonl file isn't accepted, and a .json file with one record on each line fails with an extra data at line 2 error.

20 MB per file, and up to 5 files at once. A bigger file is stopped with a message asking you to split it into smaller files.

Yes. Your file is uploaded and converted on our servers, and then you download the CSV. The download link expires after 30 minutes.

Convert JSON to CSV online free

Turn a JSON file into a table

Many apps and websites save and send data as JSON, because programs can read it quickly. People find it much harder to read, and you can't sort or filter it the way you would in a spreadsheet. A CSV file is a plain table that Excel, Google Sheets and Numbers all open without any setup.

Converting JSON to CSV gives you that table. This converter reads your JSON file and lays it out in rows and columns, using the names in your data as the column headings. Nested data, like an address stored inside a customer record, gets columns of its own, so the details don't end up hidden together in a single cell.

How to convert JSON to CSV

  1. Upload your JSON file - Drag it into the box at the top of this page, or browse for it. You can add up to 5 files at once, and each one can be up to 20 MB.
  2. Check the output - CSV is already picked on this page, so you don't need to change anything.
  3. Download your file - Save the .csv file when it's ready, then open it in your spreadsheet app.

Your file is uploaded and converted on our servers, which means you don't need to install anything or make an account. Our security page explains what happens to your file after that.

How your JSON turns into rows and columns

JSON can be shaped in many different ways, but a CSV is always a flat table, so the converter has to decide where each value goes. It follows these rules:

  • A list of records: each record becomes a row, and each name becomes a column.
  • Records inside records: the names are joined with a dot. A city inside an address becomes a column called address.city.
  • A list of plain values: the values share one cell, split by a semicolon, so ["a","b"] becomes a; b.
  • A list of records inside a record: the first such list gives one row per item, and the record's other fields repeat on each of those rows. Any other lists of records stay as JSON text in one cell, because a single table can't split two lists at once.
  • A single record on its own: you get a table with one row.
  • A record that holds one list: the list's items become the rows, and the other fields repeat on each row. {"page":1,"items":[{"id":1},{"id":2}]} gives the columns page and id.

Columns appear in the order their names first show up in the file. If two names would make the same column, the second one gets _2 added to the end, so no data is overwritten.

A real example from our tests

On 13 November 2026 we uploaded a small file we made ourselves to our live converter. It has a nested address, a list of tags, and a ZIP code that starts with a zero:

[
  {"id": 1, "name": "Ana", "address": {"city": "Lisbon"}, "tags": ["a", "b"], "zip": "01100"},
  {"id": 2, "name": "Zoë", "address": {"city": "Zürich"}, "tags": [], "zip": "8001"}
]

It came back as this CSV, about 13 seconds after we started the upload:

id,name,address.city,tags,zip
1,Ana,Lisbon,a; b,01100
2,Zoë,Zürich,,8001

The address became its own column, the two tags shared one cell, and the empty list left an empty cell. The accents in Zoë and Zürich came through unchanged. You can download the JSON file we uploaded and the CSV it produced to check them yourself.

Before launch, we also ran larger files on our test server. A 19 MB file with 122,589 records took about 8 seconds, and a file with Hindi, Japanese and Arabic city names kept every character.

Opening the CSV in Excel

The CSV is saved as UTF-8 with a BOM, which is a small marker at the start of the file. The marker tells Excel how the text is stored, so accents and other alphabets don't turn into odd symbols. We checked the file itself, but we haven't tested it inside Excel yet.

Excel can still change some values when you double-click a CSV. A ZIP code like 01100 is saved correctly in the file, but Excel may show it as 1100, because it treats anything that looks like a number as a number. To keep the zero, open the file through Data, then From Text/CSV, and set that column to Text before you load it. Or convert to XLSX instead, which saves the ZIP code as a text cell, so the zero is kept in the file.

You may see an apostrophe (') at the start of some cells. The converter adds one when text starts with =, +, - or @, so that Excel shows it as text instead of running it as a formula. Plain numbers like -42 are left as they are.

Limits, and files that won't convert

  • Each JSON file can be up to 20 MB. The upload box accepts bigger files, but the converter stops anything over 20 MB and asks you to split it.
  • The table can have up to 1,000,000 rows, 16,384 columns and 5,000,000 cells.
  • Data nested more than 64 levels deep is refused.
  • JSON Lines, with one record on each line, isn't supported, because the file has to hold a single JSON value.
  • The file must be UTF-8 text. UTF-16 and UTF-32 files with a BOM work too.
  • NaN and Infinity aren't allowed in JSON, so a file that uses them is refused.
  • A list inside another list is written into one cell as JSON text, not split up.

If your JSON has a mistake, like a comma after the last item, the error message tells you what's wrong and which line it's on, so you can fix it and upload the file again. To go the other way, CSV to JSON turns a table back into JSON.

Last updated: 13 November 2026 · ChangeMyFile

What changed: New page, added when JSON support launched.

Tested: 13 November 2026, on our live converter: our sample JSON file, with a nested address, a list of tags and a ZIP code starting with 0, became the CSV shown above in about 13 seconds. The ZIP code kept its zero and the accents came through.

Quick access to the most commonly used file conversions.