How to Write Error Message Copy
You're two taps from finishing. Card entered, you hit pay, the screen hangs for half a second. Then:
Error. Transaction failed.
No clue whether your money just left your account, no hint at what to do next.
So a product you liked minutes ago now feels like one you can't trust.
Error message copy is the copy your users are almost guaranteed to read closely, because they meet it when they're stuck, anxious and urgently need guidance.
Which is exactly why you need to get it right.
Here's what you'll learn:
What error message copy is, and the jobs a good one does
8 rules for writing errors that calm people down instead of winding them up
How to match your tone to the stakes (a joke on a 404 is fine; a joke on a failed payment is not)
Copy-and-adapt examples for the errors you'll write most often
A 6-point checklist to run on your own product today
TLDR
A good error message answers three questions: what happened, why (if it helps), and what to do next. Lead with the fix, not your explanation. Never blame the user, and turn the personality down as the stakes go up: a 404 can be playful, a failed payment can't. And only say sorry when the failure is yours.
Let's get into it.
What is error message copy?
Error message copy is the text a product shows when something goes wrong: a rejected form field, a failed payment, a page that won't load. It's a type of UX copy, and its job is to help someone who's mid-task and stuck get unstuck.
A good error message does three things, in this order:
What happened – in plain words, not a code
Why – but only when knowing actually helps
What to do next – the real action that fixes it
What makes an error message good
The difference usually comes down to whether the message treats the reader as a problem or a person to help.
The UK Government, whose error-message guidance has been tested on real users in live government services, keeps it to three words: be clear, concise, and specific.
So read the message out loud, and if it doesn't sound like something you'd actually say to a person, rewrite it.
1. Lead with what happened, then the fix
Under pressure, the instinct is to explain yourself before you deliver the news. Resist it.
The reader doesn't want your reasoning first. They want to know what's happening to them and what to do about it.
So front-load the load-bearing words. People scan; put the meaning first and the explanation second.
❌ There was a problem processing your recent request and your payment was not completed
✅ Your payment failed because your card expired. Update it and try again.
When it's a form field, GOV.UK found the clearest pattern is to start with a verb that tells the person what to do:
❌ Date of birth is required
✅ Enter your date of birth
2. Never blame the user
System language is rather accusatory by default: invalid, illegal, incorrect, forbidden, denied. Every one of those words points a finger, and the person on the other end has usually done nothing worse than mistype a date or skip a field.
Blame them for it and a small snag becomes a moment they resent.
So describe the state, not the fault. Report what the system sees, not what the user supposedly did wrong, and drop "you forgot" and "oops" while you're at it.
❌ You entered an invalid email
✅ That email address doesn't look complete, check for a typo
3. Be specific, and show what "fixed" looks like
"Something went wrong" is the copy equivalent of a shrug. So is "an error occurred" or "this field is required." They don't tell the reader anything they can act on.
A single text field can fail in half a dozen ways: empty, too long, too short, wrong format, already taken. Lump them all under one vague message and you leave the person guessing which problem is theirs to fix.
The most useful thing you can do is show the target. A format example does more work than a sentence of explanation.
❌ Invalid password
✅ Use at least 8 characters, including one number
4. Match your tone to the stakes
Your brand voice is fixed, but your tone should move with the moment.
Mailchimp puts it plainly: your voice stays the same, but your tone changes with "the emotional state of the person you're addressing" — you wouldn't talk to someone who's scared the way you'd talk to someone who's laughing. Shopify applies that straight to errors, noting they "don't write error messages the same way" they write onboarding. And Monzo — a bank — keeps its humour "almost exclusively" in marketing, with only "the occasional surprise in the app."
So think of tone as a dial you turn down as the stakes go up:
Low stakes: A 404, a search with no results ➡️Personality, a little wit, full brand character
Medium stakes: Form validation, a failed upload ➡️Warmth and clarity but no jokes
High stakes: Failed payment, security, data at risk ➡️Plain, calm, reassuring. Very light personality
A playful 404 is charming. That same voice on "your transfer failed" reads as being cute about someone's money while they panic. Two more things push you toward plainness: frequency (a joke people see often curdles fast — the NN/g notes humour "can become stale if users encounter the error frequently") and fear (money, security and account access want reassurance, not charm).
💡 Deciding your fixed voice before you write any of this is the upstream work. My guide to building a brand message hierarchy walks through it, and it's a different job from the hero-headline voice on your homepage.
5. Only apologise when it's your fault
"Sorry" loses its meaning if you sprinkle it on everything.
Use "sorry" only for serious problems like lost data, a failed service, a customer needing to call support.
Apologise for your failures, not their mistakes. A server outage needs a heart-felt sorry. A blank required field does not, just help them fill it.
❌ We're so sorry! You didn't complete the required fields.
✅ Add your work email to continue
Makes so much more sense, right?
6. Don't fire the error too early
Flagging a field as wrong while someone's still typing it is a small act of hostility.
Tabbing out of an empty field is still exploring, not failing, and shouldn't be punished. A
s a rule, validate on submit or when someone leaves a field, not on every keystroke.
It’s also incredibly irritating to be bombarded with confusing error alerts while you’re still figuring things out.
But, if the field is particularly error-prone (a password with fiddly rules for eg.), real-time feedback does really help; so show requirements being met as they type.
💡 Firing errors to pressure, shame or trap people is where microcopy tips into a dark pattern.
7. Keep what they typed
Nothing makes a person abandon a form faster than watching it wipe itself.
Don't clear the fields when you show an error. Keeping both the right and wrong answers lets people see what went wrong, edit it, and avoid re-entering everything from scratch.
❌ [form clears, user starts over]
✅ [form keeps every entry, highlights the one field to fix]
8. When money's involved, reassure
Fintech copy runs on fear, so your job is to remove it with facts. The most valuable line in payments copy is telling people they haven't lost money.
And resist the urge to grovel. An over-apologetic error erodes something a financial product can't afford to lose: the sense that it has things under control.
❌ Transaction failed.
✅ We couldn't take that payment, your card hasn't been charged. Check your details and try again.
Do error messages need to be accessible?
Yes, and the plain, front-loaded copy from every rule above is already most of the work.
The one extra rule: never signal an error with colour alone. Roughly 350 million people worldwide have a colour-vision deficiency, so a red border with no words is invisible to a large slice of your users.
Say what's wrong in text, pair it with an icon, and write labels that still make sense read aloud, out of order, with no visual context.
Write the button, not just the message
An error isn't finished until you've written the way out. The button underneath does as much work as the sentence above it.
Name the action, not the acknowledgement. "Try again" is a lot clearer than "OK." "Update card" removes friction from "Continue." A real verb tells people exactly what they're about to set in motion.
Always leave an exit. If you can't offer a fix, offer a route: contact support, go back, check the status page. A dead-end error is the one that loses you the customer.
❌ Error. [OK]
✅ We couldn't save your changes. [Try again] [Contact support]
Error message examples by type
Empty field:
❌This field is required
✅Enter your full name
Wrong format:
❌Invalid input
✅Enter the date as DD/MM/YYYY
Password rules:
❌Password does not meet requirements
✅Use at least 8 characters and one number
Login:
❌Your email doesn't exist
✅Your email or password doesn't match. Try again
Payment:
❌Transaction failed
✅We couldn't take that payment, your card hasn't been charged. Check your details and try again
Server (your fault):
❌500 Internal Server Error
✅Something went wrong on our end. Try again in a few minutes
Offline:
❌Network error
✅You're offline. Check your connection and we'll pick up where you left off
Session timeout:
❌Session expired
✅You've been signed out to keep your account secure. Sign in again to continue
Rate limit:
❌ Too many requests
✅ You've done that a few times quickly, wait a minute and try again
Permission:
❌ Access denied
✅ You don't have access to this. Ask your admin to add you
File too big:
❌ Upload failed
✅ That file's over 10MB. Try a smaller one
Empty state:
❌ No results
✅ Nothing here yet. Create your first campaign to start tracking opens and clicks
404:
❌Page not found
✅This page isn't here, it may have moved. Head back to your dashboard
💡 Good error copy is churn-prevention. It sits alongside the other small words – empty states, tooltips, confirmations – that get people from signing up to using the product. I've written ten copywriting tips for product activation that go deep on that.
Your error messages, sorted
Error copy is one of the few places where a handful of words visibly changes whether someone stays or leaves.
It's small, it's overlooked, and it's usually written last by whoever was nearest the keyboard, which makes it one of the easiest wins in your whole product.
If you'd rather not audit it yourself: I write website and product copy for B2B SaaS. Send me the three error screens in your product you like least, and I'll tell you what the words are doing and what I'd do differently.
Amélie Pollak is a copywriter and verbal brand strategist working with SaaS startups, scale-ups and growing businesses to make their words work harder.
FAQs
What is error message copy?
Error message copy is the text a product shows when something goes wrong: a rejected form field, a failed payment, a page that won't load. It's a type of UX writing, and its job is to help a stuck user recover, not to sound clever.
What are the three parts of a good error message?
What happened, why (only when knowing helps), and what to do next. Helping users recognise, diagnose and recover from errors.
Should error messages say "sorry"?
Only when it's genuinely your fault and genuinely serious. Only use "sorry" only for problems like lost data or a failed service, and apologise only for things that went wrong with your product, not for a user's own typo or a dropped connection.
What words should you avoid in error messages?
Avoid blame words like invalid, illegal, incorrect, forbidden and "you forgot". Skip technical jargon and raw error codes too, lead with plain language and keep codes for support reference only.
How long should an error message be?
As short as it can be while still telling the person how to fix the problem. A slightly longer message that gives the next step beats a terse one that leaves someone stranded. Front-load the key information and cut anything that isn't helping them recover.
How should the tone of an error message change?
Turn the personality down as the stakes go up. Keep tone flexible to the reader's situation: a light touch is fine on a 404 or an empty search, but a failed payment or a security issue calls for plain, calm, reassuring copy and no jokes.
What is an example of a good error message?
A strong example names the problem and the next step in plain language, for instance: "We couldn't take that payment, your card hasn't been charged. Check your details and try again." It says what happened, removes the fear (the card wasn't charged), and tells the person exactly what to do.
Why do good error messages matter?
Because people read them closely at the exact moment they're stuck and most likely to give up. A clear error message recovers the task and protects trust, while a vague one like "something went wrong" can be the reason someone abandons an otherwise good product.