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
Handles nested JSON automatically
RFC 4180 compliant output
Works fully offline in your browser
No file size cap from the tool
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.
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.
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.
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.
Step-by-step guide to convert json to csv:
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.
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.
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.
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.
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.
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.
Get better results with these expert suggestions:
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".
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.
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.
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.
More use-case guides for the same tool:
Other tools you might find useful:
Open JSON to CSV to review its free limits and processing method.
Open JSON to CSV →Free tier · No account needed · Transparent limits
Move through the JSON problem with connected tools and references instead of treating formatting, parser errors, schema checks and API debugging as unrelated jobs.
Source-backed 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.
Trailing comma
{"a":1,}{"a":1}Single-quoted key
{'a':1}{"a":1}Unsupported literal
{"score":NaN}{"score":null}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.