araç köşesi

JSON to Excel

Turn JSON into a real .xlsx file; numbers become number cells, nested fields open into columns and the header row stays frozen

Your data stays with you. Conversion happens inside the browser; nothing is sent to a server.

How it works

The usual case: a web service, a store admin panel or a developer handed you data as JSON, and you want it in Excel to filter, total or send to your accountant. Paste the JSON into the left pane; a preview of the table appears on the right, and Download gives you a real .xlsx workbook. If the root is an array, each item is a row. If the root is an object, the tool finds the first list of records inside it: in a response like {"orders": [...], "page": 1} the rows come from "orders" and the result line says so. With no list at all, the object becomes a two-column key/value table. A nested field such as "address": {"city": "Boston"} becomes an "address.city" column by default. Values keep their type: the total 1250.5 is a number cell, shows as 1250.5 in Excel's General format and adds up with SUM; true and false become TRUE and FALSE; the ZIP code "02134" is a JSON string, so it stays text and keeps its leading zero. Simple lists like tags are joined into one cell as "rush, gift". The first row holds the column names and stays visible while you scroll.

This tool is also known as json to excel, json to xlsx, convert json to excel, json to excel converter, open json in excel.

What is JSON?

JSON is the text format web services and apps use to exchange data: curly braces mark an object ({"name": "Coffee"}), square brackets a list ([1, 2]), and values can be text, numbers, true/false or null, nested inside each other. A .json file you export from an API or a dashboard is usually a list of records, and that shape maps naturally onto the rows and columns of a sheet.

What is XLSX?

XLSX is the workbook format Excel has used since 2007: a ZIP archive holding XML files for sheets, styles and shared text. Unlike CSV, it stores each cell's type (number, text, boolean, date), column widths and frozen rows inside the file. That is why the same file opens with the same values on any computer; the region setting only changes how numbers are displayed.

Should you convert JSON to CSV or to Excel?

CSV is plain, typeless text: Excel re-reads the decimal mark and dates according to the computer's region when it opens it, and drops leading zeros; in return every program can read it and it is ideal for loading into a database. XLSX keeps types: numbers stay numbers, text stays text, the header row is frozen, and the file gives the same values in any language version of Excel. Choose XLSX when a person will review, total or filter the data in Excel, and CSV when it goes into another program or system.

Why .xlsx instead of CSV: numbers, zeros and the 15-digit limit

You can also convert JSON to CSV and open that in Excel, but CSV has no types. Excel guesses when it opens the file: it drops the leading zeros of a ZIP code like 02134 or a product code like 00123, may read 3-4 as a date, and in European regions does not read 1250.5 as a number at all. This tool writes .xlsx directly, so each cell's type is stored in the file: the JSON number 1250.5 is a number cell, and "02134", being a quoted JSON string, is a text cell that keeps its zero.

Excel keeps only the first 15 digits of a number and turns the rest into zeros. A long order or card number written without quotes in the JSON would lose its last digits as a number cell. The tool writes whole numbers of 16 or more digits as text and tells you how many there were in the result line. If your browser exposes the JSON source text (recent Chrome and Edge do, for example), the digits are copied exactly as in the JSON; otherwise the value JavaScript already rounded is written as text.

  • 1250.5 → number cell (1250.5 in General format)
  • true → TRUE (boolean cell)
  • null → empty cell
  • "02134" → text, leading zero kept
  • 12345678901234567890 → text (Excel zeroes digits after the 15th)

Nested data: separate columns or JSON text?

"Separate columns" is for reporting: "address": {"city": "Boston", "zip": "02134"} becomes two columns, "address.city" and "address.zip", so you can filter by city or build a PivotTable. A field missing from one record leaves an empty cell in that row; the column is still created.

"JSON text in the cell" helps when the structure must not be lost: the nested object goes into one cell as the text {"city":"Boston","zip":"02134"} and the column count stays short. On deep data, or records that each carry different fields, the first setting can produce hundreds of columns; if Excel's limit of 16,384 columns is exceeded, the tool makes no file and points you to this setting. Lists that contain objects (order line items, for example) go into one cell as JSON text under both settings.

Frequently asked questions

How do I convert a JSON file to Excel?

Open the JSON file in Notepad, TextEdit or any text editor, copy its contents, paste them into the left pane on this page and click Download. The .xlsx file opens directly in Excel, LibreOffice or Google Sheets; each record is a row and each field a column.

Why are my JSON numbers not showing as text in Excel?

Because this tool writes a real .xlsx, not a CSV, and puts numbers in number cells. A value written without quotes in the JSON, like 1250.5, can be used in formulas; a quoted "1250.5" is text in the JSON and stays text in Excel. That choice was made by whatever produced the JSON; the tool does not change it.

My API response looks like {"data": [...]}. Will the rows come out right?

Yes. When the root is an object, the tool looks for the first list of records inside it and takes the rows from there; the result line says rows taken from the "data" list. Fields outside that list, such as a page number or a total count, do not go into the table. If there are several lists, the one on the highest level that comes first is used.

Is my data sent to a server?

No. Reading the JSON and writing the Excel file both happen inside your browser; a customer list or order history you paste never leaves this page. Once the page has loaded, the conversion works even if your connection drops.