Excel to JSON Converter
Convert XLSX, XLS, ODS and CSV sheets to clean JSON — or turn a JSON array back into an Excel file. Everything runs locally in your browser.
Drop an Excel, ODS or CSV file here
.xlsx · .xls · .ods · .csv — or click to browse (max 20 MB)
Or drop a .json file
max 20 MB
🔒 Files are processed locally in your browser — nothing is uploaded.
Frequently Asked Questions
How do I convert an Excel file to JSON?
Drop your .xlsx, .xls, .ods or .csv file into the tool, pick the sheet you want and choose whether the first row contains column headers. The JSON is generated instantly and you can copy it or download it as a .json file.
Why do dates from Excel show up as numbers like 45292?
Excel stores dates as serial numbers counting days since 1900-01-00. This converter reads the cell format and turns real date cells into ISO 8601 strings such as 2024-01-01, so you get readable dates instead of serial numbers.
Can I convert JSON back to an Excel spreadsheet?
Yes. Open the JSON → Excel tab, paste or upload an array of objects and download a .xlsx file. Nested objects are flattened into dot-notation columns (address.city) and arrays are stored as JSON text in a single cell.
How do I keep leading zeros in ZIP codes or phone numbers?
In Excel, format the column as Text before typing values, or the zeros are lost when the file is saved. For CSV input, turn off "Detect numbers and dates" so every value is kept exactly as written in the file.
Is my spreadsheet uploaded to your servers?
No. The file is read and converted entirely in your browser with the SheetJS library. Nothing is uploaded, stored or logged, so it is safe to use with confidential business data.
Is there a size limit for Excel or JSON files?
Files up to 20 MB are supported. Large workbooks with hundreds of thousands of rows work, but conversion speed depends on your device's memory, and only the first rows are shown in the preview.
How the Excel to JSON Converter Works
Spreadsheets are where business data lives, but APIs, config files and front-end apps speak JSON. This tool parses your workbook with SheetJS directly in the browser, reads the sheet you select and turns every row into a JSON value. With First row is header enabled you get an array of objects whose keys are the column titles — the format most APIs and databases expect. Disable it to get an array of arrays, which keeps the exact grid and is handy when the sheet has no header row or duplicated column names.
- Drop an
.xlsx,.xls,.odsor.csvfile. - Choose the sheet, the header mode and how empty cells are handled (omitted or written as
null). - Copy the result or download it as a
.jsonfile.
The reverse direction works the same way: paste a JSON array, check the preview of the first 20 rows and download a real .xlsx workbook that opens in Excel, LibreOffice and Google Sheets.
Common Use Cases
- Seeding databases and mock APIs — product owners keep fixtures in a spreadsheet; developers import them as JSON.
- Translations and content — export a sheet of i18n strings to a JSON locale file.
- Reporting — turn an API response into an Excel file that non-technical colleagues can filter and chart.
- Data migration — inspect a legacy .xls export as JSON before writing an import script.
Spreadsheet Gotchas to Watch For
- Dates are serial numbers
Excel stores 15 March 2024 as 45366 — the number of days since 1900, plus a fraction for the time. A naive converter outputs that number. This tool reads the cell format and writes ISO 8601 strings (2024-03-15 or 2024-03-15T09:30:00) using the date exactly as shown in the sheet, without time-zone shifts.
- Leading zeros disappear
ZIP codes, phone numbers and product codes like 00123 become 123 when Excel treats them as numbers. Format those columns as Text in Excel, and for CSV input disable number detection so values are kept verbatim.
- Merged cells hold one value
A merged range stores its value only in the top-left cell; the other cells are empty. Expect blanks (or null) in the remaining rows and columns, and unmerge or fill down before converting if you need the value repeated.
- CSV and formula injection
A text value starting with =, +, - or @ can run as a formula when a CSV is opened in Excel. The JSON → Excel export writes every string as a text cell, never as a formula, so imported data cannot execute.
- Duplicate or blank headers
Two columns called "Name" would overwrite each other as object keys. SheetJS renames duplicates (Name, Name_1) and fills blank headers with __EMPTY, but cleaning the header row first gives nicer keys.
How JSON Is Mapped to Excel Columns
Spreadsheets are flat, JSON is not. Each object becomes a row and the union of all keys becomes the header row, in the order they first appear. Nested objects are flattened with dot notation, so{"user":{"name":"Ana"}} produces a user.name column. Arrays are stored as JSON text in one cell, and missing keys leave the cell empty. Excel limits a single cell to 32,767 characters and a sheet to 1,048,576 rows; the converter warns you when your data exceeds them.
Related Tools
- Excel to CSV Converter — export a sheet as comma, semicolon or tab separated text.
- CSV to Excel Converter — build an .xlsx workbook from CSV data.
- CSV ⇄ JSON Converter — quick conversion for plain-text CSV.
- JSON Formatter — validate and pretty-print the generated JSON.
- JSON Viewer — explore large JSON files as a collapsible tree.