Spotting Good, Bad & Ugly Error Messages: A UX Guide
How to write better error messages that communicate better with the users.
Something went wrong.
Three words…
Yet they might be the most frustrating words in digital products.
Not because something failed.
But because the product stopped communicating.
For years, UX designers have been taught to write better error messages:
- Be clear.
- Be concise.
- Be helpful.
That’s still good advice.
But in the age of AI, it isn’t enough anymore.
The real question has changed from:
“How do we write a better error message?”
to
“How do we help users recover before they even feel stuck?”
That’s a completely different design challenge.
The Ugly Error Messages
Let’s start with the worst offenders.
❌ Something went wrong.
❌ Unknown Error.
❌ Error 500.
❌ Operation Failed.
Technically, these messages are accurate; practically, they’re useless.
Every user immediately asks the same questions:
- What happened?
- Why did it happen?
- Can I fix it?
- What should I do next?
The system knows the answer.
It simply chooses not to share it.
The Bad Error Messages
Bad error messages reveal what happened, but hide why.
Examples:
🚫 Upload failed.
🚫 Payment unsuccessful.
🚫 Password incorrect.
These messages are better…
…but they’re still incomplete.
Imagine a restaurant telling you,
We can’t serve your meal.
Naturally, your next question would be:
Why?
Out of stock?
Kitchen closed?
Wrong order?
Users deserve the same clarity from digital products.
The Good Error Messages
Good error messages don’t just report problems, they reduce uncertainty.
Instead of saying:
❌ Upload failed.
Say:
✅ Your file is larger than the 25 MB limit. Try compressing it or upload a smaller file.
Instead of:
❌ Invalid email.
Say:
✅ Please enter a valid email address, such as name@example.com.
Notice the difference?
The user immediately knows what happened and how to move forward.
A great error message answers three questions:
What happened?
Why did it happen?
What should I do next?
If one of those answers is missing, the message still has work to do.
We’ve Been Designing Error Messages for Systems
Traditional interfaces treat every user exactly the same.
Whether you’re a first-time user or an expert or whether you’re on your first mistake or your tenth, everyone sees identical text.
But this “one-size-fits-all” approach doesn’t work. Because the error is the same, but the people aren’t.
That’s the limitation of static interfaces.
From Static Errors to Dynamic Conversations
Imagine two people entering the wrong password.
User A
First login attempt.
Get Avinash Kumar’s stories in your inbox
Join Medium for free to get updates from this writer.
Your password doesn’t match this account. Double check for typing mistakes or reset your password if you’ve forgotten it.
User B
Six failed attempts.
We’ve noticed several unsuccessful login attempts. For your security, your account has been temporarily locked. Reset your password to continue.
It’s the same error, but different conversations.
That’s what dynamic error messaging looks like.
AI Changes the Rules
AI gives products something they’ve never really had before — Context.
Instead of showing one predefined message, AI can understand things like:
- Is this the user’s first attempt?
- Have they encountered this error before?
- What are they trying to accomplish?
- What happened immediately before the error?
- Are they a beginner or an experienced user?
- Which recovery option is most likely to work?
Instead of reporting failure…
The product can respond intelligently.
The Most Overlooked UX Opportunity
Here’s something we rarely discuss.
Most error messages appear after users fail.
But AI allows us to intervene much earlier.
Imagine someone repeatedly uploading a file that’s too large.
Traditional UX keeps saying:
File exceeds 25 MB.
Again.
And again.
And again.
An AI-powered product could recognize the pattern and respond differently:
It looks like you’ve run into this a couple of times. Would you like me to compress the file automatically before uploading?
The interface has evolved.
It no longer explains the problem.
It solves it.
That’s a fundamental shift in UX thinking.
Think Beyond Error Messages
Maybe we’ve been using the wrong term all along.
They’re not really error messages.
They’re recovery experiences.
The goal isn’t to explain failure.
The goal is to get users back on track as quickly and confidently as possible.
A simple framework for designing them is:
Understand → Explain → Guide → Prevent
Understand what the user is trying to achieve.
Explain what interrupted that goal — in plain language.
Guide them with the clearest next step.
Prevent the same problem from happening again.
That final step is where AI creates entirely new possibilities.
The Next Generation of Error Messages
Imagine booking a flight.
You accidentally enter a passport number with one missing digit.
Traditional UX:
Invalid passport number.
AI-powered UX:
Your passport number seems shorter than expected. It looks like one digit may be missing. Would you like me to highlight where?
Or imagine an AI writing assistant.
Instead of saying:
Prompt too vague.
It could respond:
I can help with that. Try adding your audience, tone, or desired outcome so I can generate something more useful.
One reports an error.
The other guides.
That’s the difference between an interface and an intelligent assistant.
A Better Question to Ask
The next time you’re designing an error message, don’t start with: “What should this message say?”
Start with:
“What does the system already know that could help this user recover faster?”
That one question changes everything.
Because the future of UX isn’t about writing friendlier error messages.
It’s about designing systems that understand people, adapt to context, and turn moments of failure into moments of guidance.
In the AI era, the best error message isn’t the one that’s written best.
It’s the one users barely notice because the product helped them recover before frustration ever had a chance to grow.
In the AI era, the best error message isn’t the one that’s written better, it’s the one users never need because the product helped them succeed before they failed.










