Filter Sidebars
Last updated:
Practical patterns for filter panels that show active state and reset clearly.
01 — Foundation
Filtering should simplify decisions
Handled badly, filter sidebars become configuration bureaucracy.
Filter sidebars help users refine large datasets — catalogues, search results, admin lists. Users should always see active filters, understand result impact, know how to reset, and tell whether filters apply live or on submit.
02 — Structure
Grouping and labels
Clear groups beat endless accordion categories.
- group related filters with headings — “Price”, “Brand”, “Availability”
- real form controls with labels — see Filtering and Sorting
- show result count updates when filters apply live
- “Clear all” and per-filter reset — visible, not buried
03 — Layout
Sidebar, drawer, and mobile
Desktop sidebars often become drawers on small screens.
- mobile — filter button opens a drawer or full-screen panel — see Drawers and Side Panels
- show active filter summary on the results view — chips or text line
- apply vs live-update — pick one model and be consistent
- preserve filter state in the URL when sharing matters
<aside aria-label="Filters">
<form method="get">
<fieldset>
<legend>Category</legend>
<!-- controls -->
</fieldset>
<button type="submit">Apply filters</button>
</form>
</aside> 04 — Accessibility
Accessible filter panels
Filters in a drawer still need keyboard paths and visible focus.
- keyboard access to every control; logical tab order
- announce result changes without spamming — polite live regions when counts update
- touch-friendly targets; do not rely on hover-only disclosure
05 — Review
Before you approve
A short checklist for filter sidebars in code review.
- active filters visible; reset is obvious
- mobile pattern tested; mystery logic avoided
- empty results are meaningful — see Empty States