Design Better Buttons

The do's and don'ts of button design—UI checklist

Preparing audio… Please refresh page

A button is one of the simplest yet most critical UI elements. It represents action. Decision. Momentum. But despite their ubiquity, buttons are often poorly designed—visually inconsistent, semantically vague, or hostile to touch interfaces and accessibility tools.

This article offers actionable principles to elevate your button design across platforms, devices, and contexts. These aren’t just aesthetic suggestions—they’re usability fundamentals.

1. Limit One Style per Button Type

Button styles shown inconsistently across an app, followed by a unified set of standardized styles—illustrating the need for consistent visual roles like primary, secondary, and danger.

Too many interfaces confuse users by styling the same kind of action differently across the app. Audit your buttons and reduce them to one visual style per role: primary, secondary, tertiary, danger, success, ghost, link, etc. Design systems exist to simplify, not multiply.

2. Include Event States and Provide Visual Feedback

A button with visual states for hover, focus, active, disabled, and loading—demonstrating how state feedback guides user interactions and builds confidence.

A button is a conversation. When users hover, click, or tap, they expect the UI to respond. States like hover, focus, active, disabled, and loading confirm the interaction is working. Without them, users feel stuck or unsure—especially on slower connections or mobile.

3. Differentiate Button Types Clearly

A set of buttons with clear visual hierarchy—primary action emphasized, secondary action subdued.

The hierarchy of actions should be self-evident. Primary buttons should command attention, secondary buttons should support them, and destructive actions like “Delete” should be visually distinct (often red or outlined). Don't make irreversible actions look casual.

4. Keep Button Styles Consistent

Side-by-side buttons showing consistent styling versus mismatched variants—highlighting how visual inconsistencies weaken clarity and user trust.

Use consistent visual treatment across your product. If your buttons use an 8px radius, bold text, and a drop shadow—stick with it. Deviations in styling dilute trust and visual clarity.

5. Non-Buttons Shouldn’t Look Like Buttons

UI elements like tags and labels styled like buttons, causing confusion—demonstrating how misleading visuals can create false affordances and frustrate users.

Not every rectangle with text should be clickable. Tags, chips, and labels often look like buttons when styled similarly. If users start clicking on things expecting an action and nothing happens, that’s a failure of affordance and feedback.

6. Keep Case Consistent

Buttons using inconsistent text casing—title case, sentence case, and all caps—shown alongside a consistent set to illustrate how uniform casing improves scanability and visual hierarchy.

Choose a casing style (title case, sentence case, all caps) and apply it consistently. Buttons are scanned, not read. Uniformity reduces visual friction and reinforces hierarchy.

7. Use Icons Thoughtfully

A comparison between a button labeled ‘Like song’ and a star icon—showing how a familiar icon streamlines the UI when the action is universally understood.

Icons can clarify an action (“🔍 Search”) or streamline a dense interface (like tables or repeated rows). But never use icons alone unless they’re universally recognized (e.g., trash, edit, download). Pair icons with text unless the context is extremely clear.

8. Avoid Long Labels

Side-by-side button examples comparing concise labels with overly wordy ones—highlighting the benefits of brevity for clarity and scanability.

Keep button labels short and specific. Avoid labels that read like documentation. Good: “Download PDF.” Bad: “Click here to download the PDF file.” Brevity improves scannability.

That said, make exceptions for dangerous actions. “Delete Location” is better than “Yes.” Clarity outweighs brevity when the stakes are high.

9. Label the Action, Not the Outcome

Button label examples showing ambiguous options like ‘Yes’ or ‘Confirm’ next to clear alternatives like ‘Delete Location’—illustrating how clarity improves action intent without adding unnecessary words.

Users aren’t reading your UI with a lawyer’s precision. Labels like “Yes” or “Confirm” are ambiguous without context. “Delete Location” is unambiguous. “Yes, delete location” is redundant. Be clear, not verbose.

10. Don’t Wrap Labels

A comparison of wrapped versus unwrapped button text—showing how wrapped labels appear broken and suggesting adjustments like shorter text or wider buttons for better responsiveness.

Button text should never wrap. It looks broken, especially in responsive layouts. Instead, shorten the copy or make the button wider.

11. Add Padding Between Links

A row of inline text links with and without adequate spacing—demonstrating how generous tap targets improve usability and meet mobile accessibility standards.

Inline link actions, especially when grouped (e.g., “Edit | Duplicate | Delete”), need generous tap targets—especially on mobile. Add padding between them and ensure they meet accessibility minimums (at least 44x44px touch area).

12. Address Device Context: Mobile vs Desktop

Button design isn’t one-size-fits-all.

  • On mobile, prioritize tap size, spacing, and fixed bottom actions. Fingers are less precise than cursors. Avoid tiny icons or tightly packed controls.

  • On desktop, buttons can be smaller, but hover and focus states become more important.

  • On tablets, prioritize hybrid design: large touch targets, but also visible feedback and clear labels.

Don’t just scale buttons down. Design responsively. Audit in real contexts.

13. Accessibility Is Not Optional

Accessible buttons serve everyone. A few rules to follow:

  • Use proper <button> or <a> HTML elements—not divs.

  • Add meaningful labels (aria-label) when the button text isn’t descriptive (e.g., icon-only buttons).

  • Ensure color contrast meets WCAG guidelines (minimum 4.5:1 for normal text).

  • Use aria-disabled and aria-busy appropriately for dynamic state changes.

  • Ensure keyboard users can tab to, activate, and understand every button.

Also: never rely solely on color to indicate state. Use icons, text, or patterns to signal changes.

14. Beware of Button Overload

Don’t flood an interface with too many options. Multiple competing buttons create decision fatigue. When everything is a CTA, nothing is.

If you need to show multiple actions, prioritize the most important one. The rest can go in a menu, drawer, or inline icon.

15. Test Buttons in Real Contexts

Designing a button in Figma is not the same as clicking it on a phone in a moving car. Prototype. Click. Tap. Test on iOS, Android, Chrome, Safari, with and without a mouse or keyboard.

Empathy is the hidden layer of great interface design.

In Summary

Buttons are the handshake of your interface. They represent trust, clarity, and intent. Good button design doesn’t call attention to itself—it guides the user, helps them act, and disappears.

Design buttons like you would design doors in a building: obvious, accessible, purposeful, and never locked without reason.

Andrew Coyle sitting in a building overlooking downtown San Francisco.
Andrew Coyle sitting in a building overlooking downtown San Francisco.
Andrew Coyle sitting in a building overlooking downtown San Francisco.

Written by Andrew Coyle

Andrew Coyle is a Y Combinator alum, a former co-founder of Hey Healthcare (YC S19), and was Flexport's founding designer. He also worked as an interaction designer at Google and Intuit. He is currently the head of design at Distro (YC S24), an enterprise sales AI company.