Recent chats
ASKGEEZ Q&A GUIDEWriting & communication

How do I write an error message that tells users what to do next?

Quick answer

Write the message in three parts: say what could not be completed, explain what the user can do next, and offer a useful alternative if that action may not work. Use plain words, name the relevant item or action, and avoid blaming the person. For example: “We couldn’t upload your file. Check that it’s the right format, then try again.”

LET’S WORK THROUGH IT

The question, the details, the next step.

Question

How do I write an error message that tells users what to do next? I can explain what went wrong, but my drafts often stop there.

Geez

Treat the message as a small set of directions, not just an announcement that something failed. A useful pattern is:

  1. State what could not be completed.
  2. Give the next action the user can take.
  3. If that action might not help, offer a reasonable alternative or explain what information to provide when asking for help.

For instance, “Something went wrong” names neither the problem nor a next step. If the issue is a missing required field, a more useful message might be: “We couldn’t save this form. Add a response to the marked field, then select Save.” That tells the user what happened and where to act, without implying they did something foolish.

Follow-up question

How do I keep the message clear without making it sound like the user caused the problem?

Geez

Describe the state of the task rather than judging the person. Prefer “We couldn’t find an account with those details” to “You entered the wrong details.” The first explains the obstacle without assigning blame; the second can sound accusatory and may not even be accurate.

Keep the opening short, then make the action concrete. “Please try again” is often too vague by itself. If you know what retrying means, say it: “Wait a moment, then select Submit again.” If you do not know a safe or reliable recovery step, do not invent one. Say what the user can do next to get help, using a placeholder for the appropriate support route if needed.

Follow-up question

Can you show how that works for a few different kinds of errors?

Geez

Sure. These are illustrative examples; replace the bracketed details with actions your product actually supports.

  1. Missing information

Weak: “Invalid form.” Clearer: “We couldn’t send this form. Add a response to [field name], then select Send.”

  1. A file that could not be accepted

Weak: “Upload failed.” Clearer: “We couldn’t upload [file name]. Choose a file in [accepted format], then try again.” Only name a format if you know it is accepted.

  1. A save that did not complete

Weak: “Error 104.” Clearer: “Your changes weren’t saved. Try saving again. If the message returns, copy your changes and contact [support route].” Include the copy step only if it is practical in the product.

  1. An unavailable item

Weak: “Not found.” Clearer: “We couldn’t find [item name]. Check the name, or return to [relevant list] and choose an available item.”

The examples connect the problem to a next action. Avoid promising that an action will fix the issue unless you know it will.

Follow-up question

What if I don’t know why the error happened, or the user can’t fix it themselves?

Geez

Be honest about what the message can say. You do not need to guess at a cause. State the outcome and offer the next useful step: “We couldn’t complete this request. Try again later, or contact [support route] and include [reference number, if available].” Use “try again later” only when waiting is a reasonable option for that situation.

If the user needs help, make the handoff specific: say what to include, such as the action they were taking or a displayed reference number, if your product provides one. Do not ask them to share sensitive information in an error message. If there is no suitable self-service action, say so plainly rather than sending them through irrelevant steps.

Follow-up question

Can you give me a reusable template and a quick way to review a draft?

Geez

Use this template:

“We couldn’t [specific task or outcome]. [Specific next action]. If that doesn’t work, [alternative action or support route].”

For example, assuming the product allows another attempt and has a support route: “We couldn’t submit your request. Check the marked fields and select Submit again. If it still doesn’t work, contact [support route] with reference [reference number].” Remove any step that the product cannot actually support.

Before using a message, check it against these questions:

  1. Does it name what did not happen in words the user will recognize?
  2. Is the next step specific and possible in the current situation?
  3. Does it avoid blame, jargon, and unexplained codes?
  4. Is there a useful alternative if the first step fails?
  5. Have you removed any promise or cause you cannot verify?

A good error message cannot always solve the underlying problem. It can still make the next available action clear.

A practical checklist

  • Name the task or outcome that could not be completed.

  • Give one specific next action that is actually available.

  • Use neutral wording that does not blame the user.

  • Offer a relevant alternative when the first action may fail.

  • Remove unexplained codes, unsupported causes, and guarantees.

A few more useful answers

Should an error message include a technical error code?

Use a code only when it helps the intended reader take action or report the issue. Pair it with a plain-language explanation rather than making the code the whole message.

Is “Please try again” ever enough?

It can work when retrying is a clear and reasonable next step. If the user needs to wait, change something, or choose another path, say so specifically.

What if there is no action the user can take?

Say what could not be completed and give the best available next step, such as contacting [support route] with [useful reference, if available]. Do not invent a fix.

YOUR QUESTION. YOUR DETAILS.

Let’s work through your situation.

Get a tailored answer or help with your next task. Starts at $1, with a quote before you pay.

Ask your own question
← Back to Geez at Work