Convert Excel to JSON for Developers
Turn an Excel sheet into structured JSON data for any app or API — processed locally in your browser.
Drop your file here or click to browse
Excel files (.xlsx, .xls)
Your workbook stays on your device
Nothing to delete afterwards
Safe for workbooks with hidden sheets
Works in every modern browser
How it works
- 1
Drop your workbook
Add an .xlsx or .xls file — drag it onto the page or click to browse.
- 2
Choose the sheet and header row
Point at the sheet you want and confirm which row supplies the keys.
- 3
Copy or download the JSON
Take the array straight into a request body, a seed file, or a test fixture.
Why use this tool
Reads the workbook directly
No “save as CSV” step in between, so the encoding and separator questions never arise at all.
Stored values, not displayed text
A cell formatted as currency or a percentage yields the underlying number your code can actually use.
Pick your sheet
A workbook is many tables; you choose which one becomes the array instead of getting whichever was open last.
Nothing is uploaded
The workbook is read in your browser — spreadsheets full of staff or client data never reach a server.
No row limit
Your device memory is the only ceiling, not a free-tier row cap.
Free, no account
No signup, no watermark, no cap on how many workbooks you convert.
A workbook is not a table, and JSON needs a table
This is the first real obstacle, and it has nothing to do with formats. A CSV file is a table by definition — one rectangle, nothing else in it. An Excel workbook is a document: several sheets, a title in the merged cell across the top, a company logo floating above the data, two blank rows, then the actual header, then the rows, then a totals line at the bottom that is not a record at all. A converter that assumes row one holds the headers will happily turn your report title into a single column name and every real heading into data. So the conversion begins with two decisions a person has to make: which sheet, and which row actually starts the table. Get those right and the rest is mechanical. Get them wrong and you get valid JSON describing nothing.
What a cell shows and what a cell holds are different things
This is the trap that catches people who have only ever worked with CSV. In Excel, formatting is a layer painted over the value, not the value itself. A cell reading `€1.234,50` holds the number 1234.5; a cell reading `15%` holds 0.15; a cell reading `1,2M` might hold 1204817. If you convert what is displayed you get strings that need cleaning; if you convert what is stored you get numbers your code can use, but a percentage arrives as a fraction and somebody will be surprised. Neither behaviour is wrong, and this tool gives you the stored value because that is the one you can compute with. What matters is knowing which you received before the number goes into an invoice or a report.
Dates are stored as numbers, and this is where conversions break
Excel does not store dates as dates. It stores them as a count of days since the beginning of 1900, so `15/03/2024` is really the number 45366, and the calendar you see is a display format sitting on top. That is why a date column so often arrives in JSON as a run of five-digit numbers that look like nothing at all. There is a further wrinkle that has survived for decades: Excel treats 1900 as a leap year, which it was not, so dates before March 1900 are off by one — a compatibility bug preserved on purpose since the 1980s. Then there are the dates Excel never recognised as dates, which sit in cells as plain text and convert as strings while everything around them converts as numbers, giving you one column with two types in it. Check a date column before trusting it. It is the single most common place this conversion quietly goes wrong.
Formulas, merged cells, and the other things that do not survive
A cell containing a formula holds two things: the expression and the last computed result. JSON can only carry the result, which is usually what you want — but the result is whatever the workbook cached the last time it was calculated, so a file edited by a tool that never recalculated can hand you a stale number that no longer matches its own inputs. Merged cells lose even more. When four cells are merged, the value lives only in the top-left one and the other three are genuinely empty, so a merged category label spanning several rows produces a value in the first row and blanks beneath it. Conditional formatting, cell colours, comments, and data-validation lists carry meaning for the person reading the sheet and have no representation in JSON at all. If a colour is doing the work of a column in your workbook, add the real column before converting.
Why go straight to JSON instead of exporting a CSV first
The habitual route is to save the sheet as CSV and convert that. It works, and it adds two failure points for no benefit. The export step is where encoding damage happens — Arabic and accented text turning to question marks — and where the separator argument begins, because a locale using the comma as its decimal mark exports semicolons instead. Reading the workbook directly skips both: the file is a structured document with its text already in Unicode and its numbers already numbers, so there is no delimiter to guess and no character set to get wrong. The CSV round trip is worth taking only when something in your pipeline genuinely needs a CSV, in which case that conversion is a tool of its own.
Why converting locally matters for this kind of file
Spreadsheets accumulate more than the sheet you are looking at. A workbook routinely carries sheets somebody hid rather than deleted, defined names pointing at old ranges, comments from a review thread, and file properties naming the author and the company. Payroll figures, client lists, and pricing that was never meant to leave the building sit in those places long after the visible sheet was cleaned up. A hosted converter receives the entire file, hidden sheets included. This tool runs entirely in your browser: the workbook is read from disk into the page and the JSON is written back without a single network request carrying it, which you can confirm in the Network tab of your developer tools. For a file type this good at hiding things, that difference is worth having.
Common mistakes to avoid
- Assuming row one holds the headers. Workbooks routinely open with a title, a logo, and blank rows above the real header — point at the right row or every heading becomes data.
- Trusting a date column without looking at it. Excel stores dates as day counts, so dates often arrive as five-digit numbers, and any date it never recognised arrives as text in the same column.
- Converting a sheet where a colour or a bold font carries meaning. Formatting has no representation in JSON; if a highlight marks a status, add a real column for it before converting.
- Forgetting that merged cells are mostly empty. A label merged across four rows exists only in the first one, so the other three convert as blanks rather than repeating the value.
- Uploading a workbook to an online converter. The file carries hidden sheets, comments, and author details you never saw; convert locally instead.
How it compares
| Aspect | This tool | Online converters | Excel plus a script |
|---|---|---|---|
| Data sent to a server | Never | Usually yes | No |
| Needs Excel installed | No | No | Usually yes |
| Reads .xls as well as .xlsx | Yes | Varies | Yes |
| Row limit | Device memory only | Often capped | None |
| Account or signup | Not needed | Often required | Not needed |
| Price | Free | Free / paid tiers | Licence plus your time |
Features
Both .xlsx and .xls
The modern zipped XML format and the older binary one are both read.
Multi-sheet workbooks
Every sheet in the file is listed so you can convert the one you actually meant.
Array-of-objects output
The shape almost every API and library expects, with the header row supplying property names.
Formatted numbers unwrapped
Currency symbols, thousands separators, and percent signs are display, not data — you get the number.
UTF-8 preserved
Accented, Arabic, Turkish, and other non-ASCII text passes through unchanged.
Handles large sheets
Tens of thousands of rows convert without an upload queue.
Nothing to install
No Excel licence, no runtime, no dependencies — it runs on the web page.
Arabic and RTL ready
Full interface in eight languages, including right-to-left Arabic.
Secure by default
Served over HTTPS, with no file tracking and no third-party upload.
Who uses it
Developers
Turning a client’s workbook into seed data or a fixture without a CSV export in between.
Data engineers
Getting a manually maintained sheet into a pipeline that speaks JSON and nothing else.
API integrators
Building a bulk-update request body from a pricing or stock workbook.
QA engineers
Converting a test-case spreadsheet into a fixture a suite can load directly.
Frequently Asked Questions
No. The conversion runs entirely in your browser — your data is never uploaded, stored, or shared.
Yes. Every row and column is converted faithfully; the first row becomes the field names.
Yes — completely free, with no account, no watermark, and no limit on how many files you convert.