Convert Excel to JSON
Any sheet, any size,
types preserved.
Free Excel to JSON converter. Upload any .xlsx or .xls file, pick the sheet, choose your output shape. Powered by SheetJS. Runs entirely in your browser — your file never leaves your device.
Three steps — upload your spreadsheet and get structured JSON in seconds.
Drop or select any .xlsx or .xls file. SheetJS reads the binary format directly in your browser — no upload to any server. If the workbook has multiple sheets, a dropdown appears so you can choose which one to export.
Select your JSON shape: array of objects (standard), keyed object, array of arrays or column arrays. Set the header row if your sheet has metadata rows at the top, and toggle type coercion to convert Excel dates to ISO 8601 strings.
Click Convert and copy the JSON to clipboard or download a .json file. The output is valid JSON ready for any API, database, JavaScript app or pandas read_json().
What happens when SheetJS reads your .xlsx file.
An Excel .xlsx file is a ZIP archive containing XML documents — one per worksheet, one for shared strings, one for styles, and several others. SheetJS unzips the archive in memory, parses the XML, and reconstructs the cell data with their original types: numbers stay as numbers, date serials are converted to JavaScript Date objects, and strings are decoded from the shared strings table.
Excel date serials are a common source of confusion. Excel stores dates as the number of days since 1 January 1900 — so the date 15 March 2024 is stored as the number 45366. With type coercion enabled, JSONshift converts these serials to ISO 8601 strings like 2024-03-15 — a format that every JSON consumer, database and programming language understands natively.
Multi-sheet workbooks are handled by listing all available sheets after upload. You select one sheet at a time — the preview table updates immediately. If you need multiple sheets as separate JSON files, convert them one at a time using the sheet selector.
Common workflows where JSON is more useful than a spreadsheet.
Reference data, configuration tables and lookup lists often live in Excel files managed by non-developers. Converting to JSON lets you import them directly into a database, use them as API fixture data, or load them in a Node.js script without a spreadsheet parsing dependency.
Chart libraries, data tables and React components expect JSON. Converting an Excel export to a JSON array or column-arrays format lets you import it directly as a module or fetch it as a static asset — without a server-side parser.
While pandas reads Excel with pd.read_excel(), converting to JSON first is useful when you need to share the data with a JavaScript pipeline, inspect the types visually before loading, or use it with tools that don't have an Excel dependency.
ETL pipelines, n8n workflows and Zapier automations often work natively with JSON but require a manual step to convert Excel inputs. Pre-converting to JSON lets you drop the file directly into the pipeline input without a custom Excel-parsing node.
What each setting controls in the JSON output.
| Option | Values | What it does |
|---|---|---|
| Output mode | Array · Keyed · Arrays · Columns | Array of objects is the default — each row becomes {column: value}. Keyed uses the first column as the key for O(1) lookup. Array of arrays is compact and includes the header row. Column arrays produces one array per column — ideal for Chart.js, D3 and Plotly. |
| Type coercion | ISO dates · Raw values | ISO 8601 converts Excel date serials to human-readable date strings (e.g. 2024-03-15). Numbers remain as JSON numbers. Raw values outputs date serials as numbers — useful when you need the exact Excel serial for further processing. |
| Header row | Row 1 · Row 2 · Row 3 | Some spreadsheets have a title or metadata rows above the actual column headers. Set this to skip those rows and treat the correct row as the header. Rows before the header row are discarded from the output. |
| Empty rows | Skip · Include | Skip filters out rows where all cells are empty — common at the bottom of real-world spreadsheets. Include keeps them as objects with null values — useful when row position is significant and gaps must be preserved. |
| Formatting | Pretty · Minified | Pretty uses 2-space indentation — readable for inspection and debugging. Minified removes all whitespace — smaller payload for API requests and static assets. |
Other free converters you might need next.
Excel parsed in
your browser. No upload.
SheetJS reads the binary .xlsx format entirely in your browser — unzipping the Office Open XML archive, parsing the XML cell data and reconstructing the sheet with original types. Your file is never transmitted to any server.
The output is valid JSON — numbers stay as numbers, dates become ISO 8601 strings, and empty cells become null. Multi-sheet workbooks are supported with a one-click sheet selector that updates the preview instantly.
