Json To Csv LogoJson To Csv

How to Convert JSON to CSV: 3 Reliable Methods (2026 Guide)

Three reliable ways to turn JSON into spreadsheet-ready CSV: a free online converter, Excel Power Query, and a short Python script — with nested data, delimiters, and common fixes covered.

Updated: 2026-10-027 min read

What converting JSON to CSV actually does

JSON is hierarchical: objects nest inside objects, and arrays hold lists of values. CSV is flat: just rows and columns. Converting means mapping each object in a JSON array to one row, and each key to one column.

The tricky part is nesting. A value like {"address": {"city": "Berlin"}} has no direct CSV column, so converters flatten it to address.city. Arrays inside objects (tags: ["a", "b"]) are usually joined into a single cell, for example "a; b".

Method 1: Free online converter (fastest)

For a one-off conversion, an online tool is the fastest route — no installs, no code. Everything runs in your browser, so your data never leaves your device.

  • Paste your JSON (or drop a .json file) into the converter above.
  • Choose a delimiter: comma for most tools, semicolon if your Excel expects it.
  • Check the table preview, then click Download .csv.

Try the free JSON to CSV converter

Method 2: Microsoft Excel (Power Query)

If you live in Excel and convert files regularly, Power Query handles JSON natively — no pasting into third-party sites.

  • Open Excel → Data tab → Get Data → From File → From JSON.
  • Select your .json file. Power Query shows the data as a list of records.
  • Click Into Table, then expand the columns you need with the expand icon.
  • Close & Load, then save as CSV via File → Save As → CSV UTF-8.
  • Tip: choose “CSV UTF-8 (Comma delimited)” so accented characters survive.

Method 3: Python script (repeatable)

For developers and recurring jobs, a short Python script using pandas is the most repeatable option. It flattens nested objects with json_normalize and writes UTF-8 with a BOM so Excel opens the file correctly.

Python
import pandas as pd

# Flat or list-of-objects JSON
df = pd.read_json("data.json")

# Nested objects? Flatten them to dot-notation columns first
df = pd.json_normalize(df.to_dict("records"))

# utf-8-sig adds a BOM so Excel detects the encoding correctly
df.to_csv("data.csv", index=False, encoding="utf-8-sig")

Run it with python convert.py. The output CSV opens directly in Excel, Google Sheets, or any database import tool.

Handling nested JSON and arrays

Nested objects flatten cleanly with dot notation: user.profile.email becomes the column user.profile.email. Nested arrays are the edge case — a converter must decide between joining values into one cell or exploding them into multiple rows. For analysis, joining (for example "red; blue") keeps one row per record and is the common default.

If your JSON is a single object instead of an array, wrap it in square brackets [ ... ] first — every CSV row needs to come from one object in a list.

Delimiters: comma vs semicolon

CSV means “comma-separated”, but many European spreadsheet apps expect a semicolon, because the comma is the decimal separator there. If your CSV opens with everything crammed into one column, the delimiter is wrong — re-export with a semicolon. Our converter offers comma, semicolon, tab, and pipe.

Common problems and quick fixes

Most conversion headaches come down to four issues:

  • Commas or quotes inside a field: valid CSV wraps the field in double quotes and doubles any inner quotes ("She said ""hi"""). Any decent converter does this automatically (RFC 4180).
  • Weird characters in Excel: save with UTF-8 encoding (with BOM) so Excel detects it.
  • Leading zeros disappearing (zip codes, IDs): Excel treats the column as a number. Import via Data → From Text/CSV and set the column type to Text.
  • Huge files freezing the browser: split the JSON array into smaller chunks, or use the Python method above.

Related guides

Frequently asked questions

Is it safe to convert JSON to CSV online?

Yes, if the converter runs entirely in your browser — like this one. Your file is processed locally on your device and never uploaded to a server. Avoid tools that require uploading sensitive data to an unknown server.

How do I convert nested JSON to CSV in Excel?

Use Power Query: Data → Get Data → From File → From JSON, then use the expand icon on nested columns to flatten them before loading. For deeply nested files, an online converter with dot-notation flattening is usually faster.

Why does my CSV open with everything in one column?

Delimiter mismatch. Your file probably uses commas while your spreadsheet expects semicolons (common in European locales), or vice versa. Re-export with the other delimiter, or use Data → From Text/CSV in Excel and pick the delimiter manually.

Can I convert CSV back to JSON?

Yes. The same tools work in reverse: most online converters handle it, and a one-line Python snippet (pd.read_csv("f.csv").to_json("f.json", orient="records")) turns CSV rows back into a JSON array.

Do I need to install anything to convert JSON to CSV?

No. A browser-based converter handles the whole job — paste, preview, download. Installing software only pays off for batch jobs you run every day, where a Python script or Power Query saves real time.

Does converting JSON to CSV lose data?

The values survive intact, but the shape changes: nested objects flatten to dot-notation columns, arrays join into a single cell, and number formatting such as leading or trailing zeros can be lost. Always spot-check one tricky row before importing the CSV into your real workflow.

How do I convert a JSON file that is a single object, not an array?

Wrap it in square brackets [ ... ] so it becomes a one-element array — every CSV row needs one object to come from. Most online converters also accept a bare object and treat it as a single row automatically.

Convert your JSON now — free

Paste your JSON and download a clean CSV in seconds. No sign-up, no uploads, 100% private.

Open the converter
All guides