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.
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
- 1
Container
A compact rounded shape, usually 32 dp / pt tall. Outlined when off, filled when selected.
- 2
Leading icon or checkmark
Optional icon. Selected filter chips show a checkmark so the state never depends on color alone.
- 3
Label
One or two words: a filter, a value or an action. Long labels should truncate, not wrap.
- 4
Count badge
Optional number of results or items behind the chip. Must update when filters change.
- 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.
| Type | What it does | Example |
|---|---|---|
| Filter | Toggles a filter on or off (often multi-select) | Open now · Free delivery |
| Input | Shows information the user entered, removable with × | Email recipients, skills |
| Assist | Starts an action related to the content | Directions · Call |
| Suggestion | Offers a generated suggestion to tap | Smart replies: “On my way!” |
Filter chips vs segmented control vs checkboxes
All three let users pick options. The difference is how many and where:
| Component | How many? | Typical place |
|---|---|---|
| Filter chips | Zero, one or many | Above 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–5 | Switching 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 many | Forms 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 3Multi-select toggles that narrow down a list. Selected chips fill in and get a checkmark, so the state is clear even without color.
Input chips
Material 3 · WebPieces of information the user entered: recipients, cuisines, skills. Each has its own remove (×) button.
Assist chips
Material 3Smart shortcuts to an action related to the content, like the buttons under a place in Google Maps. They behave like small buttons.
Suggestion chips
Material 3Suggestions the app generated for you: smart replies, search ideas. Tapping one fills it in or sends it.
Capsule filters
iOS apps · WebiOS 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
Tags (labels, not controls)
AllTags 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 · WebFilter 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 · WebA 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
- 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
One tap each, results update right away, and the selected one has a checkmark.
Forty options as chips
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
Two mutually exclusive modes. A segmented control makes “exactly one” obvious.
Single choice disguised as chips
Users expect chips to be multi-select. Can they select both? Neither? Nobody knows until they try.
Tags as plain labels
Green Bowl Kitchen
Small, flat, no border or shadow: clearly information, not a button.
Labels that look tappable
Green Bowl Kitchen
Looks like a button, does nothing when tapped. Users tap it again and again.
Common bugs
| # | Bug | What you see | Typical severity |
|---|---|---|---|
| 1 | Selected state by color only | In greyscale or with color blindness, you can’t tell which filters are on | Medium–High |
| 2 | Hidden chips in a scroll row | The row ends cleanly, nothing hints at more chips; some filters are never found | Medium |
| 3 | Last chip unreachable | A button or gradient covers the end of the row, even when fully scrolled | High |
| 4 | × removes the wrong chip | Tap × on “Burgers”, “Sushi” disappears | High |
| 5 | Backspace clears everything | One Backspace in the empty field deletes all recipients | High |
| 6 | Duplicates | “Pizza” and “pizza ” both appear as chips | Low–Medium |
| 7 | Stale counts | “12 results” stays after a filter is removed | Medium |
| 8 | Active filters out of view | A selected chip is scrolled off-screen; users don’t know why the list is short | Medium |
| 9 | Long labels | A German or user-entered label overflows the chip or pushes the × off-screen | Low–Medium |
| 10 | Nothing announced | Screen 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.
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.
Delivery near you
12 Baker Street · ASAP
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
Hint: Select two filters, then turn on the greyscale color filter.
- 2
Hint: Scroll the chip row to its very end. Which filter is the last one? Can you tap it?
- 3
Hint: Without adding anything, tap the × on the first dish chip.
- 4
Hint: Add a dish or two, clear the text, then press Backspace once.
- 5
Hint: Add "Pizza", then add "pizza " (lower case, with a space at the end).
- 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 colorpositivemedium
Preconditions
- Device color filter set to greyscale (iOS: Accessibility › Display & Text Size › Color Filters › Grayscale; Android: Accessibility › Color correction › Grayscale)
Steps
- Open the restaurant list
- 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 reachableedgehigh
Preconditions
- Smallest supported screen (e.g. iPhone SE, 375 pt wide)
Steps
- Swipe the chip row to the very end
- 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 deselectpositivemedium
Steps
- Note the result count
- Select "Rating 4.5+"
- 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 changededgehigh
Steps
- Add the three dishes
- Tap × on the first chip shown
- 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 fieldnegativehigh
Preconditions
- Three recipients are entered
Steps
- Put the cursor in the empty text part of the field
- Press Backspace once
- 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 ignorednegativelow
Steps
- 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 buttonspositivemedium
Preconditions
- VoiceOver or TalkBack is on
Steps
- Swipe to the "Vegan" filter chip
- Double-tap
- 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 |
|---|---|
| Tab | Moves to the next chip (or into the group) and to each × |
| Space / Enter | Toggles 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 |
- Roles: a filter chip is a toggle button or a checkbox. Screen readers then say “Vegan, toggle button, selected” (wording varies by reader). A single-select chip group should be a radio group. An assist chip is a plain button. A tag is plain text.
Dev note
A toggle button is<button aria-pressed="true">. - Remove buttons: the × is its own button with a name that includes the chip: “Remove Italian”. A bare ”×” or “button” is useless when there are five of them.
Dev note
aria-label="Remove Italian". - Not by color alone: selected chips need a checkmark, fill or outline change (WCAGWCAGThe Web Content Accessibility Guidelines, the main international standard for accessibility.Open in glossary → 1.4.1). Chip borders and icons need at least 3:1 contrastContrast ratioHow different text and background colors are; WCAG asks for at least 4.5:1 for normal text.Open in glossary →, labels 4.5:1.
- Announce changes: when a chip is added or removed, or the result count changes, tell screen readerScreen readerSoftware that reads the screen aloud for blind and low-vision users, like VoiceOver or TalkBack.Open in glossary → users (a polite live region: “Removed Italian. 2 cuisines.”).
- Focus after removing: when a chip is removed, focus moves somewhere sensible (the previous chip or the text field), not back to the top of the page.
- Touch targetsTouch targetThe area of the screen that responds to a tap, which should be large enough for a finger.Open in glossary →: chips are often 32 dp/pt tall, and the × even smaller. Their touch area should still be 44×44 pt (iOS) / 48×48 dp (Android); Material adds invisible padding for this.
- Scroll rows: keyboard focus moving to an off-screen chip must scroll it into view, uncovered.
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 inUISearchTextField. - 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
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 ischeckedIconVisible. - 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.Which Material 3 chip type shows recipients you typed into an email "To:" field?
2.Selected filter chips are blue and unselected ones grey. Nothing else changes. What is the problem?
3.You tap × on "Burgers" and "Sushi" disappears. The chips are shown A–Z. What is the likely cause?
4.What should Backspace do in an empty token field with three recipients?
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 ⚡