JSON to CSV Converter
Turn JSON into a table. Check the rows, then download your CSV.
JSON input
CSV settings Comma · Spreadsheet text
Spreadsheet text adds a tab to risky strings and headers for viewing. These are disclosed data changes; this mode does not guarantee behavior in every spreadsheet.
UTF-8 · all fields quoted · CRLF line endings. Import identifier columns as text to keep leading zeros.
CSV preview
Your JSON, in columns.
Paste JSON or open a local file, then convert it to check the rows before downloading.
From JSON records to a CSV table
Convert JSON to CSV in three steps.
Use this when an export or API response gives you JSON and you need its records in columns. Paste the JSON or choose a local UTF-8 file. You can check the table before keeping the CSV.
- Add the JSON. An array of objects usually has one object per record. A single object becomes one row. “Try sample” loads two synthetic records you can edit.
- Convert and check. The converter finds fields across every selected record. If the records sit inside a larger object, choose the data to export. For a rectangular array of arrays, choose whether the first row contains column names.
- Download or copy the CSV. Check the complete row and column counts above the preview. The download includes all converted rows, even when the preview is shorter. CSV settings let you choose the delimiter, export mode and optional UTF-8 BOM.
Checked synthetic example
Later fields become columns too.
The first record has a SKU, units and price. The second also has a note. Both records appear in the CSV, and the later note becomes a fourth column. Its first-row cell is blank because that record has no note.
[
{"sku":"0017","units":2,"price":12.50},
{"sku":"0042","units":0,"price":0.00,"note":"rush"}
]Number spellings such as 12.50 and 0.00 stay in the CSV. So do the characters in a long identifier such as 9007199254740993. Spreadsheet import settings determine how those characters are interpreted.
| /sku | /units | /price | /note |
|---|---|---|---|
| 0017 | 2 | 12.50 | blank |
| 0042 | 0 | 0.00 | rush |
Nested fields, arrays and column paths
A nested object such as {"customer":{"name":"A"}} produces the column /customer/name. A literal key customer.name produces /customer.name, so the two fields remain distinct.
Headers use JSON Pointer paths: a slash inside a key becomes ~1 and a tilde becomes ~0. Nested arrays stay as compact JSON text in one cell, including their number spellings; they are not expanded into extra rows. Empty objects and arrays remain {} and [].
Null, missing values and empty text
JSON null, an absent field and an empty string all export as a blank cell. The preview identifies each state so you can see the difference before exporting. The literal string "null" stays text. CSV does not preserve every original JSON type or reconstruct the whole source.
Keep identifiers as text in Excel.
A product code such as 0017 is an identifier, even though it contains digits. Opening a CSV directly can let the spreadsheet remove its leading zeros or round a long number.
- In Excel, choose Data → From Text/CSV and select the downloaded file.
- Choose the matching delimiter. Open the transformation editor and set identifier columns to Text before loading them.
- Check a leading-zero code and a long identifier against the source before using the imported table.
Microsoft’s leading-zero and large-number guidance explains these import choices. Other spreadsheet apps have their own type detection and import settings. This tool creates CSV, not an Excel workbook.
Choose the CSV for its destination.
Spreadsheet text is the default. It adds a tab inside quoted fields when a source string or header begins with formula-like or control characters. The result shows exactly how many cells and headers changed. Genuine JSON numbers, including negative numbers, remain numeric text.
Faithful data keeps the projected source text without those added tabs. Choose it for a controlled downstream import after acknowledging that spreadsheet software may interpret some text as formulas.
Why this choice matters
The tab prefix is an intentional change to the CSV data. It is not a guarantee about every spreadsheet application or a later save and reopen. Quotes alone do not prevent formula interpretation. OWASP’s CSV injection guidance explains the trade-off and the absence of a universal sanitizer.
Your data stays in this tab.
Conversion happens locally after you ask for it. Your JSON, local filename and derived field names are not sent to BiznTools or stored in a saved history. Clear removes the working JSON and result; closing the tab also discards the working data. A CSV you download remains on your device.
Editing the JSON or changing CSV settings removes the previous result until you convert again. Cancelling stops the active conversion. Selecting a nested dataset exports that selection; the result says when other source data is excluded.
See the privacy policy or report a conversion issue using a small synthetic example.
Supported shapes and input checks
Supported shapes are a single object, an object-record array and a rectangular table of arrays. Wrapped datasets require a visible selection. Table headers must be unique, nonempty strings when you use the first row as names; generated headers are available instead. Mixed record types and ragged tables need correction before export.
The converter rejects duplicate decoded member names rather than silently choosing a value. This is a product policy for unambiguous conversion. Local files must contain valid UTF-8, and unsupported unpaired Unicode surrogates are rejected. One leading UTF-8 BOM is accepted and its removal is disclosed.
File, table and preview limits
Maximum input: 5 MiB of UTF-8. Maximum selected table: 50,000 data rows and 200 columns, with at most 1,000,000 projected cells. The JSON can have at most 10 nesting levels and 200,000 values. A projected cell is limited to 64 KiB, a column path to 1 KiB and the complete CSV to 32 MiB.
The preview shows at most 100 rows, up to 180 characters per cell and a bounded total text budget. Shortened previews are marked; the complete CSV is separate. A conversion that reaches a limit stops with a message instead of returning an incomplete download. A 30-second conversion budget prevents an indefinitely running job.
CSV format and references
Files use UTF-8, an included header row, double-quoted fields, doubled embedded quotation marks and CRLF record separators. Choose comma, semicolon or tab in CSV settings. Source newlines inside a quoted field are retained. A UTF-8 BOM is optional for consumers that need it.
The quoting and record format follow the common CSV conventions described in RFC 4180. JSON syntax is defined in RFC 8259. These references explain the formats; the conversion choices above describe this tool.