JSON IN. CSV OUT.

JSON to CSV Converter

Paste JSON, choose the records you need, and download CSV. Check row and column counts before exporting.

Add your JSON

Input

Try a data shape. Loading an example replaces the pasted input.

Click to select or drag & drop a .json file

Choose an array inside your JSON. Each element becomes one CSV row; fields across all records become columns.

Arrays inside a record stay as JSON text in one cell. To export one row per child and keep parent IDs, load the related-table example.

Export columns

Choose fields and use Up / Down to set their order. This order applies to both the preview and downloaded CSV.

Add JSON to choose columns.

    Output settings Delimiter, header and nested fields

    Preview & export

    Convert your JSON to see the result.

    Next step: pull this data into spreadsheets or a data warehouse on a schedule — Coupler.io automates it. (affiliate link)

    Conversion runs in your browser. URL loading contacts the source you enter; this website also uses traffic analytics.

    Make your next export easier

    Examples and guides for the details that matter.

    Working with zero-prefixed codes? Follow the leading-zero guide.

    A JSON array of two objects, each with an id and a nested user.city, mapping to a CSV file with the header row id,user.city and two data rows.
    How the mapping works: one object becomes one row, nested keys become dot-path columns, and an array value stays JSON text inside a single cell. The full walkthrough, with 27 input shapes measured.

    Supported input formats

    Duplicate keys: Repeated keys inside one JSON object are not preserved: {"id":"first","id":"second"} produces id with the value second in this converter. Resolve duplicate keys before conversion.

    Output options

    Which output setting should I use?

    Turn Flatten nested on when each nested object field needs its own column. Turn it off when a nested object should remain JSON text in one cell for later processing. Arrays inside a record remain JSON text in either mode; this switch does not create one row per child. For separate parent and child tables, use the related-table workflow.

    Keep the header when the receiving app needs field names. Match the delimiter to the importing app. Force quotes controls CSV quoting; it does not declare a column as Text in a spreadsheet. For identifiers, follow the text-column import instructions.

    How nested JSON is handled

    When Flatten nested is on (default), nested objects are expanded into separate columns using dot notation. For example:

    When Flatten nested is off, a nested object or array is serialized as JSON text inside its cell. That cell retains the parsed nested value for a later pass; the CSV as a whole does not retain the full JSON document's types or structure. Missing fields, null values and empty strings can all become blank CSV fields; see how to keep field states distinct. The conflicting-path example below shows another case where flattening can lose a value.

    Arrays inside values are kept as JSON text in both modes, since they cannot be represented as a single scalar cell value.

    Conflicting dot paths: With Flatten nested enabled, {"a.b":1,"a":{"b":2}} produces one a.b column with the value 2; the value 1 is lost. Rename conflicting keys or turn flattening off before converting.

    For the full mapping — including what happens to ragged rows, arrays, and integers larger than 253 — see how to convert a JSON to CSV.

    If you would rather script it, JSON to CSV in Python compares pandas, json_normalize and the csv module over the same input shapes, with the exact bytes each method writes.

    FAQ

    Is this JSON to CSV converter free?

    Yes. The converter is free to use and does not require an account. Conversion runs in your browser. This site may display advertising and clearly disclosed affiliate links.

    Is my data safe?

    Conversion is performed locally in your browser. The converter does not upload pasted JSON or local file contents to our server for processing. URL mode makes a request to the address you enter, so that source receives a network request; it must allow browser access through CORS. The website also loads traffic analytics, so local conversion does not mean the whole page makes no network requests. See our privacy policy.

    Once the page and converter scripts have loaded, pasted text and local files can be converted without fetching a URL. URL loading requires a network connection. Avoid putting confidential tokens or personal information in a source URL.

    What JSON structures does this converter support?

    Arrays of objects, single objects, objects containing an array property (auto-detected), and JSONLines / NDJSON format (one JSON object per line). You can also convert JSON to CSV from a file or a URL.

    How do I open the CSV in Excel or Google Sheets?

    For Excel versions with Power Query, start in a blank workbook and choose Data → From Text/CSV → Transform Data. Check that the delimiter in the preview matches your export. For IDs and zero-prefixed codes, remove any automatic Changed Type step that already converted them to numbers, set those columns to Text, then choose Close & Load. Changing an already shortened number to Text cannot restore lost digits or zeros. See our leading-zero import walkthrough, long-ID guide, and Microsoft's import guidance; exact controls vary by Excel version.

    For Google Sheets, use File → Import, check the separator, and inspect identifier columns after import. CSV quoting does not declare a column's spreadsheet data type.

    If you need to pull data into spreadsheets or a data warehouse on a recurring schedule instead of importing files by hand, Coupler.io automates that step. (affiliate link)

    Can I convert CSV back to JSON?

    This tool focuses on converting JSON to CSV. For the reverse direction, use the CSV to JSON converter.

    Is there a file size limit?

    This converter does not impose a file-size cap, but available memory and data shape limit what your browser can finish. Our published seven-size browser test records a Chrome environment with about 1.2 GB of free memory: the tested files up to 100 MB converted and the tab stayed alive; the 150 MB and 200 MB files converted, then the tab crashed. These are results for those fixtures and that environment, not a guaranteed limit for your device. For larger exports, see the large-file workflow.