A lightweight, zero-dependency JavaScript data grid with a familiar, spreadsheet-like API. Copy/paste with Excel, freeze columns, write formulas, filter, sort, and validate — $899 per dev, one-time. Pay once, own forever.
A carefully scoped feature set that covers 95% of real use cases — without the bloat, licensing headaches, or bundler configuration.
Copy a range, paste directly into Excel or Google Sheets. Paste FROM Excel also works — TSV is the lingua franca.
20+ functions built-in. Auto-recalc on data change.
Pin SKU/ID to the left, headers to the top. Smooth sticky, zero layout jank.
Drop into React, Vue, or Phoenix LiveView. Keyboard-first, hook-driven.
Text, numeric, date, rating, progress, tags, color, file, and more.
Progress bars, pills, icons, HTML — no React context needed.
Read/write .xlsx in 30 KB. Zero deps.
Multi-select, range, date-range, text ops.
Right-click → rules. Reject, warn, or flag.
Built-in dialog: column picker, images toggle, color/B&W, formula values (not source) printed.
Insert, remove, clear, hide, reorder. Keyboard-friendly, index-aware — filters and sorts stay correct.
Most commercial data-grid libraries charge $899+ per developer every year. SpreadGrid is a perpetual license — $899 once, then a small $299/yr only if you want to keep updating. Stop renewing and your license still works forever. Comparison reflects typical commercial grid offerings as of April 2026.
| Feature | SpreadGrid | Typical commercial grid |
|---|---|---|
| Row sorting + multi-column | ✓ | ✓ |
| Column filters | ✓ | ✓ |
| Column freezing | ✓ | ✓ |
| Cell validation + 15 types | ✓ | ✓ |
| Autofill drag | ✓ | ✓ |
| Excel clipboard (TSV + HTML) | ✓ | ✓ |
| Custom renderers + formats | ✓ | ✓ |
| Undo / Redo | ✓ | ✓ |
| Context menus | ✓ | ✓ |
| Column moving (drag) | ✓ | ✓ |
| Merged cells | ✓ | ✓ paid tier |
| Row grouping (tree) | ✓ | ✓ paid tier |
| IME composition support | ✓ | ✓ |
| Formulas (20+ functions) | ✓ | ✓ paid tier |
| Formulas (VLOOKUP, 400+ fns) | Roadmap v5 | ✓ paid tier |
| Virtual scrolling | ✓ (module) | ✓ |
| Advanced filters (multi-select, range, date-range) | ✓ | ✓ paid tier |
| Visual data validation builder | ✓ | — |
| XLSX export (browser, zero deps) | ✓ | ✓ |
| XLSX import (browser, zero deps) | ✓ | ✓ |
| Print view + customization dialog | ✓ | — |
| Insert / remove columns & rows | ✓ | ✓ |
| Rating / Tags / Color / File cell types | ✓ | — |
| TypeScript definitions | ✓ | ✓ |
| Phoenix LiveView integration | ✓ | — |
| Dependencies | 0 | Several runtime deps |
| Bundle size | ~65 KB min | ~500 KB+ |
| Price (commercial) | $899 one-time | $899+/yr typical |
| 3-year cost per dev (with updates) | $1,497 $899 + 2× $299 | $2,697+ 3× $899 subscription |
Drop a single script tag. Configure with plain JavaScript objects. No TypeScript generics, no React context providers, no JSX.
const sg = new SpreadGrid('#grid', { data: [ ['E-001', 'Widget Alpha', 150000, 42], ['E-002', 'Widget Beta', 120000, 18], ], colHeaders: true, rowHeaders: true, columnSorting: true, filters: true, contextMenu: true, fillHandle: true, formulas: true, pagination: { pageSize: 25 }, columns: [ { title: 'SKU', width: 90, readOnly: true }, { title: 'Name', width: 180 }, { title: 'Price', width: 110, type: 'numeric', halign: 'right' }, { title: 'Stock', width: 80, type: 'numeric', halign: 'right' }, ], afterChange(changes, source) { if (source === 'loadData') return; fetch('/api/save', { method: 'POST', body: JSON.stringify(changes) }); }, });
Perpetual license, 12 months of updates, use for as long as you live. Try free for 14 days — no credit card required.
Perpetual license. Includes 12 months of updates. Renewable.
Up to 5 devs. ≈ $500/dev/yr — roughly half of comparable multi-app pricing.
Up to 25 devs (~$280/dev/yr). SLA + deep support.
Unlimited developers, custom features, dedicated support engineer, on-premise deployment, custom invoicing. Get in touch →
See it in action — filter, sort, edit, paste from Excel. Then drop one HTML file into your project.