FIG-001 · MASTHEAD

svelte/headless table.

A powerful, composable table library for Svelte 5 — bring your own markup, bring your own styles, and snap on as many of the 15 plugins as you need. Sorting, filtering, pagination, grouping, expansion, selection, column resizing, sub-rows, virtual scroll. Fully typed, MIT, zero opinions about how the table renders.

get started ↗ api reference examples kitchen sink
FIG-001
SHEET 01 / 07
plugins
15
composable, plug-and-play
tarball
63.1kB
packed (npm gz)
runtime deps
4
all humanspeak first-party
licence
MIT
on GitHub
types
100%
TypeScript end-to-end
stars
25
GitHub
FIG-002 / VIRTUAL SCROLL

render thousands of rows.

10,000 rows handed to the table, only the viewport-visible window mounts. Sorting and filtering still iterate the full dataset — the windowing layer sits downstream. Drop in addVirtualScroll and you're done.

file · virtual-scroll-sample.svelte total 0 window 0–0 rendered 0
# Name Company Department Salary
0Alice SmithAcmeEngineering$30,000
1Bob DavisGlobexSales$31,234
2Carol JonesInitechMarketing$32,468
3David JohnsonHooliOperations$33,702
4Emma WilsonMassiveFinance$34,936
5Frank GarciaStarkLegal$36,170
6Grace WilliamsWayneEngineering$37,404
7Henry MooreWonkaSales$38,638
rows · 10,000
cols · 5
mounted · 8
plugins · addVirtualScroll · addSortBy
status · live
FIG-003 / CAPABILITIES

why svelte-headless-table.

The most complete headless table primitive for Svelte 5.

№ 01 / 06

Headless by Design

No markup, no styles, no opinions. You own the `<table>`. The library produces reactive row + column view models and stays out of the way.

№ 02 / 06

Plugin Composition

15 plugins — sorting, column + table filters, pagination, sub-rows, group-by, expanded rows, selection, column reordering, hidden columns, column resizing, grid layout, flatten, data export, and virtual scroll — composed declaratively on a single `createTable` call.

№ 03 / 06

Svelte 5 Runes

Rebuilt from the ground up against Svelte 5. Internal state uses `$state`, derivations use `$derived`, and the public surface still ships ordinary stores so existing render code keeps working.

№ 04 / 06

TypeScript First

Generics carry your row type through every plugin, every cell renderer, and every accessor. Misnamed columns, mistyped values, and broken filter functions all fail at compile time.

№ 05 / 06

Virtual Scroll

Render windows of tens of thousands of rows with `addVirtualScroll`. Sorting, filtering, and pagination still iterate the full dataset upstream of the windowing layer.

№ 06 / 06

Custom Cell Renderers

Bring any Svelte component into a cell via `createRender`. Editable cells, action menus, embedded charts, status pills — all just components handed to the view model.

FIG-004 / COMPARISON MATRIX

how we compare.

Honest, side-by-side comparisons with every major Svelte (and a couple of multi-framework) table libraries.

librarycategorysvelte 5headlesspluginstypescriptpricingread more
@humanspeak/svelte-headless-table ●headless · svelte 5yesyes15yesfree · MITthis row
TanStack Tableheadless · multi-frameworkvia community drop-inyescore modulesyesfreeread more →
@vincjo/datatablesheadless · svelte 5yesyessort/filter/page/select/lazyyesfreeread more →
svelte-tableheadless · single componentnot declaredyesnoyesfreeread more →
Flowbite Svelte Datatablestyled · tailwind + flowbiteyesnonoyesfreeread more →
AG Gridstyled · multi-frameworkcommunity wrapper · stalenoyesyescommunity + enterpriseread more →
Handsontablespreadsheet · react/angular/vuenonoyesyescommercialread more →
view all comparisons →
FIG-005 / AI-READY

built for ai-assisted code.

Point Cursor, Claude Code, or any LLM at the manifests below and they know the full svelte-headless-table API — every plugin, every accessor, every cell renderer pattern. Migration prompts from TanStack Table just work.

FIG-006 / EXAMPLES

explore live examples.

Three self-contained demos — every plugin composed, virtual-scroll over 10k rows, and per-cell inline editing — all with the full source one click away.

view all examples →
SET / JETBRAINS MONO + INTER
HUMANSPEAK · 2026
MIT LICENCE
● 6.0.8
SHEET 07 / 07
END OF DOCUMENT
↩ TO TOP