Filtering

Filtering allows users to narrow down a set of results by applying criteria that refines the current view.

Stylized artwork of a filtering pattern.

Overview

Filtering lets users narrow down on a large result set when they need to browse, compare, or find specific content using one or more criteria. It should be easy to apply filters and adjust selections when results become too narrow.

Considerations

Clear

Make it obvious what criteria are available, what is currently selected, and how selections affect the results. Applied filters should be visible or easy to review, especially when filter controls are hidden in a menu, sheet, drawer, or overflow area.

Simple

Use the simplest filtering UI that supports the user's task, from quick single-value filters to advanced filtering with multiple categories, values, and ranges.

Contextual

Filters should help users refine their current view. Avoid using filters for navigation, input, or switching between unrelated views.

Filter types

Mobile search results screen for "xylophone for kids" showing a filter bar with four chips: Filter (2), Sort, Price, and Material (1). Below are category quick filter pills for: Baby Toys, Toddler Toys, and Pretend Play.

Quick filter

Allows users to apply commonly used filters directly without opening the full filter experience. Use them for high-priority refinements that help users narrow results quickly, such as buying format, shipping, or condition.

Mobile filter group labeled "Filter" listing three options. All (20), Missing required item specifics (3) — selected with a checkmark — and Missing recommended item specifics (8). A blue "Show 10 results" button appears at the bottom.

Single-select filter

Allows users to choose one option from a set. Use them when selecting more than one option would not make sense, such as a condition, status, or range. Provide a clear default state, such as Any, or a way to clear the selection so users can return easily to the unfiltered view.

Mobile screen showing a market analysis tool for "nike air jordan retro 1" with a Buying format filter sheet open. Checkboxes show Auction and Buy It Now checked, and Best Offer unchecked.

Multi-select filter

Allows users to choose one or more options from a filter group. The filtered data will show items that match any of the selected values.

Mobile filter panel with two expanded sections. Buying Format shows radio buttons with All selected, and options for Best Offer, Auction, Buy It Now, and Classified Ads. Condition shows New with tags and New without tags selected checkbox, and New with defects and Pre-owned unchecked.

Multi-category select filter

Allows for filtering across separate filter groups, like “Price”, “Style”, and “Size”. All selections across categories are applied together to the data.

Multi-category selection is presented in a modal panel, filter rail, or filter bar.

Mobile Price filter screen showing quick-select chips (Under $25, $25–$50, Over $50), minimum and maximum dollar input fields, and a histogram bar chart with a dual-handle range slider.

Range filter

Allows users to filter by numeric attributes, such as price, distance, or date. Used to narrow results by setting or entering a minimum value, a maximum value, or both.

Mobile Brand filter screen with a search field containing the query "li". Filtered results below show: Banana Republic (1), CELINE (43), Lisa says Gah! (2), and The Limited (1).

Text filter

Allows user to search within a large list of filter values to find and select a specific option. Use them when a filter group contains many values, such as brand, model, or seller, and keep the search scoped to that filter group.

Mobile Price filter screen showing quick-select chips (Under $25, $25–$50, Over $50), minimum and maximum dollar input fields, and a histogram bar chart with a dual-handle range slider.

Visual filter

Allow users to select a visual representation of the filter being applied when it would be quicker than using a text attribute. Use visual filters sparingly as they may not always be the quickest or clearest to read.

Choosing filters

When choosing a filter type, consider:

  • Can users select one value or many?
  • Is the value numeric, categorical, date-based, visual, or require user text input?
  • How many options are there? A few or dozens?
  • Is this a common refinement?
  • Should results update immediately or after the user confirms?
  • What surface or context will the filter appear in?
Filter typesBest forEvo componentsRelated components

Multi-select filter

Broad exploratory searches within large sets of results

Multi-category select filter

Narrowing down large sets of data by combining search criteria

Quick filter

High-value, commonly used refinements

Single-select filter

Mutually exclusive values, where only one can be applied at a time

Range filter

Numeric attributes such as price, distance, year, dimensions, rating, etc.

Text filter

Finding specific search criteria within a large list

Visual filter

Attributes that users can identify faster by sight

-

Properties

Filter order

When there's a list of filters, they are organized from most important to least important:

  1. Global filters: Prioritize filters and sort options that affect the entire set (e.g., condition, format, sort by)

  2. Contextual filters: Secondary filters that are relevant to the user's current task or domain (e.g., Category, Seller type, or Buying format)

  3. Lower-frequency filters: Less common or advanced options (e.g. Zip code, return type)
A diagram of a mobile filter panel illustrating the recommended filter order from most to least important. A tapered wedge shape along the right edge of the panel visually represents this narrowing priority. Three annotation callouts identify the zones from top to bottom: '01. Global filter,' '02. Contextual filters,' and '03. Lower-frequency filters.'

Filter labels

Use concise, scannable labels. Filter group labels should usually be nouns or noun phrases. Filter value labels should be short, user-facing values and may include established marketplace terms. Action labels should use clear verbs.

Within each filter group, order labels on the type of values:

  • Use a logical order for ordinal, numeric, or semantic sets
  • Use popularity, relevance, or personalization for large exploratory lists with a strong demand signal
  • Use alphabetical order, ideally with a search function, for long flat text lists with no other strong signal

When aligning on the label copy:

  • Use sentence case
  • No ending punctuation
  • Use short noun or noun phrases, adjectives, or marketplace terms

Behavior

Resetting filters

Ensure that users have access to clear or reset actions so that they can remove multiple filter selections or return a filter back to its default state. Avoid clear or reset actions when a single selected filter can be removed directly.

Mobile filter panel listing with many filters applied. The Reset button in the top-right corner is highlighted with an annotation that reads: "Reset to remove all active filters. Allows users to return to a completely unfiltered result set."

Result count

When filtering within a panel, the primary call to action (CTA) updates with a count in numerals to show the total number of results. See formatting numerals and counter guidance for Filter chips.

Three rows illustrating filter call-to-action button states. No filter change: a disabled Reset button and a primary Done button. Filters applied: an active Reset button and a primary "See 120 results" button. Max counter: an active Reset button and a primary "See 5,000+ results" button.

Default selections

A multi-select filter group can start with either all filter values selected or no values selected, depending on how the filter is used.

Use no values selected by default when users are expected to select their own values to narrow results.

Use all values selected by default when the filter acts as an inclusion list, excluding the unchecked values from the results list.

Two filter group panels side by side. The left panel, labeled "Values selected by default," shows four checked checkboxes: Active, Inactive, Expired, and Paused, with the caption "Pre-select all options, allowing users to narrow them down." The right panel, labeled "No values selected by default," shows four unchecked checkboxes: Extra Small, Small, Medium, and Large, with the caption "Leave all options unselected, letting users choose explicitly."

Immediate apply vs explicit apply

Results can update as the user selects (Immediate apply) or only after they submit their choices (explicit apply).

Use immediate apply when results can update instantly after the user makes a selection. This works best for simple filters with known values, especially when the data is already loaded or can update without a noticeable delay.

  • Filter chips: Use for common, high-priority filters that users can quickly turn on or off, such as Free shipping, Buy It Now, New, or Ending soon.
  • Menu or dropdown filters: Use when users are choosing from a defined set of values, such as Condition, Status, Category, Seller type, or Delivery options.
  • Checkboxes in a menu: Use when users can select multiple known values and see the result set update as each option is selected, such as filtering orders by Paid, Shipped, or Delivered.
  • Single-selection menu: Use when only one option can be active at a time, such as Buying Format: All listings, Auction, Buy it now, or Accepts offers.
Mobile Messages inbox screen with three filters chips at the top: All (in a filled chip), Members, and Unread from Members. Two message previews are visible below.

Use explicit apply when users need to submit criteria before results update, such as applying filters in a panel or popover.

  • Input field: Use when users enter a keyword, item number, order number, buyer username, or SKU and the system needs to fetch matching results.
  • Range fields: Use when users enter a minimum and maximum value, then apply the filter after both values are complete.
  • Location or distance fields: Use when users enter a ZIP code, city, or radius and the result set needs to be recalculated.
  • Advanced filter panel or sheet: Use when users need to make several selections before updating the result set, especially on mobile or in data-heavy tools.
Mobile popover with filter group labeled "Condition" with four unchecked checkboxes. A primary "Show 527 results" button appears at the bottom. Product listings are partially visible behind the popover.

An empty state occurs when results exist in the data set but none match the current filter criteria. Keep filter controls visible and always offer a way to move forward, such as a "Reset" button, a prompt to broaden the selection, or a "Save search" option for inventory-scarce categories.

Note that not all empty-looking states are filter-induced. First-load empty states (e.g. a user with no saved searches or purchase history), error states (e.g. a server error or network timeout), and search-only queries with no filter involvement each have distinct causes and require different recovery paths.

For further guidance see empty states.

Three mobile screens illustrating distinct types of empty states, each labeled beneath. 'First-load empty state' shows a Saved screen with an illustration and the message 'Nothing's here (yet)' with the subtext 'Save a search to get updates when new items are listed.' 'Error state' shows a Selling screen with an illustration and the message 'We're getting static' with the subtext 'Something went wrong. Please check back later to see if it's fixed,' and a primary Refresh button. 'Search-only empty state' shows search results for 'vinyl jamie xy' with 'No results found for "vinyl jamie xy"' followed by a 'Results matching fewer words' section with several product listings visible below.

Accessibility

Overview

Filtering accessibility requirements vary significantly depending on which components are used in the pattern. Always refer to the accessibility guidance for each individual component (i.e. filter chips, toggles, checkboxes, etc.) in addition to the guidance on this page.

Communicating filter controls to assistive technology

Control type and role: Each filter control must accurately convey what kind of control it is. All filter controls must also have a visible, descriptive name — the text label that identifies what the control does. How this is implemented varies by component; refer to each component's accessibility guidance.

State and value:

  • Filter chips with an active selection should announce the selected value and the category (e.g. Condition: New with tags)
  • When a filter control opens a popover or dialog, its open/closed state must be communicated to screen readers — without it, a blind user has no way of knowing the panel is currently open or closed
  • Applied filter states must be surfaced to screen readers

Consistent terminology

Use identical labels for the filter criteria across all surfaces. If an option is called “Best Offer” in a filter sheet, it should also be called that if the same filter group appears in a quick filter.

Best practices

Reordering

Do keep filters in their original position when selected. For more details see Filter chip guidance.

Mobile search results screen displaying Filter (2), Sort, Price, and Condition chips maintaining their standard positional order even with filters applied.

Don’t change position of filters when they are selected.

Mobile search results screen with a filter bar where the selected Price chip has moved to the front of the row, appearing immediately after Filters (2) and pushing Size and Color further right.

Persistent labels

Do keep filter chip labels persistent when a filter criteria is selected.

Mobile search results screen with filter chips: Filters (2), Price, Size, Color. The Price chip title remains unchanged after a filter value has been selected.

Don’t change the label of a chip after a value has been selected.

Mobile search results screen with filter chips where the Price chip title has changed to "$50 or under" after a value was selected. The chips now read: Filters (2), $50 or under, Size.