Tabulator has been the go-to vanilla JS data grid for years. It's MIT-licensed, deeply featured, and ships with everything from CSV export to remote data sources. If you've ever needed a data grid in plain JavaScript, Tabulator was probably your first stop.
simple-table-core is the modern TypeScript-first alternative. It's the same engine that powers @simple-table/react, @simple-table/vue, @simple-table/angular, @simple-table/svelte, and @simple-table/solid—available standalone for vanilla TypeScript projects.
This article compares the two on TypeScript ergonomics, ESM packaging, framework portability, bundle size, and feature scope.
Quick comparison
| Feature | Tabulator | Simple Table for Vanilla JS / TypeScript |
|---|---|---|
| License | MIT | MIT |
| TypeScript | Definitions exist | First-class (strict) |
| ESM-first packaging | Mixed | Yes |
| Framework portability | Standalone only | Same engine, 5 framework adapters |
| Bundle size (gzipped) | ~80–120 kB | ~50 kB |
| Built-in row virtualization | Yes | Yes |
| Column pinning | Yes (frozen columns) | Yes |
| Row grouping + aggregations | Yes | Built-in |
| Inline cell editing | Yes | Built-in |
| API style | Imperative options bag (mature) | Modern declarative TypeScript |
Stay with Tabulator when…
- Your existing codebase is heavily invested in Tabulator's API.
- You depend on Tabulator-specific features (built-in CSV/PDF export, etc.).
- Your team prefers an imperative options-bag style API.
- You don't need TypeScript ergonomics or framework portability.
Switch to simple-table-core when…
- You want TypeScript-first ergonomics with strict types.
- You're using ESM packaging, modern bundlers (Vite, esbuild), and tree-shaking.
- You may add React / Vue / Angular / Svelte / Solid surfaces later and want one engine.
- Bundle size matters: ~50 kB gzipped without losing virtualization or grouping.
Real-world scenarios
Existing Tabulator codebase, basic CRUD
Three internal tables, no plans to add features.
Stay on Tabulator—the migration cost isn't worth it.
Greenfield TypeScript project, Vite + esbuild
ESM-first, strict typing, modern bundlers.
Pick simple-table-core—TypeScript-first by design.
Multi-stack platform (Vue + vanilla legacy)
Want one engine and one mental model across both.
Choose simple-table-core—same engine, framework adapters.
Frequently asked questions
- Is Tabulator dead?
- No—it's actively maintained and a fine choice for legacy and new projects alike. The trade-off is API style and TypeScript ergonomics, not maintenance.
- How big is the migration?
- Hours to a few days per table. Map columns array to HeaderObject entries; convert formatters / mutators to cellRenderer / valueGetter functions.
- Can simple-table-core export to CSV?
- Built-in CSV export ships with the core; PDF export is an opt-in adapter in roadmap. Tabulator has more file-format breadth out of the box today.
The verdict
Tabulator is a solid choice and we have nothing bad to say about it. simple-table-core wins when you want TypeScript-first ergonomics, ESM-first packaging, and the option to add framework adapters later without changing engines.
Both are MIT and both are mature. Pick simple-table-core for greenfield TypeScript work; stay on Tabulator if your codebase is already deeply invested.