Celtrim

Convert Excel to JSON

Turn a spreadsheet into an array of JSON objects: the header row becomes the keys, numbers stay numbers, and every sheet is kept.

Drop an Excel or CSV file here

.xlsx, .xlsm, .csv, or .tsv

Free · no sign-up · processed on your device

Only have a PDF? Convert PDF to Excel with StatementConverterAI.

How it works

  1. 01

    Drop the Excel or CSV file

    An .xlsx, .xlsm, .csv, or .tsv file is read in your browser. The separator of a CSV is detected, so semicolon exports from European systems work too.

  2. 02

    Check the table

    The preview shows the rows with the first row as the header. Untick it if your sheet has no header and you want arrays instead of objects.

  3. 03

    Download the JSON

    One sheet gives an array of objects. Several sheets give one object keyed by sheet name. Pretty-printed or compact, your choice.

An API, a config file, or a test fixture wants JSON, and the data lives in a spreadsheet someone keeps by hand. Copying it across row by row is how typos get into production. This converter reads the workbook in your tab, uses the header row as keys, keeps numbers and true/false typed instead of quoting everything, and shows you the table before it writes the file.

How the sheet becomes JSON

The header row
Each column heading becomes a key. An empty heading becomes column_3 and a repeated one gets a number, so no value is dropped and no two keys collide.
Numbers and booleans
A cell holding 42 becomes 42, not "42", and TRUE becomes true. Turn off Numbers as numbers if ids like 007 must stay strings.
Dates
Dates are written as ISO strings such as 2026-01-05, which every language parses the same way, instead of Excel serial numbers like 46027.
Several sheets
A workbook with Customers and Orders becomes { "Customers": [...], "Orders": [...] }, one array per sheet, in the order of the tabs.

Related conversions

Common questions

How do I convert Excel to JSON?
Drop the .xlsx onto the converter above. The first row is used as keys and every following row becomes an object. Download the result as a .json file; nothing is uploaded on the way.
Can I convert CSV to JSON here too?
Yes. Drop a .csv or .tsv instead of a workbook. The separator is detected automatically and the result is the same array of objects.
What if my sheet has no header row?
Untick First row is a header. Each row then becomes an array of values instead of an object, which is the honest shape for data without column names.
Are numbers written as numbers or strings?
As numbers, as long as Numbers as numbers is on. Turn it off if the sheet holds ids, phone numbers, or codes with leading zeros that must stay strings.
What happens to formulas?
The JSON gets the value each formula last calculated, the number the sheet showed when it was saved, not the formula text.
Is my spreadsheet uploaded?
No. The workbook is read and the JSON is written by JavaScript in your browser. The file never leaves your device.