Excel to JSON Converter

Convert .xlsx, .xls, .ods, CSV or TSV spreadsheets into clean JSON objects or arrays in your browser, with a sheet preview and a normalized CSV re-export.

Your workbook is parsed locally with SheetJS — it is never uploaded. Only the parsing library itself is fetched from the SheetJS CDN.

Convert a spreadsheet to JSON

Drop a spreadsheet here or click to browse — .xlsx, .xls, .csv, .tsv, .ods · parsed locally

How It Works

Parsing is done by SheetJS, the open-source spreadsheet engine that reads the file formats Excel itself uses. The workbook never leaves your device: FileReader hands the raw bytes to the parser inside this tab, and the JSON is serialised locally too.

What the parser reads
.xlsx files are zip archives of XML parts (OOXML), .xls files are legacy binary BIFF workbooks, and .ods is zipped XML too — SheetJS understands all three plus plain CSV and TSV text. Each sheet becomes a grid of typed cells; formulas come through as their cached results, not as text.
Objects vs Arrays
The default "Objects" shape uses the header row as keys and emits one JSON object per data row — the shape most APIs and import scripts want. "Arrays" skips key generation entirely and outputs the raw array of arrays, which is smaller and lossless when your sheet has no header, duplicate column names or blank cells on top. Toggling "First row is header" together with the shape covers every sane mapping; dates are exported as their underlying serial or text values rather than guessed at.
One sheet at a time
Workbooks with several sheets expose a selector — convert a sheet, then switch and convert the next. Keeping each output a flat array avoids a nested per-sheet wrapper that most consumers would have to unwrap anyway.
CSV round-trip cleanup
The Download CSV button re-emits the parsed sheet as a freshly normalised CSV. Messy exports — inconsistent quoting, stray tabs, Mac-style line endings, a delimiter you did not expect — come back as a clean, properly quoted comma-separated file ready for the next tool in your pipeline.

Frequently Asked Questions

Do you support .xlsx as well as old .xls files?

Yes. Both the modern zip-based .xlsx format and the legacy binary .xls workbooks are parsed, along with ODS, CSV and TSV text files. Everything is handled by SheetJS, the reference open-source spreadsheet reader, right here in your browser.

How big can the file be?

There is no artificial cap, but parsing happens in your tab's memory. Workbooks up to roughly 5 MB convert smoothly on most machines; far larger files or sheets with hundreds of thousands of rows can strain low-memory devices. If a huge export fails, splitting it by sheet or row range and converting each part is the practical workaround.

Do formatting, colors and formulas come through?

No — JSON is a values-only format, and it is honest to say so. Cell colors, fonts, borders, merged-cell layout, charts and images are all dropped. Formulas are exported as their last calculated values, and dates arrive as ISO-like or serial strings depending on the sheet, so give the output a quick look before using it in code.

What about workbooks with multiple sheets?

The sheet selector converts one sheet at a time — pick a sheet, copy or download its JSON, then switch to the next. Keeping the scope to a single sheet per conversion also keeps the output a clean flat array instead of a nested per-sheet object, which is what most APIs and import scripts expect.

Is my spreadsheet uploaded to a server?

No. The workbook is read with FileReader and parsed locally by the SheetJS library. The only network request is the one-time fetch of that public library from the SheetJS CDN — your file's contents never leave your device.