Web Dev Tools

Spreadsheets, CSV & Excel

Reading, writing, and editing tabular data in browsers and Node.

CSV

  • PapaParse — browser + Node CSV parser. Streaming, web-worker-friendly, the default.
  • csv-parse / csv-stringify — Node, mature, streaming.
  • @fast-csv/parse — fast, ergonomic.
  • csv (npm) — the umbrella package.
  • d3-dsv — small, what D3 uses internally.

Excel (XLSX)

  • ExcelJS — read / write .xlsx with formatting, formulas, images, charts. The default for new Node projects.
  • SheetJS (xlsx) — read / write nearly every spreadsheet format ever (XLSX, XLS, ODS, CSV, etc.). The Pro version is paid; community version is fine for most uses.
  • node-xlsx — minimal wrapper around SheetJS.
  • @e965/xlsx — community fork of older SheetJS.

OpenDocument / Numbers / Google Sheets

  • SheetJS — handles ODS in addition to XLSX.
  • googleapis + Google Sheets API — read/write Google Sheets directly.
  • node-google-spreadsheet — friendlier wrapper around the Sheets API.

In-browser spreadsheet UIs

  • Univer — full open-source spreadsheet engine (Excel-compatible formulas, multi-sheet, collaborative). The biggest in this space in 2026.
  • Handsontable — spreadsheet UI; non-commercial license is free, commercial paid.
  • Glide Data Grid — canvas-rendered grid that scales to millions of cells.
  • luckysheet — open-source spreadsheet UI.
  • x-spreadsheet — older, still works.
  • See also Tables.

Formula engines

  • HyperFormula — JS formula engine; pluggable into any UI; commercial license required for commercial use.
  • formula-parser — small alternative.
  • mathjs — for math-heavy work, not a full spreadsheet formula engine.

Importing user CSV reliably

A common pattern for "user uploads a CSV and we ingest it":

  1. PapaParse in a Web Worker for parsing.
  2. Zod or Valibot schemas to validate each row.
  3. Show preview / mapping UI (column → field).
  4. Drizzle / Prisma batch insert in chunks of 500–5000.
  5. Surface row-level errors with line numbers.

Drop-in CSV import UIs

  • react-papaparse — file upload + parse with React.
  • tableflow-importer-react — TableFlow's open source import widget.
  • OneSchema, Flatfile — paid hosted CSV-import services with polished UIs.
  • @evidence-dev/import — newer OSS importer.

Pick this if…

  • Default CSV: PapaParse.
  • Default Excel write: ExcelJS.
  • Maximum format coverage: SheetJS.
  • Spreadsheet UI in your app: Univer.
  • User-uploaded CSV with mapping: TableFlow or roll your own with PapaParse + Zod.
  • Google Sheets integration: node-google-spreadsheet.

On this page