Skip to main content
Make every word earn its place. Don’t repeat information users can already see.

The Button Label Problem

Never use “OK”, “Submit”, or “Yes/No”. These are lazy and ambiguous.
Use specific verb + object patterns: For destructive actions, name the destruction:
  • “Delete” not “Remove” (delete is permanent, remove implies recoverable)
  • “Delete 5 items” not “Delete selected” (show the count)

Error Messages: The Formula

Every error message should answer:
  1. What happened?
  2. Why?
  3. How to fix it?

Error Message Templates

Don’t Blame the User

Reframe errors:

Empty States Are Opportunities

Empty states are onboarding moments:
  1. Acknowledge briefly
  2. Explain the value of filling it
  3. Provide a clear action

Voice vs Tone

Voice is your brand’s personality—consistent everywhere. Tone adapts to the moment.
Never use humor for errors. Users are already frustrated. Be helpful, not cute.

Writing for Accessibility

Must have standalone meaning:

Alt Text

Describes information, not the image:

Icon Buttons

Need aria-label for screen reader context:

Writing for Translation

Plan for Expansion

German text is ~30% longer than English. Allocate space: | Language | Expansion | |----------|-----------|| | German | +30% | | French | +20% | | Finnish | +30-40% | | Chinese | -30% (fewer chars, but same width) |

Translation-Friendly Patterns

Keep numbers separate:
Use full sentences as single strings (word order varies by language):
Avoid abbreviations:
Give translators context about where strings appear.

Consistency: The Terminology Problem

Pick one term and stick with it:
Build a terminology glossary and enforce it. Variety creates confusion.

Avoid Redundant Copy

If the heading explains it, the intro is redundant. If the button is clear, don’t explain it again. Say it once, say it well.

Loading States

Be specific:
For long waits, set expectations:
or show progress:

Confirmation Dialogs: Use Sparingly

Most confirmation dialogs are design failures—consider undo instead. When you must confirm:
  • Name the action
  • Explain consequences
  • Use specific button labels

Form Instructions

Show format with placeholders, not instructions:
For non-obvious fields, explain why you’re asking:

Guidelines

DO

  • Use specific verb + object button labels
  • Answer what happened, why, and how to fix in error messages
  • Design empty states that teach and motivate
  • Write link text that makes sense out of context
  • Build a terminology glossary
  • Be specific in loading states

DON’T

  • Use jargon without explanation
  • Blame users (“You made an error” → “This field is required”)
  • Write vague errors (“Something went wrong”)
  • Vary terminology for variety
  • Use humor for errors
  • Repeat information users can already see