Feature Comparison: modern-xlsx vs SheetJS
Exhaustive capability matrix — every feature either library supports, compared side-by-side.
Legend
Meaning
✅
Fully supported
⭐
Supported + superior implementation
🔒
SheetJS Pro only (paid license)
❌
Not supported
🚧
Partial / limited support
modern-xlsx
SheetJS
Categories won
20
8
Ties
4
Total features
250
173
modern-xlsx wins: Workbook ops, merge cells, styling (free), frozen panes, data validation, conditional formatting, hyperlinks, comments, named ranges, page setup, sheet protection, date utilities, rich text, images, barcodes, table layout, validation/repair, web workers, performance, API design
SheetJS wins: Read formats (18 vs 1), write formats (20 vs 1), I/O ops, document properties, cell ref utils, number formatting, sheet conversion, streaming
Format
modern-xlsx
SheetJS
Notes
XLSX (Office Open XML)
✅
✅
Both full support
XLSM (Macro-enabled)
❌
✅
Data only, no macros
XLSB (Binary)
❌
✅
XLS (BIFF8/5/4/3/2)
❌
✅
Legacy Excel 97-2003
XLML (SpreadsheetML 2003)
❌
✅
ODS (OpenDocument)
❌
✅
FODS (Flat ODS)
❌
✅
CSV
❌
✅
TSV / TXT
❌
✅
HTML tables
❌
✅
SYLK
❌
✅
DIF
❌
✅
PRN
❌
✅
ETH (EtherCalc)
❌
✅
DBF (dBASE)
❌
✅
WK1/WK3/WKS (Lotus)
❌
✅
QPW (Quattro Pro)
❌
✅
Numbers (Apple)
❌
✅
Requires numbers option
Format
modern-xlsx
SheetJS
Notes
XLSX
⭐
✅
modern-xlsx: 8x smaller output
XLSM
❌
✅
XLSB
❌
✅
XLS (BIFF8/5)
❌
✅
XLS (BIFF4/3/2)
❌
✅
XLML
❌
✅
ODS / FODS
❌
✅
CSV
❌
✅
modern-xlsx: string only via sheetToCsv
HTML
❌
✅
modern-xlsx: string only via sheetToHtml
Others (SYLK, DIF, RTF, etc.)
❌
✅
10+ additional legacy formats
Feature
modern-xlsx
SheetJS
Notes
Read from buffer
✅
✅
Read from file
✅
✅
Read sync
❌
✅
modern-xlsx: async-only (WASM)
Write to buffer
✅
✅
Write to file
✅
✅
Write sync
❌
✅
Write to Blob (browser)
⭐
✅
Native WASM Blob
Parse CFB / ZIP
❌
✅
Custom FS / codepage
❌
✅
WASM init
⭐
❌
Feature
modern-xlsx
SheetJS
Create / get / add / remove sheets
✅
✅ (no remove)
Sheet visibility
❌
✅
Date system
✅
✅
Workbook views
⭐
🚧
Document properties
⭐
🚧
Serialize to JSON
✅
❌
Validate workbook
⭐
❌
Repair workbook
⭐
❌
Feature
modern-xlsx
SheetJS
Notes
Strings, numbers, booleans
✅
✅
Error values
✅
✅
Date values (native type)
❌
✅
SheetJS type "d"
Stub/empty cells
❌
✅
SheetJS type "z"
Inline strings
✅
❌
Formula strings (type)
✅
❌
Style index
⭐
🔒
modern-xlsx free
Number format override
🚧
✅
SheetJS: per-cell .z
Feature
modern-xlsx
SheetJS
Notes
Style builder (fluent API)
⭐
❌
Font (name, size, bold, italic, color, underline, strike)
⭐
🔒
Free vs paid
Fill (solid, 18 patterns, gradient)
⭐
🔒
Border (4 sides + diagonal, 13 styles, colors)
⭐
🔒
Alignment (H/V, wrap, rotation, indent, shrink)
⭐
🔒
Cell protection (locked/hidden)
⭐
🔒
Number format (custom/built-in)
⭐
✅
Community has per-cell .z
DXF / Cell styles / CellXf / Theme colors
⭐
❌
7. Data Validation & Conditional Formatting
Feature
modern-xlsx
SheetJS
All validation types (list, whole, decimal, date, time, textLength, custom)
⭐
🔒
Input prompts and error alerts
⭐
🔒
Color scales / data bars / icon sets
⭐
🔒
DXF style references / CFVO
⭐
🔒
8. Hyperlinks, Comments, Named Ranges
Feature
modern-xlsx
SheetJS
Add/remove hyperlinks with tooltip
✅
✅ (no tooltip, no remove)
Add/remove comments
✅
✅ (no remove)
Full CRUD named ranges
✅
🚧 (read-only)
9. Page Setup, Protection, Frozen Panes
Feature
modern-xlsx
SheetJS
Orientation, paper size, fit-to, scale
✅
❌
Page margins
✅
✅
Sheet protection (14 granular fields)
⭐
🚧
Frozen panes
✅
✅
Auto filter + filter columns
⭐
✅
10. Cell Reference & Date Utilities
Feature
modern-xlsx
SheetJS
Column ↔ letter, cell encode/decode, range encode/decode
✅
✅
Encode/decode row, split cell ref
❌
✅
Date ↔ serial, Temporal-like input
⭐
❌
Parse date code
❌
✅
11. Sheet Conversion Utilities
Feature
modern-xlsx
SheetJS
AoA/JSON → sheet, sheet → JSON/CSV/HTML
✅
✅
Add AoA/JSON to existing sheet
✅
✅
Sheet → TXT / formulae / row objects
❌
✅
DOM table → sheet/book
❌
✅
Feature
modern-xlsx
SheetJS
Stream to JSON/CSV/HTML/XLML
❌
✅
WASM streaming reader (SAX)
⭐
❌
Parallel sheet parsing (rayon)
⭐
❌
Feature
modern-xlsx
SheetJS
RichTextBuilder (bold, italic, colored, styled)
⭐
❌
Image embedding (PNG/JPEG/GIF)
⭐
🔒
Charts (create)
❌
🔒
14. Barcode, Table Layout, Validation
Feature
modern-xlsx
SheetJS
9 barcode types + PNG renderer + XLSX embed
⭐
❌
Table layout engine (drawTable/drawTableFromData)
⭐
❌
Workbook validation & repair
⭐
❌
Web Worker support
⭐
❌
Benchmark
modern-xlsx
SheetJS
Ratio
Read 10K rows
faster
baseline
~4.6x
Write 10K rows
faster
baseline
~1.3x
Output file size
smaller
baseline
~8x
aoaToSheet 50K rows
faster
baseline
~2x
sheetToJson 10K rows
faster
baseline
~2x
sheetToCsv 10K rows
faster
baseline
~2.4x
Bundle size
~300KB (WASM)
~200KB (JS)
1.5x larger
Zero runtime deps
✅
❌
TypeScript types
109+ types
basic
Multi-threading
rayon flag
❌
See the full comparison with 250 features in docs/FEATURE-COMPARISON.md