Excel to JSON Converter

Convert Excel to JSON online — free, instant and private. Your file is processed in your browser, never uploaded.

Result

Converted files and a preview will appear here.

Ready. Choose a table file to convert.

How the conversion works

  • The first row is read as the header — its cells become the JSON field names, and each following row becomes one object.
  • Only the first sheet of the workbook is read.

Your table file is converted in your browser. Nothing is uploaded to BroBroGo.

FAQ

How do I convert Excel to JSON?

Drop your Excel file and click convert — the JSON file is ready to download in seconds, with a preview of the result. Everything runs on your device.

How large a file can I convert?

Up to 8 MB, 10,000 rows and 200 columns per file. Larger data sets are best split into smaller files first.

The Difference Between XLSX and CSV Conversions

A spreadsheet-to-JSON converter does not do what a spreadsheet-to-CSV converter does. CSV reduces every cell to a quoted or unquoted string, because CSV has no type system. When you open a CSV in a JSON parser, "123" stays a string, "TRUE" stays a string, and you must post-process everything yourself. An XLSX-to-JSON conversion that works inside the browser, by contrast, can read the cell type metadata stored inside the Excel file and emit native JSON types: numbers become 123, booleans become true, and empty cells become empty strings.

This page uses that capability. It reads the first worksheet of an uploaded XLSX file, extracts the visible values, and writes them out as an array of JSON objects. The first row of the worksheet becomes the object keys (a repeated header gets a _2, _3 suffix); each subsequent row becomes one object. Because the conversion preserves the original cell types, the output JSON can be consumed directly by JavaScript code, a REST API, or any application that expects typed data. You do not have to convert strings back to numbers or run a truth-check on "FALSE" – the tool does that for you.

The difference from CSV is not just aesthetic. A CSV export from Excel will turn a column of integers, dates, and percentages all into quoted text. A typed JSON export keeps the semantic type, but it also removes everything that made the spreadsheet a formatted document: colours, fonts, borders, merged cells, and formula expressions. That trade-off is acceptable for machine consumption, which is exactly what this page is built for.

How Excel Cell Types Map to JSON Values

Excel stores each cell with a type tag: t="s" for shared string, t="b" for boolean, t="n" for number, t="e" for error, and so on. The converter reads these tags in your browser and turns each cell into a typed value, which then becomes the JSON value. Here is the practical mapping:

Excel storage type JSON output Example cell value
Number (integer or float) JSON number 42, 3.1415, -7.99e2
Boolean JSON boolean true or false
Date / DateTime ISO 8601 string "2023-08-15T14:30:00.000Z"
Shared string / inline text JSON string "Quarterly Report"
Empty cell Empty string "" (nothing)
Error JSON string "#DIV/0!"

Dates deserve a closer look. Excel has no native JSON date type. A date cell is stored as a serial number (e.g., 45144 for August 15, 2023), and the converter writes it as an ISO 8601 string in UTC, such as "2023-08-15T00:00:00.000Z". If you need a different format, you must post-process the JSON. The same applies to percentages and currencies – they are stored as numbers in the XLSX, so they become numbers in the JSON. A percentage value of 12.5% appears as 0.125, not "12.5%". The tool does not preserve the underlying format mask; it only reads the stored numeric value.

Booleans are stored in XLSX as 1 or 0 (with a boolean flag). The parser outputs true or false directly, not the number 1. That matches the JSON specification and avoids the common confusion of seeing "TRUE" as a string.

What Gets Left Behind: Formulas, Formatting, and Worksheets

The conversion reads only the first worksheet of the XLSX file. If you have a workbook with twelve monthly sheets, only the first one is converted. The reason is structural: JSON is a single tree, and an XLSX workbook is a collection of independent tables. Mapping multiple sheets into a single JSON file would require inventing a grouping structure (e.g., an object with sheet-name keys), which would not match the plain array-of-objects format most users expect. For multi-sheet work, you must either split the XLSX yourself or use a tool that outputs separate JSON files per sheet.

Formulas are not calculated. The XLSX file stores both the formula expression and the most recently saved value. The tool reads only the saved value. If you open a spreadsheet, change a cell, and save before uploading, the saved value reflects that change. But if the workbook contains volatile functions (NOW(), RAND()) that were not recalculated before saving, the output JSON uses the stale cached result. This is a limitation of the XLSX format itself – a conversion tool cannot re-run the Excel calculation engine.

Cell formatting – fonts, colours, fill patterns, borders, column widths, row heights – is discarded. Merged cells keep only their top-left value; the remaining merged cells become empty strings. If your spreadsheet relies on merged cells for headers, you may see empty cells in the first few columns of the output.

The file name, sheet name, and any named ranges are not preserved in the output JSON. The JSON contains only the row data with column headers from the first row of the worksheet.

Client-Side Processing: Why Your Data Stays Private

The entire conversion runs in your browser. Your browser parses the workbook – a ZIP package of XML parts – and writes the converted output on your device. No bytes are sent to a server. This has two consequences:

  1. Privacy: if your XLSX contains sensitive data – employee salaries, customer contact lists, financial projections – it never leaves your machine. There is no upload step to log or audit.
  2. Speed: for files under the size limit, the conversion completes in a few seconds. There is no network latency.

The trade-off is that the browser’s memory and processing power set the ceiling. The tool enforces hard caps: 8 MB per file, 10,000 rows and 200 columns per table. If any limit is exceeded, the conversion stops and an appropriate error is shown. A conversion that runs past about 12 seconds is stopped as well, with the “This conversion is taking too long. Try a smaller file.” message.

Limits and Error Messages You Should Expect

The tool displays specific error messages for known failure cases. Because the conversion is deterministic (same input always produces the same output), experienced users can anticipate which files will fail:

  • “Choose a CSV, JSON or XLSX file.” – the selected file is not a CSV, JSON or XLSX file.
  • “This Excel file could not be opened.” – the XLSX is corrupted, is not really a ZIP archive, or violates the OOXML specification.
  • “This file has no table rows.” – the first worksheet is completely empty. A sheet with only a header row is not an error: it converts to an empty array ([]).
  • “This file is too large. Use a file under {max}.” – the file’s byte size exceeds the 8 MB limit.
  • “Could not convert this file.” – an unexpected failure that does not match a more specific error.
  • “Conversion cancelled.” – you cancelled the conversion, for example by clearing the selected file while it was running.
  • “This conversion is taking too long. Try a smaller file.” – the conversion ran past the roughly 12-second limit, usually because the workbook is very large.

If you see the “too large” or “too long” errors, reducing the number of rows or columns is the only remedy. Splitting the XLSX into smaller files and converting each one separately often works.

Who Actually Needs This

Three common use cases map directly to the tool’s design:

  • A web developer receives product catalog data in an XLSX file from a marketing team. They need to load it as JSON into a React component or a REST API. The typed conversion saves them from writing a loop that calls Number() on every string field.
  • A data analyst exports a table from a quarterly financial report as XLSX. They want to run a Python script that expects JSON input. Instead of opening Excel, exporting CSV, and writing a CSV-to-JSON script, they use the browser tool in seconds.
  • A privacy-conscious user handles employee rosters or medical data. They know that any upload to a cloud service could be stored or processed externally. The client-side conversion guarantees the data stays local. No account, no log-in, no server.

All three share the same need: a fast, typed conversion that requires no installation and no trust in a remote server.

Frequently Asked Questions

Can I convert data from the second or third worksheet?
No. The tool reads only the first worksheet. If you need data from another sheet, you must first move that sheet to the first position in Excel before uploading, or use a tool that supports sheet selection.

What happens to merged cells?
Only the top-left cell of a merged region retains its value. All other cells in the region become empty strings in the output JSON. This can create gaps in your row objects. It is best to unmerge cells and fill the values before converting.

Why does the JSON not contain formula results?
The tool reads the cached value stored alongside the formula in the XLSX. It does not re-calculate the formula. If you need the computed result, open the file in Excel, save it (which triggers a recalculation), and then convert the saved file.

Is there a file size or row limit?
Yes. Files are limited to 8 MB, and tables to 10,000 rows and 200 columns. If any limit is exceeded, the conversion stops with a clear error message.

Does it preserve date formatting like “DD-MMM-YYYY”?
No. Dates are converted to ISO 8601 strings (e.g., "2023-08-15T00:00:00.000Z"). The original Excel format mask is discarded. If you need a specific date format, you must post-process the ISO string.

What if my XLSX contains no data at all?
If the first worksheet is completely empty, the tool shows “This file has no table rows.” and does not produce a JSON file. A sheet with only a header row converts successfully to an empty array ([]).