Free · Fast · Privacy-first

Convert JSON to CSV

JSON is the lingua franca of web APIs and modern databases, but the moment you need to hand data to an analyst, a finance team, or a no-code dashboard, you almost always need CSV instead.

Native JSON tool

JSON to CSV

Runs in your browser
CSV output
Run the tool to see a task-specific result.

Handles nested JSON automatically

🔒

RFC 4180 compliant output

Works fully offline in your browser

No file size cap from the tool

Cost
Free tier
Sign-up
Not required
Processing
Tool-specific
Privacy
Clearly disclosed
IframeResponsiveAttribution included

Add this JSON to CSV to your website

Drop the JSON to CSV into a blog post, product docs, intranet, or school portal with one iframe. Processing, privacy, and usage limits are the same as on the full tool page.

  • One copy-ready line of HTML
  • Responsive — adapts to any container width
  • No API credentials are placed in the snippet

Embed code

<iframe
  src="https://www.fixtools.io/json/json-to-csv?embed=1"
  width="100%"
  height="780"
  frameborder="0"
  style="border:0;border-radius:16px;max-width:900px;"
  title="JSON to CSV by FixTools"
  loading="lazy"
  allow="clipboard-write"
></iframe>

Attribution-friendly: a small "Powered by FixTools" link appears in the embed footer.

Why JSON to CSV conversion is harder than it looks

JSON and CSV look like cousins but they model data very differently. JSON is a tree: objects can contain arrays, arrays can contain objects, and any value can be null, a number, a string, a boolean, or another nested structure. CSV is a flat grid: every row has the same set of columns, every cell is a string, and there is no concept of nesting. The act of converting JSON to CSV is fundamentally a flattening operation, and the interesting design choices are all about how you flatten. Do you turn nested keys into dotted column names like address.city? Do you serialise arrays as JSON-encoded strings inside a cell? Do you explode arrays into multiple rows? Different downstream consumers want different answers, which is why a one-size-fits-all online converter usually gets it wrong for at least one of your use cases.

FixTools handles the most common case well by default and exposes the dials for everything else. Top-level arrays of flat objects, which is what almost every REST API returns, convert cleanly with one row per object and one column per key. Nested objects flatten with dotted column names, so { user: { name: "Ada" } } becomes a column called user.name. Embedded arrays are JSON-encoded into a single cell by default so that no information is lost, but you can switch to row-exploding behaviour if your spreadsheet workflow needs one item per row. Strings are quoted only when they contain a comma, newline, or double quote, which matches the RFC 4180 specification and keeps the file readable in viewers that respect the spec.

Character encoding catches more people out than any other conversion issue. JSON is UTF-8 by definition under RFC 8259, which means non-ASCII names, addresses, emoji, and accented characters all travel correctly inside JSON without any escaping beyond the literal Unicode code points. CSV, on the other hand, has no defined encoding in the original specification, and many tools default to UTF-16 or even Latin-1 on Windows. FixTools writes UTF-8 with an optional BOM so that Microsoft Excel on Windows recognises the encoding immediately and displays international characters correctly on first open. If you are sending the file to a Unix-based pipeline, you can disable the BOM in one click.

Line endings are the other recurring source of frustration. CSV files written on macOS or Linux use LF line endings, while Windows-native CSVs use CRLF. Most modern spreadsheet tools accept either, but some legacy ETL pipelines and corporate ingestion endpoints insist on one specific style. FixTools defaults to CRLF to match the RFC 4180 recommendation, which is the safest choice for unknown downstream environments, and offers an LF option for Unix-only workflows. Together with the BOM and delimiter controls, these settings let you generate a CSV that matches almost any consumer's expectations without writing a script.

How to use this tool

💡

Paste JSON or upload a .json file, choose delimiter and quoting options, then download a clean RFC 4180 CSV ready for any spreadsheet or BI tool.

How It Works

Step-by-step guide to convert json to csv:

  1. 1

    Paste or upload your JSON

    Drop a .json file into the upload area or paste the JSON text directly into the editor pane. The converter parses your input live and shows a structure preview so you can confirm the data shape before you commit to a conversion. Large files load directly into the browser tab without any server round-trip.

  2. 2

    Pick a root array if the JSON is wrapped

    If your JSON is wrapped in an envelope such as { data: [...], meta: {...} }, select the data path that contains the array of records. The tool inspects the parsed structure and offers the candidate array paths in a dropdown so you do not need to remember the exact key name.

  3. 3

    Choose delimiter and quoting style

    Pick comma, semicolon, tab, or pipe as your delimiter. Pick whether to quote every field or only fields that contain a delimiter, quote, or newline. Choose UTF-8 with or without a byte-order mark, and CRLF or LF line endings. The defaults match RFC 4180 and work for most consumers.

  4. 4

    Preview the first rows

    Inspect the rendered table preview to confirm column headers, row count, and the way nested keys were flattened. If something looks off, adjust the flatten depth setting or switch arrays from JSON-encoded cells to exploded rows. Iterate on settings until the preview matches what your downstream tool expects.

  5. 5

    Download the CSV

    Click Download CSV. The file streams to your device with the encoding, delimiter, and line endings you picked. Open it in your spreadsheet to verify it loads cleanly, then move it into your pipeline, attach it to an email, or upload it to your BI tool of choice.

Real-world examples

Common situations where this approach makes a real difference:

Backend engineer exporting API response for finance

A backend engineer pulls a paginated /orders endpoint from the company API and ends up with 8,000 order records as one large JSON file with nested customer objects and line-item arrays. Finance only cares about order-level totals and customer email, not the line items. The engineer pastes the JSON into FixTools, picks the orders array, flattens customer.email into its own column, and serialises the lineItems array as a JSON-encoded cell that finance can ignore. The resulting CSV opens in Excel in two seconds and finance reconciles the period without ever asking what JSON means.

Marketing analyst converting Hubspot export

A marketing analyst exports contacts from Hubspot via the API and receives a JSON dump with deeply nested company and deal associations. She needs a flat contact list with company name and last-deal-stage as plain columns for a quarterly board deck. FixTools flattens the nested associations into dotted columns, she renames a handful in the preview, downloads the CSV, opens it in Google Sheets, and pivots by stage in under five minutes.

Data engineer prepping a Tableau feed

A data engineer needs to feed a Tableau dashboard from a nightly JSON dump that an upstream service produces. Tableau accepts CSV natively but chokes on JSON without an extra connector. The engineer adds a step that pipes the JSON through FixTools settings he saved as a preset, gets a deterministic UTF-8 CSV with CRLF line endings, and Tableau ingests it cleanly every night with no manual intervention.

Founder sharing investor metrics

A startup founder pulls weekly metrics from Stripe and Mixpanel as JSON via their respective APIs. Investors want one tidy spreadsheet, not three opaque JSON files. The founder converts each JSON in FixTools, opens the three CSVs in Excel, joins them on date with VLOOKUP, and emails the resulting workbook to investors every Friday morning before standup.

Pro tips

Get better results with these expert suggestions:

1

Validate JSON before converting

A converter cannot rescue malformed JSON. If your source has a trailing comma, an unquoted key, or a stray comment, the parser will throw before any CSV can be produced. Run your input through the FixTools JSON Formatter or JSON Validator first to catch syntax issues with a precise line and column. Fixing the source once is much faster than guessing at converter errors that read like "unexpected token at position 14823".

2

Pick the right flatten depth for your audience

Full flattening produces many columns and can overwhelm spreadsheet users, while no flattening leaves nested objects as JSON-encoded strings that analysts cannot filter on. A flatten depth of 1 or 2 hits the sweet spot for most business audiences: top-level fields become columns, one level of nesting expands into dotted columns, and anything deeper stays as a single cell. Experiment with the preview before committing.

3

Use semicolon delimiter for European Excel

Microsoft Excel installed with a European locale such as German, French, or Spanish uses semicolons as field separators by default because comma is the decimal separator in those locales. A comma-delimited CSV opens as a single column blob in those installs. If you know your recipient is in continental Europe, generate the CSV with a semicolon delimiter and they will see clean columns on first open without needing to use the Text Import Wizard.

4

Add the UTF-8 BOM for Excel on Windows

Excel on Windows uses the byte-order mark to detect UTF-8 reliably. Without a BOM it falls back to the system code page, which mangles accented characters and emoji. FixTools offers a BOM toggle that adds three bytes (EF BB BF) at the start of the file. For Windows Excel recipients, always enable the BOM. For Unix pipelines, leave it off because some line-oriented tools treat the BOM as part of the first field.

FAQ

Frequently asked questions

Open the FixTools JSON to CSV converter, paste your JSON text or upload a .json file, pick the array path that holds your records if the JSON is wrapped in an envelope, choose your delimiter and encoding options, and click Download CSV. The whole process takes under a minute for a typical API response of a few thousand records. The converter handles arrays of objects out of the box and flattens nested structures using dotted column names by default. If your downstream consumer expects a specific delimiter, encoding, or line-ending style, adjust those settings in the options panel before downloading.
Nested objects are flattened into dotted column names by default. For example, the JSON object { "user": { "name": "Ada", "email": "ada@example.com" } } becomes two columns named user.name and user.email in the CSV. This preserves all the information without forcing you to choose which fields to drop. If you prefer to keep nested objects as JSON strings inside a single cell, you can switch the flatten mode in the options panel. The dotted column convention is widely understood by analysts and is the same approach jq, pandas, and most ETL tools use when converting tree data to a flat format.
Yes, within the limits of your browser memory. Files under 50MB convert quickly on most modern laptops. Files between 50MB and 200MB convert successfully but may take longer and use significant memory because the converter holds both the parsed JSON tree and the output CSV in memory simultaneously. For files larger than 200MB, consider splitting the JSON into chunks and converting each chunk separately, or use a command-line tool such as jq paired with a CSV writer if you regularly handle very large datasets.
No. All conversion happens in your browser using JavaScript. Your JSON is parsed, flattened, and serialised to CSV entirely in client-side code, and the resulting CSV download is generated locally from an in-memory blob. No file content travels over the network. You can verify this by opening browser developer tools, switching to the Network tab, and watching for any outbound requests carrying your data while you convert. The only network activity will be the initial page load and any advertising or analytics calls that do not touch your input.
Yes. By default, arrays inside objects are JSON-encoded into a single cell so that no information is lost. For example, a tags array of ["a", "b", "c"] becomes the cell content ["a","b","c"] in the CSV. If your downstream tool needs the array exploded into multiple rows so that each tag appears on its own row alongside the parent record, switch the array handling option to Explode. The exploded mode duplicates parent fields across rows so that each child item carries the full context.
The output uses UTF-8 by default, which preserves international characters, emoji, and any non-ASCII text without information loss. There is an optional byte-order mark (BOM) that you can enable for compatibility with Microsoft Excel on Windows, which uses the BOM to detect UTF-8 reliably on file open. For Unix-based pipelines and most modern tools, the BOM is unnecessary and should be left disabled because some line-oriented utilities treat the BOM as part of the first field.
Yes. The preview panel lists all detected columns with drag-handles so you can reorder them before downloading. You can also exclude columns entirely by toggling them off in the column list, which is useful when your JSON contains internal fields like id, version, or audit timestamps that the downstream consumer does not need. The exclusion only affects the downloaded CSV, not the source JSON, so you can iterate freely without losing data.

Related guides

More use-case guides for the same tool:

Ready to get started?

Open JSON to CSV to review its free limits and processing method.

Open JSON to CSV →

Free tier · No account needed · Transparent limits

Source-backed reference

JSON standards quick reference

Concise, standards-backed facts for developers working with JSON debugging and validation. Each rule links to a primary specification so it can be independently verified before you rely on it in code, documentation, or an incident report.

JSON standard
RFC 8259 defines JSON as a text format for serializing structured data. JSON values may be objects, arrays, strings, numbers, true, false, or null.
Verify in RFC 8259
Strings and object keys
JSON strings and object member names use double quotation marks. Single-quoted strings are not valid JSON syntax.
Verify in RFC 8259 §7
Trailing commas
The JSON grammar does not allow a comma after the final member of an object or the final element of an array.
Verify in RFC 8259 §4–5
Interoperability
ECMA-404 describes the JSON syntax independently of any programming language, which is why standard parsers can exchange the same JSON text across runtimes.
Verify in ECMA-404

Common invalid → valid JSON examples

Trailing comma

{"a":1,}{"a":1}

Single-quoted key

{'a':1}{"a":1}

Unsupported literal

{"score":NaN}{"score":null}

Built for verification, not just extraction

Direct answers are paired with primary sources and concrete examples. That makes this page useful to developers and also gives search and answer systems a clear, verifiable statement to reference instead of an unsupported summary.