| Understand what BEF does vs core exposed filters |
Overview |
Use Better Exposed Filters when you need more control over how Views exposed filters are rendered — replacing default select dropdowns with checkboxes, radio buttons, links, sliders, date pickers, or other widgets. Use core exposed filters… |
| Install BEF and enable it on a View |
Installation & Setup |
Use this guide when installing BEF on a Drupal site and enabling it for Views. |
| Configure auto-submit, secondary panel, reset button |
General Settings |
Use this guide when configuring BEF's global options that apply to all exposed filters on a View — auto-submit, secondary options panel, reset button, and input-required behavior. |
| Use checkboxes or radio buttons for filters |
Checkboxes & Radio Buttons Widget |
Use this widget when you want to replace a select dropdown with checkboxes (multi-select) or radio buttons (single-select) on an exposed filter. Use the Links widget when you want clickable URL-based navigation instead. |
| Render filters as clickable links |
Links Widget |
Use this widget when you want filters rendered as clickable links instead of form elements — useful for faceted navigation style where each option is a URL. Use checkboxes when form-based interaction (submit button) is preferred. |
| Add range sliders for numeric filters |
Sliders Widget |
Use this widget when you have a numeric filter (price, quantity, rating) and want a visual range slider instead of text inputs. Use the number widget for simple min/max inputs without visual slider. |
| Use HTML5 date pickers |
Date Pickers Widget |
Use this widget when you have a date filter and want HTML5 <input type="date"> instead of a text field. Use the hidden widget for date filters you want to set programmatically without user input. |
| Use hidden, single checkbox, or number widgets |
Hidden & Special Widgets |
Use the hidden widget to pre-set filter values without showing them to users. Use the single checkbox widget for boolean filters (on/off). |
| Customize sort display (radio/links/combine) |
Sort Widgets |
Use this guide when you have exposed sort criteria and want radio buttons or links instead of dropdowns, or want to combine sort_by and sort_order into a single control. |
| Customize pager display |
Pager Widgets |
Use this guide when you have an exposed pager (items per page) and want to render it as radio buttons or links instead of a dropdown. |
| Configure auto-submit behavior precisely |
Auto-Submit |
Use auto-submit when you want the View to refresh automatically when users change filter values, without requiring a manual "Apply" button click. Avoid auto-submit on mobile without a breakpoint guard. |
| Move filters into a collapsible secondary panel |
Secondary & Collapsible Options |
Use secondary options when you have many exposed filters and want to group less-used ones into a collapsible "Advanced options" panel. Use per-filter collapsible when you want individual filters wrapped in their own toggleable details… |
| Rewrite filter option labels or sort them |
Option Rewriting & Sorting |
Use option rewriting when you need to change display labels of filter options or remove options. Use option sorting when you need alphabetical or key-based ordering instead of the default Views order. |
| Override BEF templates in my theme |
Theming & Templates |
Use this guide when you need to customize the HTML output of BEF widgets in your theme. |
| Create a custom BEF widget plugin |
Custom Widget Plugins |
Use this guide when the built-in BEF widgets don't meet your needs and you want to create a custom filter, sort, or pager widget. Use hook_better_exposed_filters_options_alter() for simpler runtime changes that don't require a new plugin. |
| Understand BEF's JavaScript behaviors |
JavaScript Behaviors |
Use this guide when you need to understand or customize BEF's client-side behavior — auto-submit, sliders, select all/none, soft limit, or link AJAX. |
| Alter BEF options with hooks |
Hooks & Alter Functions |
Use hooks when you need to programmatically modify BEF behavior — changing options, setting slider ranges dynamically, or altering widget availability — without creating a custom widget plugin. |
| Use BEF with AJAX Views, Facets, or Search API |
Integration Patterns |
Use this guide when combining BEF with other Drupal modules — Views AJAX, Facets, Search API, Select2, or Chosen. |
| Understand BEF's config schema for export/import |
Configuration Schema |
Use this guide when exporting/importing BEF configuration, creating custom widgets that need config schema, or debugging config validation errors. |
| Debug BEF issues and avoid anti-patterns |
Common Mistakes |
Use this guide when debugging BEF issues or reviewing BEF configuration for problems. |