Input Data (JSON)
Output Data (CSV)
The Complete Technical Guide to Converting JSON into Spreadsheets
Everything a business analyst, data engineer, or developer needs to know about transforming JSON data into clean, importable CSV files.
📄 Visual Example: From Nested JSON to a Flat CSV Row
Nested JSON Input
Flattened CSV Output
Note how the nested address object becomes two flat columns: address.city and address.zip. This is called dot notation flattening.
JSON (JavaScript Object Notation) is the dominant format for transmitting data between web services, APIs, and databases. It is hierarchical by nature - meaning a single JSON record can contain nested objects, arrays of arrays, and deeply layered fields. A CSV (Comma-Separated Values) file, by contrast, is a flat, two-dimensional table: rows and columns, nothing more. The fundamental challenge of converting JSON to CSV is bridging these two completely different data shapes. A simple JSON record with a single level of key-value pairs converts trivially. But real-world data from APIs - user records with nested addresses, product catalogs with nested attributes, analytics events with nested metadata - requires a deliberate flattening strategy before the data can live inside a spreadsheet.
-
The core difficulty is that JSON is a hierarchical format while CSV is a flat, tabular format. JSON allows objects to be nested inside other objects to an arbitrary depth, and it allows a field to contain an array of sub-items. A spreadsheet has no concept of nesting - it only understands rows and columns of scalar values (text, numbers, dates).
For example, consider a JSON field like
"tags": ["analytics", "finance", "reporting"]. There is no single obvious way to represent this in a CSV row. You could join the values into one cell, you could create three separate columns (tags.0,tags.1,tags.2), or you could explode the array into multiple rows. Each strategy has trade-offs, and the right choice depends on how you plan to analyze the data downstream.This tool handles the most common and universally useful strategy: recursive dot-notation flattening for nested objects. Arrays of primitive values (like numbers or strings) are joined into a single cell. This produces a clean, importable spreadsheet in the vast majority of real-world use cases.
-
Flattening is the process of taking a nested JSON object and collapsing it into a single level of key-value pairs, where the new keys use dot notation to represent the original hierarchy. For instance, if your JSON object has a structure like
{ "user": { "profile": { "city": "Austin" } } }, flattening it produces a single key:user.profile.citywith the value"Austin".The algorithm works recursively. Recursion means the function calls itself. When the flattener encounters a value that is itself an object, it calls itself again on that nested object, adding a prefix to all the resulting keys. It keeps doing this until it reaches a scalar value (a string, number, boolean, or null) that can be written directly into a spreadsheet cell.
This is the industry-standard approach used by data engineering tools like Apache Spark, Python pandas, and AWS Glue when ingesting semi-structured JSON data into relational databases and data warehouses like Snowflake, Redshift, and BigQuery.
-
In Microsoft Excel: Go to the Data tab and click From Text/CSV. Select your downloaded .csv file. Excel will launch its import wizard. Confirm that the delimiter is set to Comma (or Tab, if you chose TSV). Click Load to import your data into a new sheet. If you have a file with long numeric strings like zip codes or phone numbers, format those columns as Text in the wizard first to prevent Excel from auto-converting them to scientific notation.
In Google Sheets: Open a new Google Sheets document. Go to File - Import, click the Upload tab, and drag your .csv file into the dialog. Set the import location and separator type (Comma or Detect automatically), then click Import Data. Your JSON data will appear as a clean, formatted table with column headers derived from the original JSON field names.
Tip for European users: If your locale uses a comma as the decimal separator (e.g., 1.234,56 instead of 1,234.56), choose the Semicolon delimiter option in this tool before exporting. This prevents numeric values from being misinterpreted when opening the file in regional spreadsheet software.
-
The text
[object Object]is what JavaScript displays when you attempt to convert a complex object directly to a string without serializing it first. It means a converter tried to write a nested object or array directly into a CSV cell without flattening it first.This happens when a JSON-to-CSV tool does a naive conversion: it iterates over the top-level keys and writes the values, but when a value is itself an object (not a string or number), JavaScript's default string coercion produces the meaningless placeholder
[object Object]instead of the actual data.The solution is to enable the Flatten Nested Objects toggle in this tool. This activates the recursive flattening algorithm, which descends into every nested object and extracts its values into properly named columns. If you intentionally want to keep a nested object as a single cell value, you can disable flattening and the tool will serialize the nested object as a JSON string (e.g.,
{"city":"Boston","zip":"02101"}) which is at least readable and parseable, unlike[object Object]. -
A delimiter is the character used to separate individual column values on each row of your exported file. The most common delimiter is the comma, which is what gives CSV (Comma-Separated Values) its name. When a spreadsheet program opens a CSV, it reads each line and splits it at every comma to determine where one column ends and the next begins.
Comma (CSV) is the universal default and works with virtually every tool: Excel, Google Sheets, Python, R, SQL importers, Salesforce, HubSpot, and virtually all data platforms. Choose this unless you have a specific reason not to.
Tab (TSV) produces a Tab-Separated Values file. This is useful when your data contains a large number of natural commas - for example, if you are exporting address fields, product descriptions, or notes that frequently contain commas. Tabs are far less common inside human-readable data, so they serve as a cleaner separator in those cases.
Semicolon is the standard in countries that use the comma as a decimal separator (most of continental Europe). German, French, Italian, and Spanish locales of Microsoft Excel expect semicolons in CSV files by default. If your colleagues or clients are in Europe and report that your CSV looks like a single column of data when they open it, switch to Semicolon.
For production data pipelines, this browser-based tool is ideal for rapid validation and one-off exports. When you need to process hundreds of megabytes or gigabytes of JSON data automatically, consider Python libraries like pandas (with json_normalize), Node.js utilities like json2csv, or cloud-native ETL services like AWS Glue, Google Dataflow, or Azure Data Factory. However, for everyday business tasks - exporting an API response, converting a database dump, or preparing a dataset for a pivot table - this in-browser converter handles the job instantly, without installing any software or trusting a third-party server with your data.