Best React Multi Select Components in 2026: 9 Libraries Compared
Short answer. Choose MUI Autocomplete with multiple if you are on Material UI: chips, a “+N” overflow label, a checkbox example and free-text creation, all MIT. Choose Ant Design Select in mode="multiple" if lists are long and you need a selection cap: it virtualizes by default and has maxCount and responsive maxTagCount. Choose Mantine MultiSelect if you want a dedicated free component with maxValues, pill reordering and native form submission. Choose react-select with isMulti if you need async and creatable multi selects in one familiar API and your lists are short. Choose CoreUI PRO Multi Select if you need select all, a selection limit, whole-group selection, checkboxes, a counter, virtualization, option creation and async loading documented on a single component.
How we compared
We compared 9 React libraries in October 2026, using each vendor’s docs, API reference and npm types (versions in the table). Most libraries offer multi select as a mode of their select (multiple, isMulti, mode="multiple"); where there are two candidates, as with MUI Select and Autocomplete, each feature is rated on the better one. 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 a public demo or a clean test build in a headless browser on October 28, 2026. When the docs are silent, or an absence appears only in type definitions, 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 = recipe, composition or external library · ❌ 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 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| MUI Autocomplete 9.5 | ✅ | ✅ | ✅ | ❌ | ❌ | ✅ | ✅ | Partial | — | ✅ | MIT |
| Ant Design 6.6 | ✅ | ✅ | Partial | — | ✅ | ✅ | ✅ | ✅ | — | — | MIT |
| Mantine MultiSelect 9.7 | ✅ | Partial | Partial | — | ✅ | Partial | Partial | Partial | — | ✅ | MIT |
| Chakra UI 3.37 | Partial | — | Partial | — | — | Partial | ✅ | Partial | — | ✅ | MIT |
| HeroUI 3.2 | Partial | — | Partial | — | — | — | ✅ | ✅ | — | ✅ | MIT |
| shadcn/ui (Combobox) | ✅ | — | — | — | — | — | Partial | Partial | — | ✅ | MIT, code copied into your repo |
| react-select 5.10 | ✅ | — | — | ❌ | ❌ | ✅ | ✅ | ❌ | — | ✅ | MIT |
| PrimeReact 11.2 | ✅ | Partial | ✅ | Partial | — | Partial | ✅ | ❌ | — | Partial | PrimeUI License: free under size limits, $599/dev |
| CoreUI for React PRO 5.29 | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | CoreUI PRO, $127/dev perpetual |
Read the — cells carefully: they mean we found no documentation either way, not that the feature is missing.
The libraries, one by one
MUI Autocomplete and Select (multiple)
Material UI 9.5.0 (MIT) has no separate multi select component: you set multiple on Select (no search) or on Autocomplete (search and chips). Autocomplete in multiple mode gives you chips with a delete icon and Backspace removal, limitTags with a “+N” label, a “Checkboxes” demo that uses icons from @mui/icons-material, disableCloseOnSelect, freeSolo to turn typed text into chips, groupBy, “Fixed options” that cannot be removed, renderValue for custom chips and the same async pattern as single mode. Virtualization is a react-window recipe. In the official “Multiple values” demo we picked nine films with no cap and no options disabled, and the list of 100 films had no select-all entry. Select multiple posts values through a hidden input as one comma-joined field.
Choose it if you build on Material UI.
Ant Design Select (mode=“multiple”)
Ant Design 6.6.8 (MIT) turns Select into a multi select with mode="multiple", or mode="tags" to create values (with tokenSeparators for pasted lists). It is strong on overflow and scale: maxTagCount as a number or “responsive” with maxTagPlaceholder, maxCount (since 5.13) to cap the selection, virtual lists on by default, tagRender and optionRender, and a remote search demo with debounce. Selected options show a check icon (menuItemSelectedIcon); a checkbox needs your own optionRender.
Choose it if you use Ant Design and need long lists or a selection cap.
Mantine MultiSelect
Mantine 9.7.4 (MIT) has a dedicated MultiSelect: pills with a remove button, Backspace removal, maxValues with onMaxValues (in the official demo with maxValues={2}, a third value could not be added), searchable, clearable, groups, renderOption, renderPill, withPillsReorder (drag and drop plus keyboard) and a hidden input for FormData. A check icon marks selected options. Several extras are Combobox recipes rather than props: “Max displayed values”, “Multiselect with checkboxes” and “Creatable multiselect”; virtualization uses useVirtualizedCombobox with an external library. Use TagsInput when users should enter free values.
Choose it if you want a clean dedicated component in a Mantine app.
Chakra UI Select and Combobox (multiple)
Chakra UI 3.37.0 (MIT) adds multiple to Select and Combobox, with closeOnSelect, ClearTrigger, item groups, custom items, async loading and HiddenSelect for forms. For the selected values, the multiple-mode example renders badges with your own code; for removable tags inside the field, the docs compose TagsInput with Combobox. A selected item shows an indicator rather than a checkbox. Virtualization uses TanStack Virtual.
Choose it if you prefer primitives and will build the tag UI yourself.
HeroUI Select and Autocomplete (multiple)
HeroUI 3.2.6 (MIT) supports selectionMode="multiple" on Select, Autocomplete and, since 3.2.3, ComboBox. You get built-in virtualization, async filtering, sections, disabledKeys, clear buttons and name for forms. By default the value is shown as text; the “Tag Group Selection” example composes TagGroup for removable chips. The docs did not cover overflow, select all, a selection limit or option creation, which is why those cells show no data.
Choose it if you build on React Aria components and a text summary of the selection is enough.
shadcn/ui Combobox (multiple)
shadcn/ui builds multi select from Combobox with multiple and ComboboxChips on Base UI, as MIT code in your repository. Chips render in the field, Backspace removes the last one (confirmed in our demo), and groups, custom items, showClear, invalid styling, RTL and name are documented. Async search and virtualization are Base UI examples you adapt.
Choose it if you are on shadcn/ui and want to own the code.
react-select (isMulti)
react-select 5.10.2 (MIT) with isMulti is the familiar choice: removable chips, Backspace removal, closeMenuOnSelect={false}, hideSelectedOptions, isClearable, AsyncSelect and CreatableSelect in multi mode, grouped options, components overrides for chips and options, and name plus delimiter to submit all values as one input. In the official Multi demo we selected all nine enabled options with no cap, and there is no select-all control. The scale limit: with 5,000 options and the menu open, 4,998 option nodes were in the DOM, so there is no virtualization.
Choose it if your lists are small to medium and you want async plus creatable in one API.
PrimeReact Select (multiple)
PrimeReact 11.2.2 no longer has the separate MultiSelect that 10.x had; multiple selection is multiple on Select or AutoComplete. Select multiple has removable chips, a “Checkbox Selection” example (including a select-all composition), a filter in the header, groups and an example trigger that shows the selection count, and AutoComplete multiple handles server search. In our test build, Select multiple with 5,000 options rendered all 5,000. Toggle-all and the selection counter, which were props in 10.x, are now examples you compose. The license changed too (see below).
Choose it if you are licensed for PrimeUI and comfortable composing.
CoreUI Multi Select
Our own entry. CoreUI Multi Select (CMultiSelect, @coreui/react-pro 5.29.2) is a CoreUI PRO component: $127 per developer, perpetual, 12 months of updates, renewal at the same price. Every other library in the table except PrimeReact 11 is free, so it has to earn its price, and this is the category where CoreUI is strongest.
One component documents: selectAll (with a mode that acts on filtered results), selectionLimit with an onSelectionLimit event, optionsGroupsSelectable to select a whole group from its header, checkbox options (the default optionsStyle), selectionType set to tags, counter or text, allowCreateOptions, async loading through External Data with loading, virtualScroller (with a 1,000-record example), global and external search, cleaner, validation feedback, and a hidden <select multiple> so values submit with the form and native required works. The eight features in our table where this matters most are select all, selection limit, group selection, checkbox options, a counter, virtualization, option creation and async loading. Of the React libraries we checked, only CoreUI documents all eight on one component.
Where CoreUI loses: there is no template 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 you build admin forms with long, grouped option lists in a Bootstrap or CoreUI app. Team prices are on the pricing page.
Licensing in 2026: what changed
PrimeReact is no longer MIT. Since 11.0.0-rc.1 (June 28, 2026), primereact ships under the PrimeUI License with a license key; in our test build without a key, Select worked but displayed an “Invalid PrimeUI License” badge. The free Community License covers individuals and organizations with fewer than 5 developers, fewer than 10 employees, under $1M revenue and under $3M in outside funding, outside the public sector and education, renewed yearly. The commercial license is $599 per developer until December 31, 2026 (then $799), perpetual with one year of updates, and $399 per developer per year for update renewals. PrimeReact 10.9.9, the last MIT line, still has the old MultiSelect.
FAQ
What is the best React multi select component?
On Material UI, use Autocomplete with multiple. For long lists with a selection cap, Ant Design Select. For a dedicated free component, Mantine MultiSelect. When you need select all, limits and group selection together, CoreUI Multi Select (CoreUI PRO).
How do I limit how many options a user can select in React?
Ant Design has maxCount, Mantine MultiSelect has maxValues with onMaxValues, and CoreUI Multi Select has selectionLimit with an onSelectionLimit event. In the official MUI Autocomplete and react-select multi demos, selections were not capped.
Which React multi select shows “+N more” instead of all chips?
MUI Autocomplete has limitTags with a “+N” label, and Ant Design has maxTagCount, including a “responsive” mode. CoreUI uses a counter mode (selectionType="counter"), and Mantine offers a “Max displayed values” recipe.
Does react-select virtualize long option lists?
No. In our test with react-select 5.10.2 and 5,000 options, 4,998 option nodes were rendered with the menu open. Ant Design, HeroUI and CoreUI document built-in virtualization.
Which React multi select has a select all option?
CoreUI Multi Select has a selectAll prop, including a mode that selects only the filtered results. PrimeReact 11 shows select all as a composition in its Checkbox Selection example. The official MUI Autocomplete and react-select multi demos have no select-all option.
Can a React multi select submit values with a plain HTML form?
Yes: Mantine (hidden input), Chakra UI (HiddenSelect), HeroUI and shadcn/ui (name), react-select (name with delimiter), MUI Select (comma-joined hidden input) and CoreUI (a hidden <select multiple>).