Convert Any Spreadsheet to JSON
with a Single Function Call
Parses XLSX, CSV, ODS, and 13+ other formats, converting them into clean JSON.
Works in Node and the browser.
From Any File to Clean JSON in 4 lines
Feed in any spreadsheet format — your code stays the same.
import tabularjs from 'tabularjs';
// Works with any format — .xlsx, .ods, .csv, .xls...
input.addEventListener('change', async (e) => {
const { worksheets } = await tabularjs(e.target.files[0]);
const [headers, ...rows] = worksheets[0].data;
// Clean, structured data — ready to use
renderTable(headers, rows);
});Parsing Spreadsheets Shouldn't Be Hard.
Most Excel parsing libraries add extra dependencies and license checks. Many user-submitted formats also require special handling, which can increase bundle size and slow down builds.
TabularJS supports 16+ spreadsheet formats with a single function and returns JSON. No dependencies, no complicated steps, and nothing extra in your node_modules.
What You Get
Stop Writing Format-Specific Parsers.
A single function supports Excel (.xls, .xlsx), OpenDocument (.ods), CSV, TSV, Lotus 1-2-3, SYLK, DIF, dBase, XML 2003, HTML tables, and more.
Keep Formulas Without Recalculating
Formulas from XLS, XLSX, ODS, SYLK, XML 2003, and HTML files are preserved intact. You don't need to decode or recreate them. They're ready to use in your JSON.
Ship Faster, With Nothing to Audit.
With zero dependencies, you have no extra packages in your supply chain. You don't need to review third-party code, so audits are simpler.
Same JSON Output, Across All Formats.
Regardless of the format you submit, the JSON structure will be the same. You don't need to write format-specific code. Just use the output as needed.
Styles & Merged Cells
For supported formats (XLSX, ODS), cell formatting, merged ranges, and comments are included automatically. No additional processing required.
Multiple Worksheets
If your spreadsheet has more than one tab, each tab will appear in the output array in the same order. You can iterate through and use any tab you want.
Metadata Included
TabularJS extracts column types, labels, and document-level metadata from formats that include them.
{
"worksheets": [
{
"name": "Sheet1",
"data": [
["Name", "Department", "Salary"],
["Alice", "Engineering", 95000],
["Bob", "Marketing", 72000]
],
"styles": { "A1": { "bold": true } },
"mergeCells": { "A5:C5": 1 },
"comments": { "B2": "Reviewed" }
}
]
}Thinking About Migrating from SheetJS?
If you need an MIT license, zero dependencies, and a simpler API, TabularJS is worth a look.
No License Surprises
TabularJS uses the MIT license and will continue to do so. You can use it in both commercial and open-source projects without needing to check the license with every new release.
Nothing in Your node_modules
With no transitive packages, there are no unexpected npm audit warnings from code you didn't write. A single package, pure JavaScript.
<script src="https://cdn.jsdelivr.net/npm/jspreadsheet-ce/dist/index.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/tabularjs/dist/index.js"></script>
<div id="spreadsheet"></div>
<input type="file" id="fileInput" />
<script>
document.getElementById('fileInput')
.addEventListener('change', async (e) => {
const file = e.target.files[0];
const result = await tabularjs(file);
jspreadsheet(
document.getElementById('spreadsheet'),
result
);
});
</script>Direct Integration with JS Spreadsheets
TabularJS output works directly with Jspreadsheet. You can import any spreadsheet file and quickly display it as an editable, real-time online spreadsheet. It's compatible with Jspreadsheet CE (open source) and Jspreadsheet Pro.
Start Parsing in Under a Minute
MIT License. Install from NPM or drop the CDN script into any HTML page.
npm install tabularjsJavaScript Components
TabularJS is part of a suite of JavaScript tools for building web applications.

Jspreadsheet Pro
Enterprise JavaScript data grid with spreadsheet controls for web applications.

Jspreadsheet CE
Free and open-source JavaScript spreadsheet and data grid for the web.

LemonadeJS
Dependency-free micro reactive library with two-way data binding.

CalendarJS
JavaScript calendar, date picker, and event scheduler components.

Jsuites
Lightweight JavaScript plugins: dropdowns, calendars, input masks, and more.

