Tabulator: interactive tables and data grids for JavaScript
Interactive Tables and Data Grids for JavaScript
At a glance
- What is it?
- Tabulator is a JavaScript library that turns HTML tables, JSON, or JavaScript arrays into interactive, sortable, filterable data grids with editing, pagination, grouping, and frozen columns. It supports React, Angular, and Vue frameworks.
- Who is it for?
- Adopt Tabulator if you need to display tabular data with user interaction (sorting, filtering, editing) in a web application, especially if you use React, Angular, or Vue. Skip it if you need only static HTML tables or if your data complexity exceeds what client-side sorting and filtering can handle.
- Can I use it commercially?
- Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
- Is it still maintained?
- Yes. The repository received new commits within the last day.
- What is it written in?
- Mainly JavaScript, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 30, 2026, and from our analysis. They are not legal advice.
Editorial analysis
A JavaScript library for interactive data grids
Tabulator is a JavaScript library that converts static HTML tables, JSON data, or JavaScript arrays into interactive, sortable, filterable tables. The README describes it as an easy-to-use interactive table generation library that works in seconds. Include the library and CSS file in your project, create a div element to hold the table, and instantiate a Tabulator object pointing to that element. Tabulator handles rendering and interaction. The package.json lists the current version as 6.6.0, released on 2026-09-29 (today). Previous releases came out on 2026-09-15 (v6.5.3) and 2026-06-23 (v6.5.2). The last commit was on 2026-09-22, indicating active development. The library is MIT licensed and maintained by the tabulator-tables organization. Full documentation and interactive examples are available at http://tabulator.info.
Installation and basic setup
Install Tabulator via npm:
npm install tabulator-tables --saveAlternatively, use Bower:
bower install tabulator --saveInclude the library and CSS in your HTML:
<link href="dist/css/tabulator.min.css" rel="stylesheet">
<script type="text/javascript" src="dist/js/tabulator.min.js"></script>Or use the UNPKG CDN:
<link href="https://unpkg.com/tabulator-tables/dist/css/tabulator.min.css" rel="stylesheet">
<script type="text/javascript" src="https://unpkg.com/tabulator-tables/dist/js/tabulator.min.js"></script>Create a container element and initialize Tabulator:
<div id="example-table"></div>Then with JavaScript:
var table = new Tabulator("#example-table", {});You can load data from HTML tables, JSON arrays, or AJAX endpoints, and the library renders the interactive grid with sensible defaults.
Framework integration and build system
Tabulator is built to work with all major front-end JavaScript frameworks: React, Angular, and Vue. The package.json lists keywords for react, angular, and vue, and the build system produces wrappers for these frameworks via the dev:wrappers npm script. This means you can integrate Tabulator into your framework-specific project without extra wrapper code. The library provides both a UMD build (dist/js/tabulator.js) and an ES module build (dist/js/tabulator_esm.mjs), allowing flexible import methods. TypeScript support is indicated by the presence of tsconfig.json in the repository, and the npm run typecheck script runs TypeScript type checking over the source code.
Features evident from examples and keywords
The examples directory contains 11 complete examples covering different use cases. Formatters example shows data transformation. Sorting and filtering example demonstrates searching and ordering. Editing example allows inline cell edits. Pagination breaks large tables into pages. Grouping and calculations example groups rows and computes aggregates. Selection example allows row or cell selection. Frozen columns example locks left columns while scrolling horizontally. Responsive example adapts layout to screen size. Tree data example displays hierarchical data. Full demo combines many features. The package.json keywords list additional capabilities: resizable columns, AJAX loading, JSON data, and scrollable overflow. The library is positioned as a complete, feature-rich data grid solution that handles common table interactions out of the box.
Lighter alternative to DataTables and ag-Grid
The README does not document these alternatives. DataTables is older, jQuery-based, and focused on progressive enhancement of HTML tables with sorting and filtering. ag-Grid is a comprehensive, heavyweight grid framework with advanced features, unlimited free tier, and a paid enterprise edition for rich data visualization. Tabulator positions itself as a lighter, modern alternative that works with current JavaScript frameworks (React, Angular, Vue) and requires minimal setup without jQuery. The choice among them depends on your framework ecosystem, required feature depth, and performance needs for your dataset size.
Testing, development, and quality
The package.json includes comprehensive test scripts. Unit tests run via jest (npm run test:unit). End-to-end tests run via Playwright (npm run test:e2e), which requires building the project first. The test script runs both test suites. The build process uses Rollup with various build targets (dev, css, esm, umd, wrappers) to produce different distribution formats. ESLint linting is built in (npm run lint). The repository includes a CODE_OF_CONDUCT.md and CONTRIBUTING.md file, signaling a mature open-source project that welcomes contributions. The presence of 11 worked examples in the repository and documented test practices demonstrates engineering discipline.
Data sources and scope considerations
Tabulator can populate tables from three sources: existing HTML tables, JavaScript arrays, and remote data via AJAX. The README emphasizes that setup is simple; the library handles the complexity of rendering, interaction, and updates. However, Tabulator is a client-side library; large datasets (millions of rows) will be slow without server-side pagination and filtering. For data that exceeds browser memory or requires real-time updates from a database, server-side solutions or infinite-scroll patterns are better. The choice to use Tabulator hinges on your data size and whether client-side interactivity meets your performance requirements.
Editorial conclusion
Adopt Tabulator if you need to display tabular data with user interaction (sorting, filtering, editing) in a web application, especially if you use React, Angular, or Vue. Skip it if you need only static HTML tables or if your data complexity exceeds what client-side sorting and filtering can handle. Verify that your data size is manageable for client-side processing by testing with your actual dataset on the examples at http://tabulator.info.
Frequently asked questions
How do I install Tabulator?
Run npm install tabulator-tables, then include dist/css/tabulator.min.css and dist/js/tabulator.min.js in your HTML.
What is the difference between Tabulator and DataTables?
Tabulator is a modern, lightweight library that works with React, Angular, and Vue. DataTables is older, jQuery-based, and more focused on progressive enhancement of existing HTML tables.
Can Tabulator handle large datasets?
Tabulator is client-side; large datasets (millions of rows) will be slow. Use server-side pagination and filtering for big data.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/tabulator-tables-tabulator)