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