Error states

Error states communicate when something has gone wrong and guide users toward recovery.

Overview

Error states communicate that something went wrong or is incorrect, and guide users to recovery. They should be clear, proportional to severity, and consistent across experiences.

Check out the Error Message GPT if you need help writing an error message.

Principles

Prevent errors first

The best designs eliminate conditions that cause errors before they happen. Remove invalid options or validate early so users can fix issues before they submit.

Be specific

Include exact values when you have them — character limits, amounts, timeframes. Vague messages like "something went wrong" or "file name is too long" force users to guess.

Calibrate tone to severity

Match the tone to the severity of the situation. Minor errors can be matter-of-fact. Severe errors like data loss, payment failure, or account restrictions call for calm, empathetic language. Acknowledge the impact and give users a path forward.

Communicate one error at a time

Consolidate multiple errors into a single message or grouped notice. Competing alerts cause users to miss critical information.

Lead with words, not images

Never rely on an illustration or icon alone to communicate an error. Copy must stand on its own for screen readers and low-bandwidth contexts.

Plan for unresolvable errors

When a user can't fix the issue themselves, give them a way forward — link to support, provide a contact number, or tell them what to expect next.

Presentation

Illustration with Title "Server cannot be found", body "It looks like there are some connection errors. Check your connection and reload." and a CTA "Reload page"

Page-level

Use for failures that block the entire page experience.

When an entire page or flow is impacted, the content area presents an error message aligned vertically near the top of the page. The error message explains the issue and provides a path forward to resolve the issue.

Examples

  • Server is down or unavailable
  • User doesn't have access to the page
  • Content no longer exists or can't be loaded
  • Account is restricted in a way that blocks all action on the page
  • Session expired and the page requires authentication
  • Security event requiring the user to verify identity before continuing
Mobile filter group labeled "Filter" listing three options. All (20), Missing required item specifics (3) — selected with a checkmark — and Missing recommended item specifics (8). A blue "Show 10 results" button appears at the bottom.

Section-level

Use for failures that affect a section of the page, while the rest of the page remains usable.

Components that fail to load content can present an error message within its container, like a card or dialog not loading correctly.

Examples

  • A list, table, or set of results can’t be retrieved
  • An action affecting the entire section fails, such as saving its settings
  • A section can’t be displayed because required data is unavailable
Listings page to upload files. Below the header copy, there is alert helper text in red, "image03.jpg failed to upload"

Component-level

Use for component-level failures, appearing directly below the field that triggered the error.

An inline error message appears next to the element where the issue occurred, like an invalid form field value.

Examples

  • Number input is out of range
  • No selection was made for a mandatory dropdown
  • Failed to upload a file

Using graphic elements

Error states always include a description of the error, but can also show graphics in specific contexts.

Text and icon

Most error messages use a simple text-icon lockup to keep the message direct and respectful. The icon also improves the visibility to those with color blindness.

The size of the font and icon scales according to the severity of the error – inline validation uses smaller text and icons while a section or page error uses larger sizes.

Your information page with a blank input field for the address displaying the input field's error state. Below is red text, "This field is required"T

Text and illustration

Illustrations are used sparingly in less-severe, full-page error states.

Error state illustrations are standardized across the experience for specific error types. These illustrations are neutral, calm, and add levity to low-stakes errors like a missing or broken page link.

Illustrations are never used for sensitive errors, like a declined payment or account lockout.

Find more information on the illustrations available and approval process in Our Illustrations.

Empty listings page with an illustration, header "We couldn't connect to the server", body "Check your connection and reload", and CTA "Reload page"

Types

Validation errors

A validation error occurs when an input value is invalid or doesn't meet requirements. It typically appears at the component level, close to the field that triggered it.

Formula:

[how to correct it]

  • Lead with what needs to be corrected
  • Include the reason only if it helps the user fix it faster
  • Avoid generic messages like "invalid input" or technical language like "field validation failed”
  • Keep it to one sentence
Your information page with a blank input field for the address displaying the input field's error state. Below is red text, "This field is required"T

System failures

A system failure occurs when the product fails to complete a request because of a temporary technical issue — a connectivity problem, server outage, or application error.

Formula:

[what failed] + [retry or wait] + [alternative if available]

  • Take responsibility using "we"
  • Tell the user what happened and whether retrying will help
  • If retrying won't resolve it, offer an alternative
  • Avoid technical details, error codes, or language that suggests the problem is permanent

Empty listings page with an illustration, header "We couldn't connect to the server", body "Check your connection and reload", and CTA "Reload page"

Process interruptions

The user's action fails mid-flow because it couldn’t be validated against a business rule, such as declined payment method or expired promotion. These errors often involve money or effort, so take responsibility and avoid language that feels like blame.

Formula:

[what failed] + [why (optional)] + [how to continue]

  • Be direct but empathetic. Acknowledge the impact but don’t dwell on it
  • Offer a clear path forward
Select payment method page with an Alert Notice with a red background, "We couldn't add your payment method. Please try again."

Unavailable content errors

Content, data, or a resource that should exist can't be found, has been removed, or failed to load. This covers broken API calls, deleted listings, expired data, or failed fetches.

This is different from empty state, where the user has no expectation of content (e.g. first time using a feature). Unavailable content errors happen when the user expected something to be there and it's not.

It's also different from a system error because the system is working, but the content isn't there.

Formula:

[what's unavailable] + [reason (optional)] + [alternative (optional)]

  • Make it clear what isn't available
  • Include a reason when it's known and relevant
  • Offer an alternative action when possible
  • Avoid technical language like "404" unless it's needed for support
A listing page with header copy, "This item is no longer available"

Device limitations

A feature is missing, unsupported, or can't run because of device-level limitations. For example, no camera or microphone access, insufficient storage, outdated OS, or unavailable hardware.

Formula:

[what's unavailable] + [why] + [fix or path forward]

  • Use device-native language
  • Explain what's missing and what the user can do (e.g., grant access, free up space, or use an alternative)
  • Leverage native device components where possible
Native iOS dialog box with header, "'eBay' would like to access the camera, body "This will let you take photos and record video" and two CTAs "Allow access" and "Don't allow"

Error state components

Different error states use different components. Choosing the right one ensures errors are visible, proportional, and actionable.

Helper text

Error messages appear below the field when the input doesn't meet the required format or conditions. The error message replaces any existing helper text. This keeps the error lightweight, contextual, and tied to the element that needs correction.

Keep the tone neutral, don’t blame or scare the user. Clearly inform users the requirements so they know how to fix it.

Learn more about formatting Input error message.

Two input fields in the error state with red helper text "Enter a ZIP code".

Snackbar

Use a snackbar for lightweight, transient messages for minor errors like a message failing to send. They inform users about a failed process and provide an option to retry without interrupting their flow.

Do not use for critical or important messages.

Inform the user what just happened in concise, plain language. Use past tense and passive voice to focus on the outcome, not who caused it. 

Learn more about formatting Snackbar.

A snack bar with body "There was an issue saving this item", and link CTA "Try again"

Alert notices

Alert notices present error messages in a horizontal container above a group, section, or page. They are more visually prominent without blocking or interrupting the user.

Use alert notices to group multiple errors in a form. This indicates a process is blocked but correctable, or a module is invalid.

Learn more about formatting Alert notice.

Three forms of alert notices—inline, section, and page

Alert dialog

An alert dialog is blocking and requires explicit user acknowledgement before proceeding. They’re highly interruptive and are reserved for critical, high-impact errors like transaction failures, irreversible data deletion, and potentially compromised account activity.

Learn more about formatting Alert dialog.

Dialog box with header "Account suspended", body "We could not verify this account. We’ve sent you an email with additional details and next steps.", and CTA "Got it"

Full page

A full-page error state is reserved for critical service outages, incorrect URLs, or system failures. They clearly communicate the issue and provide space for users to recover.

Full-page errors should always provide next steps when possible, even if contacting support is the only option.

Illustration of an upside down person, header "This page is not available", body "It has been removed or is unavailable at this time", and CTA "Contact support"

Best practices

Respect people’s agency

Guide, don’t force.

Support people with clear options and helpful defaults, but always let them decide. Don’t force actions or trick them into decisions.

Use a single column

A single path is easier to follow than multiple.

A single-column layout aligns with how people naturally read. It’s easier to scan, reduces the likelihood of skipping fields, and helps avoid mistakes.

Voice and tone

Do phrase error messages neutrally. For more guidance, refer to the apologies and empathy section of our writing guidelines.

Error state of an input field with helper text "This field is required"

Don’t use language that blames or patronizes.

Error state of an input field with helper text "You left this field empty"

Message length

Do keep messages concise and human.

Page-level alert notice with header "We couldn't process your payment" and body "Update payment method"

Don’t use technical jargon or present error codes that the typical user wouldn’t understand.

Page-level alert notice with header "Error #29385" and body "Payment processing has failed due to an error"

Next steps

Do provide resolution or recovery steps where possible.

Snack bar with body "There was an issue saving this item" and CTA "Try again"

Don’t leave the user at a dead end.

Snack bar with body "There was an issue saving this item" and no CTA

Graphics

It has been removed or is unavailable at this time

Illustration of an upside down person, header "This page is not available", body "It has been removed or is unavailable at this time", and CTA "Contact support"

We could not verify this account

Illustration of a ladder, plant, and watering can with a header "Your account has been suspended", body "We could not verify this account"

Presentation

Do match error message components with the error severity.

Dialog box with header "Account suspended" body "We could not verify this account. We've sent you an email with additional details and next steps." and a CTA "Got it"

Don’t block a user with an alert dialog for minor issues and don’t present a critical error inside a snackbar.

A snack bar with body "This account has been suspended. We’ve sent you an email with additional details and next steps."