Pricing

A per-developer license, billed monthly or yearly — covers both PivotGrid and DataGrid. Use it in unlimited end-user apps. Taxes & invoicing handled by Paddle.

Prices shown per month for comparison. Annual plans are charged once, upfront, and renew yearly — you can cancel at any time.

Community

A usable pivot table and data grid, free

Free
  • Handles millions of rows smoothly
  • Drag-and-drop report building
  • Sort, filter and group your data
  • Color-code cells and show % of totals
  • Saved views, themes and 12 languages
  • Import files; export to CSV, JSON or print
  • DataGrid too — virtualized rows, pinned columns, CSV export
  • Community support on GitHub
Get started free

Developer

For a solo developer

$15.42/mo

Billed $185 once a year

Annual saves $43 a year (19%)

  • Everything in Community, plus:
  • PivotGrid: custom calculated fields
  • PivotGrid: visual filter builder & drill-down
  • PivotGrid: interactive charts
  • PivotGrid: styled Excel & PDF export
  • DataGrid: inline editing with validation & lookups
  • DataGrid: range selection, fill handle & paste
  • DataGrid: multi-level grouping & master-detail
  • DataGrid: styled Excel & PDF export
  • 1 developer, unlimited apps
  • 1 year of updates
Most popular

Team

For small teams

$58.25/mo

Billed $699 once a year

Annual saves $249 a year (26%)

  • Everything in Developer, plus:
  • Up to 5 developers
  • Priority email support
  • Faster response times
  • 1 year of updates

EnterpriseComing Soon

For large organizations

Custom
  • Everything in Team, plus:
  • Unlimited developers
  • Remove the watermark (white-label)
  • SLA & dedicated support
  • Custom feature requests
  • Invoicing & purchase orders
Contact sales

All paid tiers include the proprietary @kanunilabs/pivotgrid-react-enterprise + @kanunilabs/datagrid-react-enterprise + @kanunilabs/datagrid-enterprise packages, delivered via our private registry with a per-customer token.

Every feature, and which edition it needs

Generated from the same inventories the products themselves read — 95 of 134 features across both components need no licence key.

DataGrid

Data & performance

  • Virtual scrollingCommunityA million rows at 60fps — only the visible window is in the DOM.
  • Web Worker offloadCommunityFiltering and sorting move off the main thread above ~20,000 rows.
  • Columnar encodingCommunityTyped arrays instead of objects — the reason sort and filter stay fast.
  • Server-side dataEnterpriseFiltering, sorting, paging, distinct values and totals run on your server.
  • PaginationCommunityClassic pager with page size control.
  • Infinite scrollCommunityAppend rows as the user reaches the end.
  • TransactionsCommunityAdd, update and remove rows without rebuilding the grid.
  • Async transactionsCommunityBatch a burst of live updates into one pass.

Columns

Filtering

  • Filter rowCommunityA per-column input under the header.
  • Header filter popupCommunityCheckbox list of every distinct value, virtualized and unlimited.
  • Quick searchCommunityOne box across every column, with match highlighting.
  • Filter panel barCommunityShows the active filter as text, with one-click clear.
  • External filterCommunityAND your own row predicate into the grid filter.
  • Multi filterCommunityThe filter row and the popup coexist instead of overwriting each other.
  • Filter builderEnterpriseNested AND/OR conditions, built visually.

Grouping & hierarchy

Totals

Selection & keyboard

Editing

  • Cell editingEnterpriseEdit one cell at a time, committed on blur or Enter.
  • Batch editingEnterpriseCollect changes and save them together.
  • Row editingEnterpriseEdit a whole row with save/cancel controls.
  • Form editingEnterpriseEdit the record as a form laid out in the row flow.
  • Popup editingEnterpriseEdit the record in a dialog over the grid.
  • ValidationEnterprisePer-column rules with inline error reporting.
  • CRUD handlersEnterpriseOne call per row — the shape REST and SQL want.
  • PermissionsEnterpriseAllow add, update and delete per row, enforced in the engine.
  • Custom editors & lookupsEnterpriseYour own editor component, or a lookup bound to another source.
  • Undo / redoEnterpriseFull history with a public API and events.

Export & import

  • CSV exportCommunityThe whole result or the current selection.
  • Excel exportEnterpriseReal .xlsx, with the grid’s formatting carried over.
  • PDF exportEnterprisePaginated, with repeated headers; streams for large results.
  • Styled exportEnterpriseNumber formats, banded rows, outline levels, totals.
  • Import wizardEnterpriseFile → column mapping → commit.

Presentation

Charts

Integration

  • EventsCommunityFifty-five events covering cells, rows, columns, editing and lifecycle.
  • Imperative APICommunityDrive the grid from your own code via the controller.
  • Saved viewsCommunityPersist and restore column, filter and sort state.
  • Context menusCommunityHeader, row and cell menus you can extend or replace.
  • SSR & bundlersCommunityRenders on the server; works with Vite, Next.js and webpack.

PivotGrid

Data & performance

  • Web Worker offloadCommunityAggregation, grouping and filtering run off the main thread, so the UI never blocks on a recompute.
  • No bundler configurationCommunityThe worker is compiled into the package and started from a Blob URL — nothing to wire up in Vite, Webpack or Next.
  • Million-row datasetsCommunityColumnar storage and a trie-based grouper; the playground runs 1K to 2M rows in the browser.
  • Pre-aggregation filterCommunityA predicate applied to the source rows BEFORE the pivot is computed, set through `layout.prefilter`.
  • Visual prefilter builderEnterpriseA multi-condition editor for that predicate, with grouped AND/OR nesting.

Aggregation

  • Six summary typesCommunitysum, count, avg, min, max and distinct count, per measure.
  • Custom summariesCommunity`calculateCustomSummary` with the classic start → calculate → finalize phases, for rollups the built-ins cannot express.
  • Summary display modesCommunitySeven post-aggregation transforms: % of total, of row, of column, running total, difference and % difference.
  • Calculated fields in codeCommunityDeclare a measure from an expression — row-level or summary-level — in your field definitions. The expression engine is in the free core.
  • Calculated field designerEnterpriseThe no-code modal that lets end users build, edit and delete those formulas from the footer.

Shaping the pivot

  • Row, column, data & filter areasCommunityEvery field declares its area and position; changing them re-pivots.
  • Drag-and-drop field panelCommunityEnd users reshape rows, columns, measures and filters by dragging — no code.
  • Field chooser & settings dialogCommunityA searchable field list plus a per-field settings dialog for summary type, format and sort.
  • Date & number groupingCommunityGroup dates by year, quarter, month or day, and numbers into buckets.
  • SortingCommunityAscending, descending, or your own comparator through `calculateCustomSort`.
  • Sort a dimension by a measureCommunityOrder regions by revenue rather than alphabetically, with `sortBySummaryField`.
  • Top-NCommunityKeep only the leading values of a dimension, applied after the sort and per level.
  • Header filtersCommunityInclude/exclude value pickers on every row and column header, fully keyboard-driven.
  • Filters set in codeCommunitySeed the same filters from your field definitions with `filterValues` and `filterType`.
  • Expand & collapseCommunityPer-node expansion plus expand-all / collapse-all from the footer.
  • Node context menuEnterpriseRight-click a header node for bulk expand/collapse of that branch or that whole level.

Layout & totals

Presentation

Data in and out

  • File importCommunityCSV, TSV, TXT, Excel (.xlsx/.xls/.xlsm/.xlsb), XML and JSON, with locale-aware type inference.
  • Paste & drag-drop importCommunityDrop a file on the grid or paste delimited text straight into it.
  • Import preview & column mappingCommunityAn optional review step before the rows are applied, with progress and cancellation on large files.
  • CSV, JSON, XML, print & clipboard exportCommunitySeven of the ten export formats, including three JSON shapes and a full session snapshot. CSV output is sanitised against formula injection.
  • Styled Excel exportEnterpriseThe view as a real workbook — merged header spans, total styling and per-measure number formats — or a flat list.
  • PDF exportEnterpriseA print-ready document of the current pivot.

State & reports

  • Named saved viewsCommunityEnd users save, load, rename and set a default report — fields and layout together.
  • State persistenceCommunityRestore the grid across reloads from localStorage, sessionStorage, or your own backend through onSave/onLoad.
  • Controlled fields & layoutCommunityDrive the grid from your own state and observe every change, instead of letting it own its configuration.

Analytics

  • Drill-down dataCommunityClicking a cell resolves the source records behind it and hands them to your handler.
  • Drill-down modalEnterpriseA ready-made searchable, exportable detail grid for those records.
  • Chart synchronisationCommunityA hook that re-derives chart data on every reshape, expand or filter. You supply the transformer and the chart.
  • Chart transformer & rendererEnterpriseThe transformer that turns an engine result into series, and the chart component that draws them.

Platform

  • Headless controllerCommunityBuild your own shell out of `usePivotController` and the body/footer components; the grid is not the only entry point.
  • Keyboard navigationCommunityMove, select and open menus without the mouse; the filter popup is fully keyboard-driven.
  • FullscreenCommunityExpand the grid to fill the viewport from the footer.
  • Toolbar configurationCommunityShow or hide each footer control individually.
  • Plugin registryCommunityRegister your own export format or expression resolver; a custom exporter takes precedence over the built-in one, paid ids included.

Licence questions

Who counts as a developer?

Every person who writes or modifies code that uses the library needs a seat. Designers, testers, product managers and CI machines do not. A contractor writing code for you counts as one of your seats for the duration of the work.

One licence, two components — really?

Yes. A paid key unlocks the Enterprise features of BOTH DataGrid and PivotGrid. There is no separate purchase and no second key to install.

What happens when my subscription ends?

You keep the last version you paid for, and applications already shipped with it stay licensed. You stop receiving new versions and support. Nothing you have deployed stops working or starts showing a watermark.

Can I ship the library inside a product I sell?

Yes, compiled into your application. What you may not do is redistribute the package itself, your registry token or your licence key — see the Terms of Service for the exact wording.

What exactly is free?

The Community edition of both components: no key, no watermark, no expiry, and commercial use is allowed. The table above lists every feature and which edition it needs.

How is the paid package delivered?

From our private registry with per-customer credentials that arrive with your purchase. Public packages are proxied through the same registry, so one line in your .npmrc covers everything.

Do you offer refunds?

A 14-day conditional guarantee: if the software has a critical issue our support cannot resolve, you can ask for a refund within 14 days. Change of mind or a cancelled project do not qualify. The full policy is on the Refund Policy page.

What if we are more than five developers?

The Team tier covers up to five. Beyond that, use Contact sales above and we will quote for your team size.