Best Vue Multi Select Components in 2026: 8 Libraries Compared
Short answer. Choose Element Plus if you want strong free defaults: collapsing tags into “+N”, multiple-limit, allow-create, remote search and a virtualized ElSelectV2. Choose Vuetify if you are on Vuetify 4: checkboxes appear next to options in multiple mode, chips are one prop away, and the list is virtualized. Choose vue-multiselect if you want a small standalone component that can select a whole group from its label and cap selections with max, for short lists. Think twice about PrimeVue MultiSelect: it has select all, a limit and a 100K-row virtual list, but PrimeVue 5 is no longer MIT and its docs mark MultiSelect as deprecated. Choose CoreUI PRO Multi Select if you need select all, a limit, whole-group selection, checkboxes, a counter, virtualization, option creation and async loading on one current component.
How we compared
We compared 8 Vue 3 libraries in October 2026, using each vendor’s docs, API files and npm package (versions in the table). Most libraries offer multi select as a multiple mode of their select; vue-multiselect and CoreUI ship a dedicated component, and for PrimeVue we rated MultiSelect, its most complete option. Every cell has a source URL and a verification date in our research base. A ❌ means the gap is confirmed: the vendor’s documentation says so, or we reproduced it in the official public demo in a headless browser on October 28, 2026. When the docs are silent, or an absence appears only in source or type files, we write — (no data) instead of ❌. CoreUI publishes this page; its own gaps are marked ❌ from its complete API reference.
The comparison at a glance
Legend: ✅ built in · Partial = slot recipe, example or fixed behavior · ❌ confirmed missing · — no data
| Library (version) | Chips in the field | “+N” or counter | Checkbox options | Select all | Selection limit | Create options | Async options | Virtualization | Select a whole group | Native form submit | License |
|---|---|---|---|---|---|---|---|---|---|---|---|
| Element Plus 2.14 | ✅ | ✅ | — | Partial | ✅ | ✅ | ✅ | ✅ | — | Partial | MIT |
| Vuetify 4.3 | ✅ | Partial | ✅ | Partial | — | ✅ | ✅ | ✅ | — | ✅ | MIT |
| vue-multiselect 3.5 | ✅ | ✅ | — | — | ✅ | ✅ | ✅ | ❌ | ✅ | — | MIT |
| Quasar 2.35 | ✅ | Partial | Partial | — | ✅ | ✅ | ✅ | ✅ | — | ✅ | MIT |
| Naive UI 2.45 | ✅ | ✅ | — | — | — | ✅ | ✅ | ✅ | — | — | MIT |
| Ant Design Vue 4.2 | ✅ | ✅ | — | — | — | ✅ | ✅ | ✅ | — | — | MIT |
| PrimeVue 5.0 (MultiSelect, deprecated) | ✅ | ✅ | ✅ | ✅ | ✅ | — | ✅ | ✅ | — | ✅ | PrimeUI License: free under size limits, $599/dev |
| CoreUI for Vue PRO 5.22 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | CoreUI PRO, $127/dev perpetual |
A — cell means we found no documentation either way, not that the feature is missing.
The libraries, one by one
Element Plus Select (multiple)
Element Plus 2.14.7 (MIT) handles multi select as multiple on ElSelect: tags with a remove icon and Backspace removal, collapse-tags with max-collapse-tags (since 2.3.0) for “+N” and a tooltip that lists the rest, multiple-limit, allow-create, remote search with a multiple example, groups, a tag slot and filterable. ElSelectV2 adds virtualization for long lists. Select all is shown as a header-slot example with your own “All” checkbox.
Choose it if you use Element Plus.
Vuetify VSelect and VAutocomplete (multiple)
Vuetify 4.3.1 (MIT) adds multiple to VSelect, VAutocomplete and VCombobox. In multiple mode VSelect renders a checkbox next to each option, chips with closable-chips gives removable chips, VAutocomplete adds search and Backspace or Delete on chips, VCombobox (formerly called tags) creates values with delimiters, and the list is virtualized. clearable, item and chip slots, rules, and a hidden input with name complete it. Overflow and select all are slot recipes: the docs show a selection slot with “(+N others)” and recommend prepend-item for a custom select-all row.
Choose it if you build on Vuetify.
vue-multiselect
vue-multiselect 3.5.0 (MIT, Vue 3) is a dedicated standalone component. It documents group-select, which selects or deselects every option in a group from the group label, and max with a maxElements message, plus limit with limitText (“and N more”), taggable with a @tag handler, async search through @search-change and loading, closeOnSelect, groups, and tag, option and selection slots. Limits: no virtualization (in the official async demo, 207 options were in the DOM with 8 visible; optionsLimit caps rendering at 1,000 by default), clearing everything is a slot example, and the name prop is set on the search input, so test form submission. Version 4.0.0-alpha.0 appeared on September 17, 2026.
Choose it if lists are short and you want group selection without a UI framework.
Quasar QSelect (multiple)
Quasar 2.35.2 (MIT) uses QSelect with multiple, use-chips (removable, Backspace removes the last), max-values for a limit, use-input with @filter for search and async loading, new-value-mode for creating values, the always-on virtual scroll (100k example), a selected-item slot, counter, and name for native submission. Checkboxes in options are an example with QCheckbox or QToggle in the option slot, and display-value can show a summary such as “N selected” for long selections.
Choose it if you use Quasar.
Naive UI NSelect (multiple)
Naive UI 2.45.3 (MIT) NSelect in multiple mode has tags with max-tag-count (a number or “responsive”), tag for creating options, a remote multiple-search demo, virtual scrolling by default, groups, render-tag, show-checkmark and a status prop.
Choose it if you use Naive UI.
Ant Design Vue Select (mode=“multiple”)
Ant Design Vue 4.2.6 (MIT) offers mode="multiple" and mode="tags" with tokenSeparators, maxTagCount including “responsive”, maxTagPlaceholder, virtual lists, OptGroup, tagRender and a remote search demo with debounce in multiple mode. The release cadence is the concern: 4.2.6, from November 11, 2024, is still the latest version.
Choose it if you maintain an Ant Design Vue app.
PrimeVue MultiSelect
PrimeVue 5.0.4 still ships MultiSelect with a long feature list: display="chip", maxSelectedLabels with “{0} items selected”, checkbox options, showToggleAll and Ctrl+A, selectionLimit, filtering, virtualScrollerOptions (100K-item demo), groups, chip and option slots, and name. Two caveats. The docs say “MultiSelect is deprecated and will be removed in a future release. Use Select component instead”; with Select multiple, chips and checkboxes are built through slots (#value, #option, #header). And PrimeVue 5 is under the PrimeUI License (see below).
Choose it if you are licensed for PrimeUI and accept a migration later.
CoreUI Multi Select for Vue
Our own entry. CoreUI Multi Select for Vue (CMultiSelect, @coreui/vue-pro 5.22.2) is a CoreUI PRO component: $127 per developer, perpetual, 12 months of updates, renewal at the same price.
It documents selectAll (with a mode for filtered results), selectionLimit (since 5.19.0), optionsGroupsSelectable for whole-group selection, checkbox options by default, tags, counter or text display, allowCreateOptions, async loading through External Data, virtualScroller, global and external search, cleaner, validation feedback, and a hidden <select multiple> so values submit with a form and support native required. Against PrimeVue, the difference is status: PrimeVue’s docs mark MultiSelect as deprecated, while CMultiSelect is CoreUI’s current component, with the same API as CoreUI for React. Against vue-multiselect, CoreUI virtualizes long lists.
Where CoreUI loses: there is no slot for rendering a tag, overflow is a counter mode rather than “+N” after a few chips, there is no prop to close the list after each pick, and the Multi Select page does not document RTL.
Choose it if your Vue app uses Bootstrap or CoreUI and your forms have long, grouped option lists. Team prices are on the pricing page.
Licensing in 2026: what changed
PrimeVue is no longer MIT. Since 5.0.0 (July 15, 2026), primevue is a compiled package under the PrimeUI License, which requires a license key. The free Community License applies only when every condition holds: fewer than 5 developers counting the whole organization, fewer than 10 employees, under $1M revenue, under $3M in outside funding, and not the public sector or education; it renews yearly. The commercial license is $599 per developer until December 31, 2026 (then $799), perpetual with one year of updates, with $399 per developer to renew updates. PrimeVue 4.5.5 on the v4-stable tag is the last MIT line.
Element Plus, Vuetify, Quasar, Naive UI, Ant Design Vue and vue-multiselect are MIT-licensed.
FAQ
What is the best Vue 3 multi select component?
Inside a framework, use its own: Element Plus, Vuetify or Quasar all cover chips, search, creation and virtualization for free. Standalone, vue-multiselect is the long-standing option for short lists. For select all, limits and group selection on one component, CoreUI Multi Select (CoreUI PRO).
Is PrimeVue MultiSelect deprecated?
Yes. In PrimeVue 5.0.4 the docs say “MultiSelect is deprecated and will be removed in a future release. Use Select component instead.” It still ships in 5.x.
Which Vue multi select can select a whole group at once?
vue-multiselect has group-select, which toggles every option in a group from its label. CoreUI Multi Select has optionsGroupsSelectable.
Does vue-multiselect support virtual scrolling?
No. In our test of the official async demo, 207 options were in the DOM with 8 visible. It limits rendering with optionsLimit (1,000 by default) instead.
How do I limit the number of selections in a Vue multi select?
Element Plus has multiple-limit, Quasar has max-values, vue-multiselect has max, PrimeVue MultiSelect has selectionLimit, and CoreUI has selectionLimit.
Which Vue multi select shows “+N” instead of all tags?
Element Plus (collapse-tags with max-collapse-tags), Naive UI (max-tag-count), Ant Design Vue (maxTagCount), vue-multiselect (limit with “and N more”) and PrimeVue MultiSelect (maxSelectedLabels). CoreUI uses a counter mode.