JSON to Excel

Paste JSON and download an Excel file. Nested objects become columns, and lists of objects get their own sheets. It runs in your browser, so your data never leaves your device.

Pasted text or .json, .jsonl and .txt files, up to 50 MB

Paste or choose a file. You can also drop a file here.

Lists of objects

Your preview will appear here after conversion.

How it works

This JSON to Excel converter turns an API response, an export or a local file into an .xlsx workbook. It runs in a Web Worker in your browser, so the JSON is not uploaded, there is no daily limit, and you don’t need an account. Check the preview of each sheet, then download the file.

What each JSON shape becomes

Your JSONIn the workbook
An array of objectsOne row per object, under a header row. Columns include every key seen across the objects, in first-seen order. Missing values leave empty cells.
A nested objectColumns named with dots, such as shipping.city and shipping.address.zip.
A list of objects inside a recordWith Separate sheets, a sheet named after the key, such as items. Its first column gives the row it belongs to, matching the # column on the parent sheet. With Numbered columns, columns such as items.1.sku and items.2.sku on the same sheet.
A list of simple valuesOne cell, with the values separated by commas: red, blue. A list that holds other lists keeps its JSON text.
One object at the top levelOne row. Lists of objects inside it go on their own sheets, so a response such as {"users": […]} gives you a users sheet.
An array of arraysEach inner array becomes a row as it is, with no header row added.

Numbers and true or false keep their types, so you can sum, sort and filter them. Text stays text, even when it looks like a number, so ZIP codes and phone numbers keep their leading zeros. Dates written as 2024-01-15, 2024-01-15 14:30 or 2024-01-15T14:30:00Z become Excel dates; a Z time stays in UTC. A time with an offset, such as +02:00, stays as text so its clock time doesn’t change. Whole numbers with more than 15 digits, such as order IDs, are saved as text, because Excel keeps only 15 significant digits. Null leaves an empty cell.

Choose Separate sheets when records contain lists, such as orders with line items. Each record stays on one row, and the list items go on their own sheet, which you can match back with the # columns using XLOOKUP or a pivot table. Choose Numbered columns when the lists are short and you want everything on one sheet. Every sheet has a filter on its header row and column widths that fit its first rows.

You can paste text or choose a .json, .jsonl or .txt file up to 50 MB. JSON Lines files, with one record per line, become one row per line. Excel allows 1,048,576 rows and 16,384 columns per sheet and 32,767 characters per cell. You’ll see a message if a sheet would be too large, and longer text is cut to fit, with a note. Large files take longer on a phone and can run out of memory there; a computer handles more. The preview shows the first 100 rows and 30 columns of each sheet, and the download has everything.

If the JSON can’t be parsed, the message points to a line and column and suggests a fix. Common causes are trailing commas, single quotes, unquoted keys and comments.