UI + UX Search, Browse, And Discovery established

Filter panel

Provide a labelled filter panel that groups criteria, preserves selected values, makes active filters visible near the results, applies changes predictably, and lets users clear one filter or all filters without losing unrelated search or sort context.

Decision first

Choose this pattern when the problem matches

Use when

  • Users need to narrow the current search results, browse results, table, card grid, or list by multiple criteria.
  • Filter controls are too numerous or structured to fit as a few inline chips or a single dropdown.
  • The result set needs active-state visibility and clear recovery because filters can hide important items.
  • Desktop and mobile layouts require different filter presentation while preserving the same filtering model.

Avoid when

  • The result set is small enough that scanning is faster than filtering.
  • Users need to change sort order, not include or exclude items.
  • The task is advanced query construction with boolean logic, nested clauses, or saved search syntax.
  • The controls navigate to different sections or pages instead of narrowing the current result set.
  • Only one lightweight criterion is available and an inline control or segmented control is clearer.

Problem it prevents

Users need to narrow a visible result set using several criteria, but the controls, applied state, result count, and reset behavior can become disconnected.

Pattern anatomy

What a strong implementation has to make clear

User need

The page contains a searchable, browsable, or scannable result set with multiple attributes users can use to narrow it.

Pattern promise

Provide a labelled filter panel that groups criteria, preserves selected values, makes active filters visible near the results, applies changes predictably, and lets users clear one filter or all filters without losing unrelated search or sort context.

Required state

Default state with no user-applied filters and an explicit result count.

Recovery path

Users cannot tell that hidden filters are active.

Access contract

Use semantic form controls with fieldsets, legends, labels, and accessible names for filter categories and values.

Quality bar

The difference between expert and weak execution

Strong implementation

Specific, visible, recoverable

  • A desktop search page shows a left filter panel with Status, Type, and Date groups, while active chips and the result count sit above the results.
  • A mobile result page opens filters in a full-screen panel with Back, Apply filters, Clear all, and a badge showing three active filters on the closed trigger.
  • A user selects Status: Open and Type: Appeal, applies the batch, lands back at the result summary, and sees 12 records with both criteria removable.
  • A user clears the Date filter chip and keeps the same search query, sort order, and view mode.
Weak implementation

Vague, hidden, hard to recover from

  • A filter drawer closes with no active count, leaving users unaware that filters are still hiding records.
  • A panel mixes filter options, navigation links, sort controls, and saved views under one Filters heading.
  • Applying a filter silently resets the query, sort order, current page, and view density.
  • Instant filtering reloads after every checkbox and repeatedly pushes the result summary out of view.
UI guidance
  • Render filter categories as labelled form controls in a panel adjacent to the result set on wide layouts, with a visible result count and active-filter summary near the results.
  • When the panel is collapsed, hidden, or moved into a mobile drawer or accordion, show the number of active filters and a nearby clear-all path so users know the result set is constrained.
UX guidance
  • Use a filter panel to help users narrow the current list or search result set while preserving orientation, search query, sort order, pagination context, and selected values.
  • Choose batch apply when users are likely to change several filter categories before reviewing results; choose instant updates only when changes are lightweight and do not disorient users.
Implementation contract

What the implementation must handle

States

  • Default state with no user-applied filters and an explicit result count.
  • Draft state where selected filter controls have changed but batch results have not yet updated.
  • Applied state with active-filter count, result count, and removable applied criteria near the results.
  • Collapsed or mobile-panel state that still exposes the active-filter count and a way back to results.

Interaction

  • Each filter category has a clear label and contains controls appropriate to the value type, such as checkboxes, radios, ranges, date fields, or text fields.
  • Applying filters updates the result count, active-filter summary, and result list as one synchronized outcome.
  • Clearing one filter removes only that criterion and leaves search query, sort order, view mode, and unrelated filters intact.
  • Clear all returns user-applied filters to their default filter state without erasing unrelated query text or navigation context.

Accessibility

  • Use semantic form controls with fieldsets, legends, labels, and accessible names for filter categories and values.
  • Announce result-count changes through a stable status region when filters apply.
  • Keep applied-filter chips or buttons keyboard reachable and name both the category and selected value.
  • Avoid focus loss when opening or closing mobile filter panels; return focus to the trigger or result summary predictably.

Review

  • Can users tell which filters are applied without opening or scrolling to the filter panel?
  • Does applying filters synchronize the controls, result count, active summary, and list together?
  • When filters are collapsed or on mobile, where is the active count shown?
  • Does Clear all reset only filters, or does it accidentally erase query, sort, pagination, saved view, or layout state?
Interactive lab

Inspect the states before you copy the pattern

Apply grouped filters

Open the panel, change draft criteria, apply them, and verify the collapsed count and result summary stay synchronized.

Filter panel
Interactive demo is ready

Launch the live UI/UX lab when you want to inspect states, keyboard behavior, and common failure modes.

State To Inspect

Default state with no user-applied filters and an explicit result count.

Keyboard / Access

Tab reaches the filter trigger, category headings, controls, Apply, Clear, and result summary in a predictable order.

Avoid Generating

Hiding active filters inside a closed panel with no count, chips, or result-state summary.

Evidence trail

Source-backed claims behind this guidance

Carbon Design System Filtering Pattern

IBM Carbon Design System - checked

Carbon filtering guidance documents multiple categories, batch versus instant updates, hidden filter indicators, and reset behavior.

Visa Product Design System Filters Pattern

Visa Product Design System - checked

Visa guidance documents filter panel anatomy, active indicators, applied chips, clear-all controls, apply buttons, and mobile considerations.

NSW Digital Design System Filters

NSW Government - checked

NSW guidance documents collapsed and full-screen filter panels, active-count indicators, sticky apply controls, and value retention.

MOJ Design System Filter

Ministry of Justice - checked

MOJ guidance documents selected filters, clear filters, apply behavior, and grouped filtering for lists or search results.

Full agent/debug reference

Problem Context

  • The page contains a searchable, browsable, or scannable result set with multiple attributes users can use to narrow it.
  • Filter controls may be persistent on desktop but hidden behind a button, accordion, drawer, or full-screen panel on smaller screens.
  • Users need to understand whether the displayed results match current filter controls, especially when filters are batch-applied or hidden out of view.

Selection Rules

  • Choose a filter panel when users need grouped controls for narrowing the current result set by several criteria.
  • Use a persistent side panel when users frequently refine filters while comparing result cards, list rows, or search results.
  • Use a collapsed accordion, drawer, or full-screen panel on compact layouts when result scanning needs priority, but keep an active-filter count on the closed trigger.
  • Use batch apply when users may change multiple categories together, result refresh is slow, or each instant update would disrupt focus and reading position.
  • Use instant filtering only when selections are simple, fast, and the result count or applied-filter summary updates without shifting users away from their task.
  • Show active filters and result count near the results, not only inside the panel, so users can understand result state when the panel is hidden or scrolled away.
  • Keep sort controls visually and semantically separate because sorting changes order while filters include or exclude records.
  • Use filter chips as removable active-state summaries, not as the only way to discover available filter categories.
  • Use no-results recovery when the current filter combination produces an empty result set, but preserve the filters that caused the empty state.

Required States

  • Default state with no user-applied filters and an explicit result count.
  • Draft state where selected filter controls have changed but batch results have not yet updated.
  • Applied state with active-filter count, result count, and removable applied criteria near the results.
  • Collapsed or mobile-panel state that still exposes the active-filter count and a way back to results.
  • No-results state that preserves active filters and offers clear-one or clear-all recovery.
  • Loading or recalculating state when applying filters takes noticeable time.

Interaction Contract

  • Each filter category has a clear label and contains controls appropriate to the value type, such as checkboxes, radios, ranges, date fields, or text fields.
  • Applying filters updates the result count, active-filter summary, and result list as one synchronized outcome.
  • Clearing one filter removes only that criterion and leaves search query, sort order, view mode, and unrelated filters intact.
  • Clear all returns user-applied filters to their default filter state without erasing unrelated query text or navigation context.
  • Collapsed panels, drawers, and mobile triggers expose whether filters are active before users reopen the panel.
  • Keyboard focus moves predictably after Apply or Clear, preferably to the result summary or the control that changed state.

Implementation Checklist

  • Group filter controls under user-facing category headings and use native form controls where possible.
  • Place a result count and applied-filter summary immediately before or above the result list.
  • Decide explicitly between batch apply and instant updates; do not leave controls visually selected while results still show the previous state without a draft cue.
  • Show active counts on collapsed categories, filter buttons, and mobile triggers.
  • Provide clear-one controls for each applied criterion and a clear-all control for the full filter set.
  • Preserve selected values when users reopen the panel, change a different filter, page results, or recover from zero results.
  • Keep sort, search query, saved view, and pagination state separate from filter reset behavior.
  • On small screens, return users to the result summary after applying filters and keep an accessible route back to the panel.

Common Generated-UI Mistakes

  • Hiding active filters inside a closed panel with no count, chips, or result-state summary.
  • Using a filter panel as a navigation drawer that sends users to different pages instead of narrowing the current data set.
  • Resetting search query, sort order, page size, or view density when users clear filters.
  • Combining pending draft selections with already-applied result counts without explaining the mismatch.
  • Putting every possible attribute into one long panel without prioritization, grouping, search within long categories, or progressive disclosure.
  • Using instant updates that steal focus, reload the page, or move the result summary after every checkbox selection.

Critique Questions

  • Can users tell which filters are applied without opening or scrolling to the filter panel?
  • Does applying filters synchronize the controls, result count, active summary, and list together?
  • When filters are collapsed or on mobile, where is the active count shown?
  • Does Clear all reset only filters, or does it accidentally erase query, sort, pagination, saved view, or layout state?
  • Is this panel exposing filter criteria, or is it being misused as navigation, sorting, or advanced search?
  • If the panel uses batch apply, how does the UI show that selected controls are drafts until Apply?
Accessibility
  • Use semantic form controls with fieldsets, legends, labels, and accessible names for filter categories and values.
  • Announce result-count changes through a stable status region when filters apply.
  • Keep applied-filter chips or buttons keyboard reachable and name both the category and selected value.
  • Avoid focus loss when opening or closing mobile filter panels; return focus to the trigger or result summary predictably.
  • Do not depend on color alone for active filter indicators; include counts, text, badges, or selected control states.
  • Retain values and minimize redundant entry when users revisit filters or refine a failed result set.
Keyboard Behavior
  • Tab reaches the filter trigger, category headings, controls, Apply, Clear, and result summary in a predictable order.
  • Opening a drawer or full-screen panel moves focus into the panel and closing it returns focus to the trigger or result summary.
  • Applying a batch filter does not trap focus in a stale panel; focus should move to the updated result summary when appropriate.
  • Removing an applied filter chip keeps focus near the remaining active filters or result summary.
  • Escape or Back behavior in mobile panels closes the panel without applying draft changes when that is the documented contract.
Variants
  • Persistent side filter panel
  • Top filter panel
  • Collapsed filter accordion
  • Mobile full-screen filter panel
  • Filter drawer
  • Batch apply filters
  • Instant filter panel
  • Category counts in collapsed filters

Verification

Last verified: