Excel to JSON Converter
Turn a spreadsheet into JSON that code can use straight away. Pick a sheet, decide on the shape of the output, and get an array of objects keyed by your column headings, with numbers, booleans and dates kept as proper types.
- Runs in your browser
- No sign-up
- Free to use
How to use Excel to JSON
- Drop an Excel, OpenDocument or CSV file.
- Choose the sheet, or export all sheets at once.
- Select the output shape and options; the JSON updates immediately.
- Copy the JSON or download it as a .json file.
Excel to JSON features
Three output shapes
An array of objects, an array of arrays, or an object with one array per column.
Typed values
Numbers stay numbers, TRUE and FALSE become booleans and dates become ISO strings; switch it off to get the text exactly as displayed.
Clean keys
Empty headings get a column name and duplicate headings are numbered, so no data is overwritten.
All sheets in one object
Export the whole workbook as an object keyed by sheet name.
Instant preview
The result is regenerated as you change options, without re-reading the file.
Runs in the browser
The spreadsheet is not uploaded.
When to use Excel to JSON
- Seeding a database or an application with data maintained in a spreadsheet.
- Creating fixtures and mock API responses for development.
- Converting a translation or configuration sheet into a JSON file for a website.
- Feeding spreadsheet data into a script or a charting library.
Excel to JSON FAQ
How does the first row become keys?
In the “array of objects” shape, each cell of the first row is used as a property name and every following row becomes one object. A heading that is empty is replaced by column_N, and a heading that occurs twice gets a number, for example name and name_2.
How are dates converted?
With typed values on, a date cell becomes an ISO 8601 string such as 2024-03-15, or a full timestamp when the cell contains a time. JSON has no date type, and ISO strings are understood by practically every programming language. With typed values off, you get the text as formatted in the sheet.
What happens to formulas?
The calculated result is exported. The formula text itself is not included.
What do empty cells become?
Empty strings by default, so every object has the same set of keys. Enable “Empty cells as null” if your code distinguishes missing values from empty text.
Can I convert a CSV file too?
Yes. CSV and TSV files are accepted and treated as a workbook with one sheet. All values in CSV are text, so numbers appear as strings unless you post-process them.
Is there a limit on file size?
Files up to 50 MB are accepted. Very large sheets produce very large JSON, which is slow to display; in that case choose the minified output and download it.
From rows and columns to objects
Spreadsheets and JSON organise data differently. A sheet is a grid in which the meaning of a column lives in its heading. JSON is a tree in which every value carries its name with it. The standard translation treats each row as a record: the heading of each column becomes a key, and the row becomes an object. A table with a thousand rows turns into an array of a thousand objects with identical keys, which is the form most code expects.
The other shapes exist for cases where that form is wasteful or unsuitable. An array of arrays repeats no key names and preserves the grid exactly, headings included, which suits charting libraries and compact storage. An object of columns groups all values of a column together, which is convenient for statistics and for data-frame style processing.
Types deserve attention. A spreadsheet knows that a cell holds a number or a date even when it displays it with a currency sign or in a local date format. Exporting the underlying value keeps arithmetic possible on the other side, whereas exporting the displayed text keeps the appearance. Neither is right in every case, which is why the choice is yours. Dates in particular should be exported in ISO form, since a string like 03/04/2024 means different days in different countries.
Headings are worth cleaning in the spreadsheet before conversion. Short, consistent names without spaces make far better keys than “Customer Name (billing)”. The converter makes any heading usable, but it cannot make it pleasant to type in code.