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 JavaScript Multi Select Libraries (2026): 7 Vanilla JS Options Compared

Short answer. Slim Select is the most complete free multi select in plain JavaScript: tags, a “{number} selected” counter, select all for the whole list and per group, minimum and maximum selections, search, async loading and creating options, all MIT with no dependencies. Tom Select is the best pick for Bootstrap 5 projects that want a free library: checkbox options, a clear button, creating and pasting values, async loading and a Bootstrap 5 theme in the package. Choices.js is a solid MIT choice for tag-style inputs with fuzzy search. Select2 still works well for paged remote data if jQuery is on the page. CoreUI Multi Select is the most complete for selection itself (three-state select all, selecting whole groups, checkboxes, counter mode and limits) with Bootstrap styling, and it is a paid PRO component.

How we compared

We reviewed seven multi select options for plain JavaScript in October 2026 against a 23-feature multi select checklist: the native <select multiple> styled by Bootstrap 5.3.8, tom-select 2.6.2, choices.js 11.2.4, select2 4.1.0, slim-select 4.6.2, Web Awesome 3.14.0 (wa-select multiple in the free core, wa-combobox in Web Awesome Pro) and CoreUI Multi Select from @coreui/coreui-pro 5.29.2.

Each cell comes from the vendor’s documentation, its source code, or a test in its public demo. We mark a feature as missing (❌) only when the vendor says so in its own docs or we reproduced the gap in a demo. When the docs are silent, or the gap only shows up in source code, we show — (no data), which is not a claim of absence. CoreUI publishes this page; its ❌ entries come from our own option reference.

The comparison at a glance

✅ built in and documented · Partial = limited, a related mode, or a separate component · ❌ absence confirmed by the vendor or in a demo · — no data

Library (version) Tags Counter instead of tags Checkbox options Select all Selection limit Clear all Search Create options Async search Select a whole group Custom tag template Bootstrap 5 theme License
Native multiple select + Bootstrap (5.3.8) ❌ — ❌ — — — ❌ — — — ❌ ✅ MIT
Tom Select (2.6.2) ✅ — ✅ (plugin) — ✅ ✅ (plugin) ✅ ✅ ✅ — ✅ ✅ (in package) Apache-2.0
Choices.js (11.2.4) ✅ — — — ✅ — ✅ ✅ ✅ — ✅ Own styles MIT
Select2 (4.1.0) ✅ — — — ✅ ✅ ✅ ✅ ✅ — ✅ Community theme MIT, requires jQuery
Slim Select (4.6.2) ✅ ✅ — ✅ ✅ (min and max) ✅ ✅ ✅ ✅ ✅ ❌ — MIT
Web Awesome (3.14.0) ✅ ✅ (+n) Partial (check icon) — — ✅ ✅ (Pro) ✅ (Pro) ✅ (Pro) — ✅ Own themes MIT core; combobox in Pro
CoreUI Multi Select (coreui-pro 5.29.2) ✅ ✅ ✅ ✅ (three-state) ✅ ✅ ✅ Partial (free Chip Input) Partial (external search) ✅ ❌ ✅ CoreUI PRO, $127/dev perpetual

The libraries, one by one

Native multiple select with Bootstrap styles

Bootstrap’s .form-select supports the multiple attribute, which renders the browser’s list box where users hold Ctrl, Cmd or Shift to pick several values. Bootstrap’s docs state that custom styles cannot modify the options, so tags, checkboxes and search need a library. The upside: all selected values land in FormData without any script, and validation styles and RTL work as for any Bootstrap field.

Choose it if the list is short and your users are comfortable with Ctrl-click.

Slim Select

Slim Select 4.6.2 (MIT, released October 27, 2026, no dependencies) packs the most selection features of any free library here. Selected values show as pills, and maxValuesShown collapses them into a “{number} selected” message. selectAll adds a Select All / Unselect All control, and data-selectall on an <optgroup> selects a whole group. minSelected and maxSelected set limits, allowDeselect clears down to the minimum, events.addable creates options and events.search loads results from a promise. Options can contain HTML, and mandatory options cannot be removed. Two limits: the docs state that pills always show text, so there is no custom tag template, and the docs do not mention a Bootstrap theme.

Choose it if you want select all, counters and limits for free in a small library.

Tom Select

Tom Select 2.6.2 (Apache-2.0, July 2026) handles multi select and free tag entry with one component. Plugins in the package add a remove button on each tag, checkbox options, a clear button and option group columns. maxItems sets a limit, the list stays open after each pick by default, create with a delimiter turns typed or pasted text into several values, and load fetches options as the user types. render.item customizes tags and render.option the list. Bootstrap 4 and 5 themes ship in the package.

Choose it if your project is on Bootstrap 5 and you want a free, maintained multi select that already looks right.

Choices.js

Choices.js 11.2.4 (MIT, August 2026) renders selected values as removable items, supports maxItemCount with a custom message, keeps the list open after a pick, and uses Fuse.js for fuzzy search. Its text type works as a free tag input with a delimiter and paste support, and addChoices creates options in a multiple select. Remote options load through setChoices with a promise and a loading text. Selected options disappear from the list by default. Styles are its own, and there is no Bootstrap theme in the package.

Choose it if you want a light tag-style input with fuzzy search and will style it yourself.

Select2

Select2 4.1.0 (MIT, final release May 26, 2026) shows selections as pills with a remove button, supports maximumSelectionLength, allowClear to clear everything, closeOnSelect: false to keep the list open, tagging with token separators, and remote data through ajax with paging on scroll. It still requires jQuery, and Bootstrap 5 styling comes from the community select2-bootstrap-5-theme package. Counters, select all and checkbox options are not described in its docs.

Choose it if jQuery is already loaded and remote, paged results are the main requirement.

Web Awesome Select (multiple)

Web Awesome is the successor of Shoelace (the Shoelace repository is archived). The free, MIT wa-select with multiple shows tags, collapses extra ones into “+n” with max-options-visible, supports custom tag rendering with getTag, a clear button and native form participation with required. Selected options get a check icon rather than a checkbox. Search, async data and creating options need wa-combobox from the paid Web Awesome Pro plan; we could not read the Pro price from the vendor’s pricing page. Option groups are visual only.

Choose it if you use Web Awesome and want tags and form validation without extra libraries.

CoreUI Multi Select

Our own entry. CoreUI Multi Select (@coreui/coreui-pro 5.29.2) is a CoreUI PRO component: $127 per developer, perpetual, 12 months of updates, renewal at the same price. Slim Select, Tom Select and Choices.js are free, so it has to earn its price, and selection is where it does.

selectAll adds a three-state “select all” checkbox, and selectAllMode can limit it to the options that match the current search. optionsGroupsSelectable turns each group header into a three-state checkbox. optionsStyle shows options as checkboxes (the default) or plain text, and selectionType shows the selection as tags, a counter or comma-separated text. selectionLimit caps the selection and fires an event when reached. Search can be local, global or external, the cleaner button clears everything, templates cover options, groups and the dropdown header, and the original <select> stays in the form so name, required and Bootstrap’s valid and invalid states work as on any field.

Where CoreUI loses: the Bootstrap version cannot create options (the React version can; for free-form values CoreUI offers the separate, free Chip Input), has no virtualization of long lists, no loading state during external search and no tag template. Slim Select matches several of our selection features for free (select all, per-group selection, counter, limits), but without three-state checkboxes or Bootstrap styling.

Choose it if your app is built on Bootstrap or CoreUI and users select many values from long, grouped lists. Team prices are on the pricing page.

Maintenance and dependencies in 2026

Slim Select (October 2026), Web Awesome (September 2026), Choices.js (August 2026) and Tom Select (July 2026) all shipped releases recently. Select2 released its final 4.1.0 in May 2026, and it remains a jQuery plugin, which matters if you dropped jQuery with Bootstrap 5.

FAQ

What is the best free JavaScript multi select?

For selection features, Slim Select: select all globally and per group, a counter, minimum and maximum limits, search, async loading and creating options under MIT. For Bootstrap 5 projects, Tom Select is the easier fit because its Bootstrap 5 theme ships in the package.

Which multi select has a “select all” option?

Slim Select (selectAll, also per group) and CoreUI Multi Select (selectAll with a three-state checkbox and a mode for filtered options). We did not find a documented select all action in Tom Select, Choices.js, Select2 or Web Awesome.

Which JavaScript multi select can show checkboxes next to options?

Tom Select through its checkbox_options plugin and CoreUI Multi Select by default (optionsStyle: 'checkbox'). Web Awesome marks selected options with a check icon.

Can I show “3 selected” instead of tags?

Yes, in Slim Select (maxValuesShown with maxValuesMessage), Web Awesome (max-options-visible shows “+n”) and CoreUI Multi Select (selectionType: 'counter').

Is CoreUI Multi Select free?

No. It is part of CoreUI PRO at $127 per developer, perpetual, with 12 months of updates. The free CoreUI package includes the native .form-select and the Chip Input component for free-form tags.