KeroTools

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. 1

    Drop your workbook

    Add an .xlsx or .xls file — drag it onto the page or click to browse.

  2. 2

    Choose the sheet and header row

    Point at the sheet you want and confirm which row supplies the keys.

  3. 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

AspectThis toolOnline convertersExcel plus a script
Data sent to a serverNeverUsually yesNo
Needs Excel installedNoNoUsually yes
Reads .xls as well as .xlsxYesVariesYes
Row limitDevice memory onlyOften cappedNone
Account or signupNot neededOften requiredNot needed
PriceFreeFree / paid tiersLicence 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.