Chosen is a jQuery plugin that makes long, unwieldy select boxes much more user-friendly.

2 detections
2 websites tracked
Updated 04 Jun 2026

Websites Using Chosen

What Is Chosen?

Chosen is a lightweight JavaScript library that transforms ordinary HTML <select> boxes into friendlier, more usable dropdown and multi-select controls. Instead of replacing the way you build forms, it enhances elements you already have: you mark a standard <select> and Chosen takes over its appearance and behavior, adding a search box for long option lists, removable "tags" for multiple selections, keyboard navigation, and a cleaner visual style than the browser's native control.

Chosen originated as a jQuery plugin developed at Harvest, a time-tracking and invoicing company, and was released as open source under the MIT license. For years it was one of the most widely adopted select-enhancement libraries on the web, bundled into countless admin panels, dashboards, and content-management back ends. A separate, dependency-free "proto" build for the Prototype.js framework has also existed, but the jQuery edition is by far the most common in the wild.

It is important to frame Chosen accurately: it is not a full UI framework, a component system, or a build tool. It is a focused enhancement layer, a single concern done well, that sits on top of a form control. In the StackOptic framework category it belongs alongside other front-end JavaScript libraries that augment a page rather than generate it, much like a date picker or a carousel script. You would not build an application "in Chosen"; you would add Chosen to a few <select> elements where the native dropdown felt clunky.

Chosen is also a client-side library, not a hosted service or a browser extension. It ships as a small CSS file and a JavaScript file that are downloaded by the visitor's browser and executed there. Because those files have recognizable names and produce a very distinctive DOM structure once they run, Chosen is one of the easier front-end libraries to identify from the outside, whether you are reading the page source by hand or scanning a URL with an automated detector.

A useful way to understand Chosen's enduring presence is to remember the era it came from. Before modern frameworks made rich form components routine, the native HTML <select> was notoriously hard to style and painful to use for long lists, you could not search it, you could not easily pick several items, and its appearance was dictated by the operating system. Chosen solved all of that with a single script tag and one line of initialization. That low barrier to entry is why it spread so widely across the WordPress, Rails, and PHP-admin worlds, and why it still turns up on a great many sites built or last updated during that period.

How Chosen Works

Chosen follows a progressive-enhancement model. You start with a perfectly ordinary <select> element, the kind every browser understands, and then activate Chosen on it, typically with a single jQuery call such as $('.my-select').chosen();. From that moment, Chosen reads the original element's options, hides the native control, and renders its own replacement markup in the same place.

The replacement is a set of styled <div> and <ul> elements that imitate a dropdown. For a single-select, Chosen shows the current choice with a downward chevron; clicking it opens a results list that includes a search field once the list is long enough. As you type, Chosen filters the visible options in real time. For a multi-select, each chosen value appears as a small removable token, and the search field lets you keep adding more. Throughout, the original <select> remains in the DOM but hidden, and Chosen keeps it synchronized, so when the form is submitted, the server receives exactly the same values it would have without Chosen present. This is the key to its compatibility: from the back end's perspective, nothing has changed.

Under the hood, Chosen attaches event handlers for clicks, keystrokes, and focus, manages an internal model of which options match the current search term, and toggles CSS classes to reflect open, active, highlighted, and selected states. The styling comes from a companion stylesheet (chosen.css), and a small sprite image historically supplied the arrow and close icons. Configuration is passed as an options object, letting you set placeholder text, allow deselection, limit the number of selections, enable grouping, and control the search behavior.

Because Chosen depends on jQuery in its most common form, a page using it will also be loading jQuery. That pairing is itself a detection clue: Chosen rarely appears without jQuery nearby. The library is small and self-contained, it does not phone home, fetch remote data, or require a build step, which is part of why it was so easy to drop into legacy projects and why it lingers on so many of them today.

It helps to walk through a concrete interaction. Imagine a form with a country selector containing two hundred options. Natively, a user must scroll a long, unsearchable list. With Chosen initialized, the same control becomes a box that says "Select a country"; clicking it reveals a search field, and typing "ne" instantly narrows the list to Netherlands, New Zealand, and a handful of others. The user clicks one, the dropdown closes, and the hidden native <select> now holds that value ready for submission. The developer wrote almost no code to achieve this, and the server-side form handler did not change at all. That combination of high perceived polish and near-zero integration cost is the entire value proposition of Chosen.

How to Tell if a Website Uses Chosen

Chosen leaves a very recognizable footprint because it both loads named assets and rewrites the DOM into a fixed, branded structure. StackOptic inspects these signals from the server side, and you can confirm the same clues with ordinary browser tools.

Named asset files. The clearest signal is a request for chosen.jquery.js, chosen.min.js, or chosen.css (sometimes chosen.proto.js for the Prototype build). These filenames are distinctive and are frequently served from a /chosen/ directory or a CDN path. A library reference such as chosen.jquery.min.js is close to definitive.

The chosen-container markup. When Chosen initializes, it injects elements with very specific class names. The wrapper carries class="chosen-container" (with chosen-container-single or chosen-container-multi appended), and inside you will find chosen-single, chosen-drop, chosen-results, chosen-search, and chosen-choices. Spotting any chosen- prefixed class in the rendered DOM is a strong tell.

A hidden adjacent <select>. Because Chosen hides rather than removes the original control, you will typically see a <select> with display: none or a chosen-select class sitting right next to the generated chosen-container. That pairing is characteristic.

jQuery alongside it. The common build requires jQuery, so a Chosen page almost always loads jQuery too. The presence of jQuery does not prove Chosen, but its absence makes the jQuery build unlikely.

Here is how to check each signal yourself:

MethodWhat to doWhat Chosen reveals
View SourceRight-click, "View Page Source"References to chosen.jquery.js / chosen.css; sometimes a chosen-select class on a <select>
Browser DevToolsInspect a dropdown element and the Network tabThe chosen-container structure, chosen-* classes, and the request for the Chosen script
curl -I / curl -scurl -s https://example.com | grep -i chosenStatic references to Chosen's filenames in the served HTML
WappalyzerRun the extension on the live pageIdentifies "Chosen" under JavaScript libraries
BuiltWithLook up the domainCurrent and historical Chosen detection in the tech profile

A fast terminal check is curl -s https://example.com | grep -i "chosen.jquery". If that returns a match, the page is loading Chosen. For broader methodology, see our guides on how to check what JavaScript libraries a website uses and how to find out what technology a website uses.

One nuance worth understanding is the difference between static and rendered signals. The asset references (chosen.jquery.js, chosen.css) appear directly in the served HTML, so they are visible to a simple curl or View Source. The chosen-container markup, by contrast, is created by JavaScript only after the page loads, so it shows up in DevTools' live element inspector but not necessarily in the raw source. This is why combining a raw fetch with DevTools, or relying on a detector that understands both, gives the most reliable answer. Server-side analysis that examines the served HTML will catch the named asset files even when the generated markup is not present in the initial response, which is exactly the kind of signal automated detection is built to read.

Key Features

  • Searchable dropdowns. Long option lists gain an instant type-to-filter search box, dramatically improving usability.
  • Multi-select with tokens. Multiple selections render as individual removable tags rather than a hard-to-use list box.
  • Progressive enhancement. Works on top of a standard <select>, so forms still submit normally and degrade gracefully without JavaScript.
  • Option groups. Respects <optgroup> structure, keeping grouped options organized in the enhanced control.
  • Keyboard accessibility. Supports arrow-key navigation, typing to filter, and Enter to select.
  • Lightweight footprint. A single small script and stylesheet with no build step required.
  • Configurable behavior. Placeholder text, deselection, maximum selections, and search thresholds are all adjustable.

Pros and Cons

Pros

  • Extremely easy to add: one script, one stylesheet, one line of initialization.
  • Solves real usability problems with long and multiple-selection lists.
  • Preserves native form semantics, so the back end needs no changes.
  • Mature, stable, and well understood, with abundant examples across the web.

Cons

  • Depends on jQuery in its most common build, an extra dependency on modern sites that avoid it.
  • Development has slowed considerably; it is effectively in maintenance mode rather than active feature growth.
  • Styling can feel dated, and customizing it deeply means overriding its fixed markup and CSS.
  • Newer, framework-native or dependency-free select components have largely superseded it for greenfield projects.

Chosen vs Alternatives

Chosen competes with other select-enhancement libraries and, increasingly, with framework-native components. The table below clarifies where it fits.

LibraryDependencyStandout strengthBest for
ChosenjQuery (common build)Dead-simple drop-in enhancementLegacy and admin forms wanting quick polish
Select2jQueryRemote data, AJAX option loading, themingForms needing server-fed or very large option sets
Tom SelectNone (vanilla JS)Modern, dependency-free, taggingNew projects avoiding jQuery
Choices.jsNone (vanilla JS)Lightweight, framework-agnosticModern sites wanting a clean vanilla option
Native <select> + datalistNoneZero JS, fully accessibleSimple lists where enhancement is unnecessary

Chosen and Select2 are the two classic jQuery-era choices and are often confused; Select2 adds remote data loading and richer theming, while Chosen stays deliberately minimal. If you find a site is not using Chosen, the same inspection techniques will reveal the alternative. Because the jQuery dependency is such a strong companion signal, our profile on jQuery is a useful related read.

Use Cases

Chosen is most at home wherever forms contain long or multiple-choice <select> elements and a team wants a quick usability win without rebuilding the form. Administrative dashboards and content-management back ends are the classic setting: assigning categories, tags, users, or permissions from a large list is far more pleasant with Chosen's search and tokenized multi-select.

It also appears frequently on settings pages, filtering interfaces, and data-entry forms in older web applications, particularly those built on PHP admin panels, Ruby on Rails, and WordPress plugins from the era when Chosen was ubiquitous. Because it requires no build tooling, it has long been a favorite for projects that ship plain HTML, CSS, and JavaScript without a bundler.

Consider a few representative scenarios. An internal CRM might use Chosen on a "tags" field so staff can type to filter and attach several labels to a record at once. A WordPress plugin's settings screen might enhance a country or post-category selector with Chosen so administrators can search rather than scroll. A reporting tool might use Chosen multi-selects to let analysts pick a handful of metrics or dimensions before running a query. In each case the team valued a fast, low-risk improvement over a from-scratch component.

From a technology-research and competitive-intelligence standpoint, detecting Chosen on a site is a meaningful clue about the underlying stack and its vintage. Because Chosen is so closely tied to the jQuery era, finding it usually signals a site that was built or last substantially updated some years ago, and almost always one that still relies on jQuery. For a vendor selling modernization services, or an analyst profiling a prospect's technical maturity, that is exactly the kind of qualifying detail a technology-detection scan surfaces in seconds. To understand how this kind of stack data informs sales targeting, see what is technographics.

Frequently Asked Questions

Is Chosen a framework?

Not in the usual sense. Chosen is a focused JavaScript library, originally a jQuery plugin, that enhances HTML <select> boxes. It does not structure an application, manage state, or render pages the way a framework like React or Angular does. It is categorized under frameworks here as a front-end library that augments the page, but functionally it is a single-purpose UI enhancer rather than an application framework.

Does Chosen still work in 2026?

Yes. Chosen continues to function in modern browsers, which is part of why it persists on so many sites. However, its development has largely stalled, and it is best regarded as a stable, maintenance-mode library rather than an actively evolving one. For brand-new projects, many teams now reach for dependency-free alternatives like Tom Select or Choices.js, but existing Chosen integrations keep working without trouble.

How can I tell if a website uses Chosen for free?

Open the page source and look for references to chosen.jquery.js, chosen.min.js, or chosen.css. In DevTools, inspect a styled dropdown and look for elements with the chosen-container class and other chosen- prefixed classes, plus a hidden adjacent <select>. Free tools like Wappalyzer and BuiltWith confirm it, and a single curl -s URL | grep -i chosen works from any terminal.

What is the difference between Chosen and Select2?

Both are jQuery-era libraries that enhance <select> elements with search and multi-select, and they look similar at a glance. The main difference is scope: Select2 adds remote data loading over AJAX, richer theming, and templating for options, making it suited to very large or server-driven option lists. Chosen is intentionally simpler and lighter, focused on enhancing static option lists already present in the markup.

Why does Chosen keep the original select element on the page?

Chosen hides the native <select> rather than deleting it so that the form continues to behave normally. The hidden element holds the real value or values, and Chosen keeps it synchronized as the user interacts with the enhanced control. When the form is submitted, the server receives exactly the same data it would have without Chosen, which is why adding Chosen requires no back-end changes.

Want to identify Chosen, jQuery, and the rest of a site's stack automatically? Run any URL through StackOptic at https://stackoptic.com.

Chosen - Websites Using Chosen | StackOptic