Best JavaScript Select and Autocomplete Libraries (2026): 7 Options Compared
Short answer. Tom Select is the best free all-rounder: search with custom scoring, match highlighting, creating options, async loading, loading more results on scroll, option templates and a Bootstrap 5 theme in the package, under Apache-2.0 with no jQuery. Slim Select is the lightest maintained alternative (no dependencies, released October 27, 2026) with highlighting and async search. Choices.js suits forms that need fuzzy search and creating options in a small MIT package. Select2 is back in active maintenance and strong on remote data and paging, but it still requires jQuery. CoreUI Autocomplete fits Bootstrap apps that want highlighting, inline completion hints and Bootstrap validation styles in one component, and it is a paid PRO component.
How we compared
We reviewed seven select and autocomplete options for plain JavaScript in October 2026, against a 23-feature select checklist: the native <select> 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 in the free core, wa-combobox in Web Awesome Pro) and CoreUI for Bootstrap (@coreui/coreui 5.9.1 and @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 only mark a feature as missing (❌) 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 that the feature is absent. CoreUI publishes this page; its ❌ entries come from our own option reference.
The comparison at a glance
✅ built in and documented · Partial = limited, a workaround, or a related mode · ❌ absence confirmed by the vendor or in a demo · — no data
| Library (version) | Search as you type | Custom match function | Match highlighting | Value outside the list | Create options | Async search | Load more on scroll | Option groups | Option templates | Dropdown in <body> |
Bootstrap 5 theme | License |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
Native select + Bootstrap .form-select (5.3.8) |
❌ | — | — | — | — | — | — | Partial (<optgroup>) |
❌ | — | ✅ | MIT |
| Tom Select (2.6.2) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ (in package) | Apache-2.0 |
| Choices.js (11.2.4) | ✅ | ✅ (Fuse.js) | — | Partial (added as option) | ✅ | Partial (loads once) | — | ✅ | ✅ | — | Own styles | MIT |
| Select2 (4.1.0) | ✅ | ✅ (local data) | — | Partial (tags) | ✅ | ✅ | ✅ | ✅ | ✅ | ✅ | Community theme | MIT, requires jQuery |
| Slim Select (4.6.2) | ✅ | ✅ | ✅ | Partial (added as option) | ✅ | ✅ | — | ✅ | ✅ | ✅ | — | MIT |
| Web Awesome (3.14.0) | ✅ (Pro) | ✅ (Pro) | — | ✅ (Pro) | ✅ (Pro) | ✅ (Pro) | — | Partial (visual only) | ✅ | — | Own themes | MIT core; combobox in Pro |
| CoreUI Autocomplete (coreui-pro 5.29.2) | ✅ | Partial | ✅ | ✅ | ❌ | Partial (external search) | ❌ | ✅ | ✅ | ✅ | ✅ | .form-select MIT; Autocomplete in CoreUI PRO, $127/dev perpetual |
The libraries, one by one
Native select with Bootstrap styles
Bootstrap’s .form-select styles the browser’s own <select>: sizes, disabled state, floating labels, validation styles and RTL. Bootstrap’s docs are explicit that custom styles only change the select’s initial appearance and cannot modify the options, so search, option templates and tags need a library. What you get for free is a value that always lands in FormData and the browser’s own dropdown on every device.
Choose it if your lists are short and you want zero JavaScript.
Tom Select
Tom Select 2.6.2 (Apache-2.0, July 2026) is a maintained fork of selectize.js without jQuery, and the most complete free library here. One component handles single select, multi select and tags. Search runs on the Sifter engine with weighted fields, diacritics handling and a score function for your own matching; matches are highlighted by default. create turns typed text into a new option, load fetches options as the user types, and the virtual_scroll plugin loads the next page of results when the list is scrolled (despite the name, it pages results rather than virtualizing the list). Templates cover options, the selected item, the “no results” and loading states, and dropdownParent can attach the list to body. Bootstrap 4 and 5 themes ship in the package.
Choose it if you want the widest free feature set and a Bootstrap 5 theme without extra work.
Choices.js
Choices.js 11.2.4 (MIT, August 2026) is a lightweight, jQuery-free library whose only dependency is Fuse.js, which powers fuzzy search with thresholds and weights. It supports option groups, disabled options, templates for options and selected items, a remove button, custom “no results” text and RTL. With addChoices typed text becomes a new option on Enter. Remote data loads through setChoices with a promise, which locks the control while loading; the demo loads once at start rather than on every keystroke. The default search shows only four results (searchResultLimit), so raise it for long lists. It ships its own styles, not a Bootstrap theme. Documentation is the README and a demo page.
Choose it if fuzzy search matters and you are happy to style it yourself.
Select2
Select2 4.1.0 (MIT) returned to active maintenance with a final 4.1.0 release on May 26, 2026, and commits continued into October. It remains a jQuery plugin. Its strength is remote data: the ajax option with server-side filtering, “Searching…” feedback, and paging of results on scroll. It also offers tagging with createTag and token separators, templateResult and templateSelection, allowClear, 40+ translations and RTL. The official theme targets Bootstrap 4; Bootstrap 5 styling comes from the community select2-bootstrap-5-theme package.
Choose it if jQuery is already on the page and you need paged remote results.
Slim Select
Slim Select 4.6.2 (MIT, October 27, 2026) has no dependencies and is written in TypeScript, with Vue and React wrappers. It highlights matches with searchHighlight, takes a custom searchFilter, loads async results through events.search returning a promise, creates options through events.addable, and attaches its list to body by default with configurable position. Options can contain HTML, groups can be collapsible, and below 768 px it can open as a modal on phones. There is no Bootstrap theme in the docs.
Choose it if you want a small, actively released library and do not need Bootstrap styling out of the box.
Web Awesome Select and Combobox
Web Awesome is the successor of Shoelace (the Shoelace repository is archived). The free, MIT wa-select is a styled select with option content and slots, a clear button and native form participation, but no search. Search, custom filtering, free text (allow-custom-value), creating options (allow-create) and async data (dataSource or a server mode) are in wa-combobox, part of the paid Web Awesome Pro plan; we could not read the Pro price from the vendor’s pricing page. Option groups are visual only (a divider and a small heading). As web components, they work next to Bootstrap but use their own theme system.
Choose it if you build with Web Awesome and need a combobox that participates in native form validation.
CoreUI Autocomplete
Our own entry. CoreUI for Bootstrap has a free, MIT .form-select (a styled native select with validation feedback) and two PRO components for everything else: Autocomplete and Multi Select in single mode. Both are in CoreUI PRO, $127 per developer, perpetual, 12 months of updates, renewal at the same price. Tom Select, Choices.js and Slim Select are free, so here is what the license buys.
Autocomplete highlights matches (highlightOptionsOnSearch), shows an inline completion hint that Tab accepts (showHints), accepts values outside the list unless you set allowOnlyDefinedOptions, supports grouped options, disabled options and groups, option templates, a cleaner button, a “no results” label and a container option that moves the dropdown to body. Valid and invalid states follow Bootstrap’s form validation, and name puts the value into the submitted form. For remote data, search: "external" emits an input event and you update the options yourself.
Where CoreUI loses: there is no option creation in the Bootstrap version (the React version has it), no loading state for async search, no paging or virtualization of long lists, no selected value template, and no custom match function beyond the built-in modes. Tom Select covers almost all of that for free.
Choose it if your app is on Bootstrap or CoreUI, you already have CoreUI PRO, or inline hints and Bootstrap validation states matter more than option creation. Team prices are on the pricing page.
Maintenance and dependencies in 2026
Tom Select (July 2026), Choices.js (August 2026), Slim Select (October 2026) and Web Awesome (September 2026) all shipped releases in the last four months. Select2 shipped its final 4.1.0 in May 2026, and it still needs jQuery, which matters if you removed jQuery when moving to Bootstrap 5. None of the libraries here documents virtualization of very long lists, so for tens of thousands of options use async search instead of loading everything.
FAQ
What is the best free JavaScript select library?
Tom Select. It covers search with custom scoring, highlighting, creating options, async loading, loading more on scroll, templates and a Bootstrap 5 theme under Apache-2.0, without jQuery.
What is a good Select2 alternative without jQuery?
Tom Select is the closest match in features and ships a Bootstrap 5 theme. Choices.js and Slim Select are smaller alternatives, both MIT and dependency-light.
Which select library has a Bootstrap 5 theme?
Tom Select ships Bootstrap 4 and 5 themes in its package. Select2 has a community Bootstrap 5 theme. CoreUI’s Autocomplete and Multi Select are built on Bootstrap 5 classes. Choices.js, Slim Select and Web Awesome use their own styles.
Is CoreUI Autocomplete free?
No. The styled native .form-select is free under MIT, while Autocomplete and Multi Select are part of CoreUI PRO at $127 per developer, perpetual, with 12 months of updates.
Which libraries load options from a server while the user types?
Tom Select (load), Select2 (ajax), Slim Select (events.search) and the Web Awesome Pro combobox (dataSource). Choices.js loads remote options through a promise, and CoreUI Autocomplete emits an input event so your code can fetch and update the options.