CoreUI ONE — 250+ PRO components and 25+ admin templates for React, Angular, Vue, Bootstrap and Next.js, plus Data Grid, Scheduler, 4,300+ PRO icons and the Next.js boilerplate. One license. → See what you get

Best Vue Table Components (2026): 7 Vue 3 Data Tables Compared

For most Vue 3 projects the answer is one of four free libraries. Vuetify is the most rounded MIT option, with separate client, server and virtualized data table components and a real mobile layout. Naive UI NDataTable has the broadest free feature list in a single component, including multi-sort, tree rows, virtual scrolling and CSV export. PrimeVue DataTable adds built-in cell and row editing, but PrimeVue 5 is licensed under the PrimeUI License rather than MIT. Quasar QTable is the natural choice inside a Quasar app, with a card-style grid mode for small screens. CoreUI Smart Table suits CoreUI and Bootstrap apps whose tables are driven by a backend API.

How we compared

In October 2026 we checked seven Vue 3 table components, plus TanStack Table’s Vue adapter, against the same 24-feature data table checklist we use for React, on the current npm releases: vuetify 4.3.1, primevue 5.0.4, naive-ui 2.45.3, quasar 2.35.2, element-plus 2.14.7, ant-design-vue 4.2.6 and @coreui/vue-pro 5.22.2. Sources are the vendors’ docs, their published code, and tests in public demos.

A ❌ appears only when a vendor states the gap itself or we reproduced it in a demo. A — means we found no documentation either way; it is not a claim that the feature is missing. The CoreUI row follows the same rules, using our own docs and source.

The comparison at a glance

✅ built in and documented · Partial = a recipe, a separate component, logic without UI, or a paid add-on · ❌ absence confirmed · — no data

Component Licence / tier Multi-sort Column filters Global search Built-in pagination Server-side mode Tree rows Pinned columns Virtual scrolling Inline editing CSV export Mobile layout
Vuetify VDataTable (4.3.1) MIT ✅ Partial (filter function) ✅ ✅ ✅ (VDataTableServer) — ✅ ✅ (VDataTableVirtual) Partial — ✅
PrimeVue DataTable (5.0.4) PrimeUI License: conditional free Community tier, Commercial per developer ✅ ✅ ✅ ✅ ✅ Partial (TreeTable) ✅ ✅ ✅ ✅ Partial
Naive UI NDataTable (2.45.3) MIT ✅ ✅ — ✅ ✅ ✅ ✅ ✅ Partial ✅ Partial
Quasar QTable (2.35.2) MIT — — ✅ ✅ ✅ — Partial (CSS recipe) ✅ Partial (QPopupEdit) Partial (recipe) ✅ (grid mode)
Element Plus ElTable (2.14.7) MIT — ✅ Partial Partial (ElPagination) ✅ ✅ ✅ Partial (ElTableV2, beta) Partial — Partial
Ant Design Vue Table (4.2.6) MIT ✅ ✅ — ✅ ✅ ✅ ✅ Partial (Surely Vue, paid) Partial — ✅
CoreUI Smart Table (@coreui/vue-pro 5.22.2) CoreUI PRO, $127/dev perpetual ✅ ✅ ✅ ✅ ✅ ❌ ❌ ❌ ❌ ❌ Partial

The components in detail

Vuetify

Vuetify splits the job across three components: VDataTable sorts, filters and pages in the browser, VDataTableServer emits @update:options (page, items per page, sort, search) for your API, and VDataTableVirtual renders only visible rows at a fixed height. Multi-sort can require a modifier key and shows a priority badge, search filters every column, show-select offers select-all strategies (page, filtered, all), and fixed-header plus header.fixed keep headers and columns in view. Below mobile-breakpoint, rows render as label and value pairs with a sort select instead of headers. Column filtering is a filter function you attach to a header (header.filter, filter-keys), and the official CRUD example edits rows in a dialog.

Choose it if you want Material Design and a table that behaves properly on phones.

PrimeVue

PrimeVue DataTable is the deepest component on this page: multiple sort mode, row or menu filters with AND/OR rules, a global filter, a built-in paginator with a rows-per-page dropdown, lazy loading (also for virtual scroll), frozen and resizable columns, column toggling, cell and row editing, CSV export with a custom separator, and state saved to session or local storage. Hierarchical data needs the separate TreeTable, and on narrow screens the 5.x docs rely on horizontal scrolling. The real decision is the licence (see below).

Choose it if you need editing and export out of the box and the PrimeUI terms work for your company, or you stay on the MIT 4.x line.

Naive UI

Naive UI NDataTable puts a lot into one MIT component: multi-column sorting with priorities, column filter menus with custom renderers, built-in pagination with a size picker, a remote mode for server data, single or multiple selection, expandable rows, tree data with async loading, fixed columns, resizable columns, virtual-scroll and, since 2.37.0, downloadCsv with per-column control over what gets exported. Editing is shown by rendering inputs in cells, so save logic is yours.

Choose it if you want the most features in a free Vue table and like Naive’s TypeScript-first API.

Quasar

Quasar QTable covers server-side pagination, sorting and filtering through one @request event, a global filter prop, single and multiple selection with Shift-range examples, expandable rows, visible-columns and virtual-scroll combined with pagination. Its distinctive feature is grid mode, which renders rows as cards, with an example that switches to it on extra-small screens. Sticky headers and pinned columns are CSS recipes, and CSV export is a short recipe using exportFile. One trap: the docs mention a QTableColumns component that is not in the 2.35.2 npm package.

Choose it if you already build with Quasar, especially for mobile or hybrid apps.

Element Plus

Element Plus ElTable is strong on structure: header filter dropdowns, expandable rows, tree data with lazily loaded children, selectable trees (since 2.8.0), fixed header and columns, and resizable columns when border is on. For server data the docs say: “If you need remote sorting from backend, set sortable to custom, and listen to the sort-change event”. Pagination is a separate ElPagination you wire up, and virtualization lives in ElTableV2, which the docs label beta: “This component is still under testing, use at your own risk.”

Choose it if your app already uses Element Plus and you need tree data with lazy loading.

Ant Design Vue

Ant Design Vue Table mirrors the React antd Table: multi-column sorting with priority, filter menus with a tree mode and search, pagination with a size changer, an Ajax demo for server data, radio or checkbox selection, expanded rows, tree data from children, a sticky header, fixed and resizable columns, and columns that hide by breakpoint. Two caveats: the “Virtualized Table” demo in its docs is an embed of Surely Vue, a separate commercial product, and the library has not shipped a stable release since November 2024.

Choose it if you maintain an existing antdv app; for new projects weigh the release gap.

CoreUI Smart Table

Our own entry. CoreUI Smart Table for Vue ships in CoreUI PRO at $127 per developer, perpetual, with 12 months of updates and renewal at the same price (pricing). Free @coreui/vue includes only the styled CTable.

Its strengths are the API-driven case: external mode for sorting, column filters, pagination and page size with itemsNumber from your backend, a global tableFilter input with a cleaner, a filter row under the header, multi-column sorting, custom sorters and filters (the docs show Date Range Picker and Multi Select as filter UIs), checkbox selection with select-all, and per-column slots.

Its gaps, from our own docs and code: no virtualization, sticky header, pinned or resizable columns, tree rows, inline editing or export, and single selection is not a built-in mode. If you need virtualization, pinning, resizing, editing or CSV and Excel export in Vue, that is CoreUI Data Grid ($217 per developer, perpetual, one licence for Vue, React, Angular and JavaScript). Tree data is planned there, not shipped.

Choose it if you run a CoreUI Vue admin and your backend does the heavy lifting.

Also considered

TanStack Table has an official Vue adapter: headless sorting, filtering, pagination and selection logic under MIT, with all markup and styling up to you. It is the same headless core we profile in our React table comparison.

The 2026 licence and maintenance picture

Picking by situation

FAQ

What is the best free data table for Vue 3?

Vuetify VDataTable and Naive UI NDataTable are the strongest MIT options. Vuetify adds dedicated server and virtual variants plus a mobile layout; Naive UI adds tree rows and CSV export in one component.

Which Vue table components support virtual scrolling?

Vuetify (VDataTableVirtual), PrimeVue (virtualScrollerOptions), Quasar (virtual-scroll) and Naive UI (virtual-scroll). Element Plus offers it in the beta ElTableV2, and the Ant Design Vue docs demo it through the paid Surely Vue table.

Is PrimeVue still free and MIT?

PrimeVue 4.x is MIT. PrimeVue 5.x uses the PrimeUI License, which is free only for small companies under the Community thresholds and paid per developer otherwise.

Is Ant Design Vue still maintained?

Its last stable release, 4.2.6, was published on 11 November 2024, and none has followed as of October 2026. Check the repository’s activity before starting a new project on it.

Which Vue tables export to CSV without extra code?

PrimeVue DataTable (exportFilename, csvSeparator) and Naive UI NDataTable (downloadCsv, since 2.37.0). Quasar documents a short recipe built on exportFile.

Is there a free CoreUI data table for Vue?

CTable in @coreui/vue is free (MIT) but has no sorting, filtering or pagination logic. Those live in Smart Table, part of CoreUI PRO.