How does a spreadsheet become JSON?
An Excel workbook is not a text format. A .xlsx file is a ZIP archive of XML parts, so unlike JSON or CSV there is nothing to paste — the file has to be opened and unpacked before a single cell can be read. That is why this is the one tool here that takes a file instead of a text box.
This converter opens the workbook in your browser, lets you choose a sheet, and turns its rows into a JSON array of objects, a plain table, or a Markdown table. The parsing library is fetched only when you actually open a file, so visiting the page costs nothing extra.
Features
- Every sheet, without re-reading the file
- The workbook is parsed once and all sheets are kept in memory, so switching sheets is instant instead of re-parsing a 20 MB file on every click.
- Three outputs from one read
- JSON for an API payload or fixture, a table for reading, and a Markdown table for a README or a pull request description.
- Types, or not
- Numbers and booleans can become real JSON numbers and booleans, or every cell can stay a string when the receiving code does its own parsing.
- The file stays on your machine
- Reading and converting happen in the browser and this page has no backend, so a spreadsheet with customer data never leaves your computer.
- Files that are not spreadsheets are named
- A CSV renamed to .xlsx is the most common failure, and it is reported as that rather than as a generic parse error — with a pointer to the CSV tool.
How to use
- 1
Open the file
Drop an .xlsx or .xls file onto the page, or choose one. Files up to 20 MB are read.
- 2
Pick the sheet
A workbook with several sheets shows a selector — the first sheet is used by default.
- 3
Confirm the header row
Keep "first row is a header" on so the JSON keys come from the column names.
- 4
Copy the output
Switch between JSON, table and Markdown, then copy the one you need.
Excel dates are numbers, and one of them does not exist
A date in Excel is stored as a count of days since 30 December 1899, not as a date. 45292 is 1 January 2024. Whether a cell is shown as a date depends on its number format, which lives separately from the value — so a column that looks like dates on screen can arrive as plain integers, and there is no way to recover the intent from the number alone.
The offset is also off by one for a reason that is now permanent. Excel treats 1900 as a leap year and accepts 29 February 1900, a day that never existed. Lotus 1-2-3 had the bug first and Excel copied it deliberately to stay compatible, and it has been kept ever since. Every date after that point carries the extra day, which is why the epoch is 30 December rather than 31 December 1899.
The practical consequence: check a date column before trusting it. If the values arrive as five-digit integers, convert them on your side with the epoch above, and be aware that any date before March 1900 is off by one day.
Frequently asked questions
How do I convert an Excel file to JSON?
Open the .xlsx file here, keep the header row on, and the output is an array of objects — one per row, with keys taken from the column names. That is the shape most APIs and test fixtures expect.
Is my spreadsheet uploaded anywhere?
No. The file is read in your browser and this page has no backend. Nothing is sent, which is the difference that matters when the sheet holds customer or payroll data.
Why do my dates come out as numbers like 45292?
Because that is how Excel stores them. See the section below — a date cell is a day count, not a date, and the file does not always say which cells are dates.
My .xlsx file will not open. Why?
It is most likely a CSV that was renamed. A real .xlsx is a ZIP archive; a CSV with the extension changed is still plain text and cannot be unpacked. Open it in the CSV tool instead — it will read fine there.
Can it handle a workbook with several sheets?
Yes. Every sheet is listed and you can switch between them. The workbook is only parsed once, so switching is immediate.
What is the file size limit?
20 MB. Beyond that the browser tends to stall while unpacking and parsing, and a stalled tab is worse than a clear limit.
Does .xls work too, or only .xlsx?
Both open. They are different formats — .xls is the older binary one and .xlsx is the ZIP-and-XML one introduced with Office 2007 — but you do not have to convert first.
Specifications this follows
- ECMA-376 — Office Open XML File Formats — The specification behind .xlsx — the ZIP-and-XML format this tool unpacks.
- Microsoft — Date systems in Excel — The 1900 and 1904 date systems, and the serial numbers described above.
- RFC 8259 — The JSON Data Interchange Format — The output format, including why long numeric IDs are safer as strings.
Related tools
- CSV to JSON ConverterTurn a spreadsheet export into a JSON array, with numbers and booleans typed correctly.
- CSV Viewer & ConverterOpen delimited data as a table, guess the delimiter, and convert it to JSON.
- JSON ViewerValidate, format, and explore JSON as a tree or a table. Large API responses stay foldable.