Don’t blame the user, write better error messages
Traditional error messages, usually written by developers, used to be very simple—whenever something “went wrong”, the user received a brief message along with a predefined error code. This brutally simple approach worked for a long time because we had grown used to this kind of message over the years.
Today, we understand that people have emotional responses to technology, forming subjective experiences. Just having a working app, website, or product isn’t enough to build a strong connection with your brand.
When using tech, everyone wants to feel safe and comfortable. That’s why more attention is now paid to every point of interaction between users and digital products. One key area here is handling errors well.
The best practice is prevention
The best systems are designed to minimize the chance of errors through their architecture, reducing the risk of frustrating mistakes.
Apple Lightning connector
In 2012, Apple introduced the Lightning connector, which quickly became a standard in their devices. Why did so many people fall in love with it, despite its incompatibility with USB-based devices? Because people could plug it in from either side—no more flipping the USB around in the dark.
While the decision to create a completely new, incompatible standard was controversial, it gained widespread praise from Apple’s customers. What’s the lesson here? Next time you’re designing an error scenario for your product, ask yourself:
How can I eliminate the root cause of this error?
Your users will thank you in the long run.
When errors must happen…
It’s nearly impossible to prevent all user errors. When they do occur, follow a few good practices to help users understand what’s happening.
1. Choose the right format
How the error message is displayed matters a lot. It shouldn’t break the user’s flow or interrupt their current action—especially in critical paths like the checkout process.
One familiar case: online forms. They accept your input happily—until you click “submit…“
Well, look what you’ve done.
A better approach is asynchronous validation—catching and displaying errors while the user is still filling out the form.
Asynchronous error validation in a registration form
Sure, this is a common example, but the same philosophy applies across services:
Validate in the background and give subtle, non-intrusive hints when something’s off.
Text color usage
Harsh red is falling out of favor for error messages. Instead, a softer red or orange background with red accents is now recommended. There’s even a biological reason—red increases anxiety responses.
2. Write a clear message
Hmmmm…
Even if the message appears in a non-intrusive way, the content still matters. Throwing raw error codes at users without guidance interrupts their flow and causes frustration.
How to craft a good error message?
-
Explain what went wrong.
Be honest and, optionally, brief. Add context about what the user tried to do and why it didn’t work. -
Tell them what happens next.
Describe the outcome of the failed action. If they’ll be redirected or logged out, say so. -
Tell them how to fix it.
If the user caused the error, explain how to fix it and successfully complete the task.
Example: A customer tries to add shoes to their cart without choosing a size.
Message: You’re trying to add shoes to your cart without selecting a size. Please use the dropdown menu next to the product image to choose your size.
Do messages have to be short?
No. It’s good to keep them concise, but clarity is more important. A longer, clear message is better than a short, confusing one.
3. Use the right tone
Even if your brand communicates casually, avoid being too playful when delivering bad news. The amount of humor depends on many factors and can work in some cases—but not when a user loses data or sees unexpected charges.
Thanks a lot, Windows.
The golden rule?
Every system message should feel like part of a conversation, not just a dry scolding for “wrong behavior.” Keep in mind that your product might be used by people with varying levels of technical skill.