Skip to content
Bugwise
Menu
UI Components

Chips / Tags

Small rounded elements that filter a list, hold things you typed or suggest an action. Learn the four Material chip types, chips vs tags vs checkboxes, and the overflow, color-only and remove bugs testers find in them.

35 min Inputs & selection iOS · Android · Web Also called: Chips, Tags, Pills, Filter chips, Tokens

Open now · Free delivery · Vegan. The row of little rounded buttons above a restaurant list. The recipients in the To: field of an email. The skills on a job profile. The “On my way!” reply under a message. All chips.

They look harmless, but they pack a lot of behavior into a tiny space: selecting, removing, scrolling sideways, counting results. That’s where the bugs live.

What is a chip?

A chip is a small, compact element that represents a choice, a filter, a piece of entered information or a quick action. It usually has rounded corners, a short label and sometimes an icon, a count or a remove button (×).

The word means different things to different people, so let’s untangle it first:

  • Chip (Material Design’s name): an interactive element. You tap it to select, remove or do something.
  • Tag or badge: a label that only describes something (“Vegan”, “New”, “−20%”). You can’t tap it.
  • Pill: a common nickname for the capsule shape. Designers use it for both.
  • Token: an input chip inside a text field, like an email recipient.

Anatomy

Vegan121234
Italian5
  1. 1

    Container

    A compact rounded shape, usually 32 dp / pt tall. Outlined when off, filled when selected.

  2. 2

    Leading icon or checkmark

    Optional icon. Selected filter chips show a checkmark so the state never depends on color alone.

  3. 3

    Label

    One or two words: a filter, a value or an action. Long labels should truncate, not wrap.

  4. 4

    Count badge

    Optional number of results or items behind the chip. Must update when filters change.

  5. 5

    Remove button (×)

    Only on input chips. A separate button with its own name, like "Remove Italian".

The four Material 3 chip types

Material Design 3 defines four chip types. iOS has no native chip, but iPhone apps build the same patterns by hand, and the web uses all of them.

TypeWhat it doesExample
FilterToggles a filter on or off (often multi-select)Open now · Free delivery
InputShows information the user entered, removable with ×Email recipients, skills
AssistStarts an action related to the contentDirections · Call
SuggestionOffers a generated suggestion to tapSmart replies: “On my way!”

Filter chips vs segmented control vs checkboxes

All three let users pick options. The difference is how many and where:

ComponentHow many?Typical place
Filter chipsZero, one or manyAbove a list, often in a horizontal scroll row
Segmented controlSegmented controlA row of connected buttons where exactly one option is selected at a time.Open in glossary →Exactly one of 2–5Switching views: Day · Week · Month
CheckboxesCheckboxA small square the user ticks to include an option; each one is independent and usually applies on submit.Open in glossary →Zero, one or manyForms and filter panels with longer labels

Filter chips are basically compact checkboxes that apply immediately: tap “Vegan” and the list updates. See also Segmented control and Checkbox.

Designs & variants

Every chip below works. Try them with the mouse, then with Tab and Space.

Filter chips

Material 3

Multi-select toggles that narrow down a list. Selected chips fill in and get a checkmark, so the state is clear even without color.

ItalianThaiMexican

Input chips

Material 3 · Web

Pieces of information the user entered: recipients, cuisines, skills. Each has its own remove (×) button.

Assist chips

Material 3

Smart shortcuts to an action related to the content, like the buttons under a place in Google Maps. They behave like small buttons.

Your rider is outside. Can you come down?

Suggestion chips

Material 3

Suggestions the app generated for you: smart replies, search ideas. Tapping one fills it in or sends it.

Capsule filters

iOS apps · Web

iOS has no native chip, so apps draw capsule buttons, often in a horizontal row. Here the next chip peeks in at the edge: a hint that you can scroll.

Green Bowl Kitchen

VeganNew−20%

Tags (labels, not controls)

All

Tags only describe something. They aren't tappable, so they shouldn't look like buttons, and screen readers read them as plain text.

Single-select chips

Material 3 · Web

Filter chips can also be used for one choice (sizes, time slots). For 2–5 fixed options, a segmented control or radio buttons are usually clearer.

Chips with counts

Material 3 · Web

A badge shows how many results each filter has. The numbers must change when other filters change. Test 0, 1 and 99+.

Input chips done right

Input chips (tokens) turn text into removable pieces: email recipients, cuisines you like, skills on a CV, labels on a ticket. They have the most keyboard behavior of any chip, so they have the most bugs. Here’s a correct one to compare against:

✉️ Input chips done right

Add recipients with Enter or a comma, paste a list, try a duplicate like ANNA@example.com , then press Backspace in the empty field (twice).

New message

To:
  • anna@example.com
  • ben@example.com

2 recipients

Screen reader hears

…

Keys

Enter / , add · Backspace in empty field: select last, again: remove · Tab reaches each ×

The rules worth testing in every token field:

  • Adding: Enter (and often comma) turns the text into a chip. Pasting a list (“a@x.com, b@y.com”) creates several chips.
  • Duplicates: “Pizza”, “pizza” and “pizza ” are the same thing. The app should ignore or merge them, ideally with a message.
  • Removing: each × removes exactly its own chip.
  • Backspace in the empty field removes (or first highlights) the last chip only. Never all of them.
  • Validation: an invalid entry (a broken email address) is marked clearly, with an icon or text, not only red.

When to use it

Chips are a good choice when:

  • Users want to narrow down a list quickly with a few common filters, right above the results.
  • Users enter several short values into one field: recipients, tags, skills, ingredients.
  • The app can offer smart suggestions or shortcuts that save typing (search ideas, quick replies).
  • You need to show the active filters compactly, each removable with ×, e.g. “Price: €20–50 ×”.

Good and bad uses

A few short, common filters

✓ Open nowFree delivery4.5+

One tap each, results update right away, and the selected one has a checkmark.

Forty options as chips

AfghanAfricanAmericanArgentinianAsianBBQBrazilianBritishBurgersCaribbeanChineseCubanEthiopianFrenchGeorgianGreekIndian…

A wall of chips is hard to scan. Use a searchable list or checkboxes in a filter sheet.

Exactly one of a few: segmented control

DeliveryPick-up

Two mutually exclusive modes. A segmented control makes “exactly one” obvious.

Single choice disguised as chips

DeliveryPick-up

Users expect chips to be multi-select. Can they select both? Neither? Nobody knows until they try.

Tags as plain labels

Green Bowl Kitchen

VeganNew

Small, flat, no border or shadow: clearly information, not a button.

Labels that look tappable

Green Bowl Kitchen

Vegan ›

Looks like a button, does nothing when tapped. Users tap it again and again.

Common bugs

#BugWhat you seeTypical severity
1Selected state by color onlyIn greyscale or with color blindness, you can’t tell which filters are onMedium–High
2Hidden chips in a scroll rowThe row ends cleanly, nothing hints at more chips; some filters are never foundMedium
3Last chip unreachableA button or gradient covers the end of the row, even when fully scrolledHigh
4× removes the wrong chipTap × on “Burgers”, “Sushi” disappearsHigh
5Backspace clears everythingOne Backspace in the empty field deletes all recipientsHigh
6Duplicates“Pizza” and “pizza ” both appear as chipsLow–Medium
7Stale counts“12 results” stays after a filter is removedMedium
8Active filters out of viewA selected chip is scrolled off-screen; users don’t know why the list is shortMedium
9Long labelsA German or user-entered label overflows the chip or pushes the × off-screenLow–Medium
10Nothing announcedScreen reader says only “Vegan” (no “selected”) or “button” for the ×High (for affected users)

Stress-test it

Overflow is the chip row’s biggest design question: wrap to several lines, or scroll sideways? Scrolling saves space but hides chips. Play with both, and turn on greyscale.

🧪 Chip row lab

Restaurant filters on a phone. Change the layout and the hints, toggle greyscale, and scroll the row to its end.

Overflow
Scroll hint
Selected style
Screen width
Restaurants
Luigi’s Pizzeria
Sakura Sushi Bar
Green Bowl

Visible / total

10 fully visible of 10 chips · 2 selected

Screen reader hears

“Open now, toggle button, selected”

Selected chips differ only by color. Turn on greyscale to see what color-blind users (and anyone in bright sunlight) see.

Find the bug

This food delivery app has a filter chip row and a “search by dish” field with input chips. It contains six bugs. Explore it like a real tester:

  • Select and deselect filters, and read the result count every time.
  • Turn on the greyscale color filter in the device settings.
  • Scroll the chip row to the very end (swipe, trackpad, Shift + mouse wheel or Tab).
  • Remove dish chips with ×, and try Backspace in the empty field.
  • Add a dish that’s already there, with different capitals or a trailing space.

🐞 Bug hunt: Restaurant filters

This demo has 6 hidden bugs. Explore it like a tester, then check your findings.

Found0/6
9:41

Delivery near you

12 Baker Street · ASAP

BurgersSushi

3 restaurants

Fastest first

  • Smash Burger Co. 4.2 · 15 min · £1.49
  • Green Bowl Kitchen 4.4 · 20 min · Free delivery
  • Sakura Sushi Bar 4.8 · 40 min · £2.99

Device settings

  1. 1

    Hint: Select two filters, then turn on the greyscale color filter.

  2. 2

    Hint: Scroll the chip row to its very end. Which filter is the last one? Can you tap it?

  3. 3

    Hint: Without adding anything, tap the × on the first dish chip.

  4. 4

    Hint: Add a dish or two, clear the text, then press Backspace once.

  5. 5

    Hint: Add "Pizza", then add "pizza " (lower case, with a space at the end).

  6. 6

    Hint: Select "Rating 4.5+", read the count, then deselect it and count the restaurants in the list.

How to test it

Checklist

Chips test checklist

0 of 13 checked

Example test cases

TC-CHP-001Filter chip selection is visible without color

Preconditions

  • Device color filter set to greyscale (iOS: Accessibility › Display & Text Size › Color Filters › Grayscale; Android: Accessibility › Color correction › Grayscale)

Steps

  1. Open the restaurant list
  2. Select "Open now" and "Vegan"

Expected result

Selected chips are clearly different from unselected ones (checkmark and fill), even in greyscale.

TC-CHP-002Every chip in the scroll row is reachable

Preconditions

  • Smallest supported screen (e.g. iPhone SE, 375 pt wide)

Steps

  1. Swipe the chip row to the very end
  2. Tap the last chip

Expected result

The last chip is fully visible, not covered by other elements, and toggles when tapped.

TC-CHP-003Result count updates on deselect

Steps

  1. Note the result count
  2. Select "Rating 4.5+"
  3. Deselect "Rating 4.5+"

Expected result

The count changes after each step and always matches the number of items in the list.

TC-CHP-004Remove a chip after the order changed

Steps

  1. Add the three dishes
  2. Tap × on the first chip shown
  3. Tap × on the last chip shown

Test data

Added in this order: Sushi, Burgers, Pizza (shown A–Z)

Expected result

Each tap removes exactly the chip whose × was tapped.

TC-CHP-005Backspace in an empty token field

Preconditions

  • Three recipients are entered

Steps

  1. Put the cursor in the empty text part of the field
  2. Press Backspace once
  3. Press Backspace again

Expected result

First press highlights (or removes) only the last recipient; the second press removes it. The other two stay.

TC-CHP-006Duplicates are ignored

Steps

  1. Add each value with Enter

Test data

"Pizza", then "pizza ", then " PIZZA"

Expected result

Only one "Pizza" chip exists; the app shows a short "already added" message or silently ignores the duplicates.

TC-CHP-007Screen reader announces state and remove buttons

Preconditions

  • VoiceOver or TalkBack is on

Steps

  1. Swipe to the "Vegan" filter chip
  2. Double-tap
  3. Swipe to the × of the "Italian" chip

Expected result

Hears the name, role and state (e.g. "Vegan, toggle button, not selected"; wording varies by screen reader), then "selected" after the double-tap, then "Remove Italian, button".

Tip: click a test case to expand it.

Accessibility

Chips are small and dense, which makes them easy to get wrong for keyboard and screen reader users.

Key (web)What it should do
TabMoves to the next chip (or into the group) and to each ×
Space / EnterToggles a filter chip or activates an action chip
Backspace (empty token field)Highlights or removes the last token only
Backspace / Delete (on a token)Removes that token

Mobile vs web

  • iOS has no chip component. Every chip on iOS is custom (capsule buttons, tokens in a search field), so test VoiceOver labels and traits carefully.
  • One native exception: search tokens (Mail, Photos), with Backspace behavior built in.
    Dev note
    Neither UIKit nor SwiftUI has a chip; search tokens live in UISearchTextField.
  • Horizontal chip rows are usually a horizontal scroll view: check the swipe doesn’t trigger the back gesture near the left edge.
  • Test Dynamic Type: at the largest sizes, chips grow taller and wider and the row may need to wrap.
Dev note
Material Components provide Chip (styles for assist, filter, input, suggestion) and ChipGroup (singleSelection, selectionRequired). Compose has AssistChip, FilterChip, InputChip and SuggestionChip.
  • A chip group can be single-line (horizontal scroll) or wrap. Check which one is used on small screens and with large font scale.
  • Selected filter chips should show the checkmark. Teams sometimes turn it off for looks, leaving color as the only cue.
    Dev note
    The setting is checkedIconVisible.
  • Test with TalkBack and color correction / greyscale in the Accessibility settings.
  • No native element, and libraries vary a lot in quality.
    Dev note
    Chips are <button>s (filters, actions), tags are <span>s, and token fields are custom widgets around an <input>.
  • A horizontal row with a hidden scrollbar is hard to scroll with a mouse: users need Shift + wheel or a trackpad. Many sites add arrow buttons; test them at both ends.
  • Test paste into token fields (comma- or newline-separated lists), autocomplete suggestions, and what is sent to the server (trimmed? deduplicated?).
  • Check the URL: filter chips often add query parametersQuery parameterData in a URL after the ?, like ?q=mug&sort=price, often used to keep search and filter state.Open in glossary → (?open=1&diet=vegan). Reload and share the link: are the same chips selected?

Related pages: filter chips usually belong to a search and filter feature, compare them with the segmented control and checkbox, and token fields are a special kind of text field.

Check your understanding

Quick quiz

0/5 answered · 0 correct

  1. 1.Which Material 3 chip type shows recipients you typed into an email "To:" field?

  2. 2.Selected filter chips are blue and unselected ones grey. Nothing else changes. What is the problem?

  3. 3.You tap × on "Burgers" and "Sushi" disappears. The chips are shown A–Z. What is the likely cause?

  4. 4.What should Backspace do in an empty token field with three recipients?

  5. 5.What should a screen reader announce for the × of a chip called "Italian"?

Key takeaways

  • Chips are interactive (filter, input, assist, suggestion); tags are just labels. Each must look like what it is.
  • Filter chips are compact multi-select toggles that apply immediately. For “exactly one of a few”, a segmented control is clearer.
  • The selected state needs a checkmark or shape change, never color alone. Test in greyscale.
  • Horizontal chip rows need a scroll hint, and the last chip must be reachable on the smallest screen.
  • Token fields: each × removes its own chip, Backspace removes only the last, duplicates are ignored, and counts update on every change.

Finished this page?Nice work, this page is complete!

Mark it as done to track your progress. It's saved in this browser, no account needed.

Its review cards are now in Bites ⚡
Esc

Type to search the whole site.