Error messages should explain what’s wrong and what to do next, in plain, specific language.
Principles
- Explain what’s wrong and what the person needs to do.
- Be specific — exact numbers and dates, or the person’s own data.
- Don’t over-apologize or bring “we” into it unless Orbit caused the problem.
- Avoid error jargon like “invalid”.
- Give detailed instructions for the next step.
- Help people avoid mistakes in the first place by managing expectations and highlighting risks.
- Only explain what happened behind the scenes when it’s helpful or you can’t offer a solution.
Design for clarity
- Use iconography and color to communicate the severity of the problem and draw attention to what’s wrong.
- Place the error close to what needs fixing.
- Use a critical (red) tone for messages people need to deal with immediately to avoid harm.
- Use a warning (yellow) tone for issues in a daily workflow that could lead to critical errors if not addressed.
Anatomy of an error message
- Heading (optional) — clearly state the effect of the error and command immediate attention.
- Body — if there’s no heading, state the effect here; explain how to fix it and link to help.
- Call to action (optional) — provide a one-step solution, or take people somewhere expressly to fix the issue.
Examples
Do
To list this lot, make 2 changes: add a serial number, and set a reserve price.
Don’t
There are 2 errors on this page. Invalid serial number. Reserve must be a number value greater than 0.
Do
Heading: Your bid wasn’t placed. Body: The lot closed before your bid was received. Button: View results.
Don’t
Heading: Bid failed. Body: You must have been too late. Button: Home.
Do
Heading: We couldn’t process your deposit. Body: The card on file was declined. Update your payment details and we’ll retry automatically. Button: Update payment.
Don’t
Heading: Invalid card. Body: Your bidding deposit was not processed because your card was declined. Go to your payment details and update them, then save so we can retry. Button: Next.
Do
Connection timed out.
Don’t
Sorry, the connection timed out. Try again later.