Before you launch or pay for traffic

Form error messages best practices: the wording

An error that says Something went wrong leaves the visitor to guess which field failed and what to type instead. This page shows the wording and placement that let a stranger fix a form on the first try, and simulated visitors show which messages they could not use.

5 visitors try to .
First test free with an accountRun it from your coding agent

What should a form error message say, and where should it appear?

It should name the field that failed, say what is wrong in the visitor's own terms, and tell them the change that fixes it, all next to that field. Keep every value the visitor typed, and move the focus to the first field that needs a fix. A simulated test submits the form the way a stranger would and shows the message each visitor saw, with a screenshot, so you can read the wording where it appeared. It cannot tell you whether the wording is clear to every reader.

What this looks like in a report

Who
Keiko, signing up for a shared calendar app on her phone
How they arrived
Opened the signup link from a team chat, on her phone
Where they stopped
Password field, after pressing Create account

“It says Error and nothing else. Which field? I typed the same password twice, and now the form is empty except the name. I would have to retype everything, so I will leave.”

The fix. Show the message under the password boxes, such as Passwords do not match, and keep the name and email values as they are. Move the focus to the first box with a problem, then submit a mismatch on a phone to confirm it.

An illustration. Run a test to see your own.See a real sample report

The message names the form, not the field that failed

Error text is often written by the person who built the validation, who knows the rule by name. The message says Invalid input, Field required or Something went wrong, and that is all the visitor gets. A stranger scanning a long form cannot tell which of six boxes holds the problem, so they retype everything or press Send again. The wording is accurate for the developer and no use to the person holding the phone.

  • Does the message name the field, in the same words as its label?
  • Does it say the fix, such as the format to use, and not only that a value is wrong?
  • Does the message sit beside its field, not only at the top of the form?
  • Do the typed values survive the error, or does the form clear them?
  • After an error, does the focus move to the first field that needs a fix?

Wrong and right wording for the same failure

Take one failure, a phone number with a space in it, and compare three messages. The wrong one says Invalid phone, which names the field and gives no way out. The better one says Phone number is not valid, which is accurate but still asks the visitor to guess the rule. The right one says Use digits only, with no spaces or dashes, which names the rule in the visitor's terms and the change to make. Write each message as the change the visitor must make, and add the reason only when the change is not obvious.

Where the message sits decides whether anyone reads it

A message at the top of a long form is read once, if at all, and then the visitor has to find the box it refers to. Put each message directly under the field it describes, in the same style as that field's hint text, so it reads as part of the field. Link the message to its field so a screen reader announces it when the visitor reaches that box. A red outline on the box helps, but color alone does not reach a visitor who cannot tell the shades apart, so the words must carry the meaning.

Keep what the visitor typed, and send them to the first problem

A form that clears its fields after an error makes the visitor do the work twice. Keep every valid value in place, including the long address they typed and the company name that was correct. Move the focus to the first field that needs a fix, so the visitor does not have to scroll back up to find it. A form that reloads the whole page after a failed submit can lose input the visitor never saw go, and the loss is easy to miss on a laptop, where the reload looks instant. Test it on a phone over a slow connection, where the reload takes long enough to notice.

What you get with Mimiq

  1. 01

    Run it by hand, or on every pull request

    Paste a link and a task in the app and watch the visitors work. Or run them on every preview deploy: the GitHub Action comments on the pull request, any other CI can call the MCP endpoint, and your coding agent can run it too.

  2. 02

    Bugs and usability problems in one report

    The browser records errors and failed or slow requests on the step they happened. The visitors say where the wording or the steps confused them, and where they left.

  3. 03

    Visitors that behave like your audience

    Each visitor is a different profile with a reason to be there, matched to who the page is for, described by you, or built from your own customers.

  4. 04

    A prompt to fix each problem

    Every problem comes with a fix to paste into Cursor, Claude Code, Lovable or any coding agent, and one prompt hands over the top problems at once. Then send the same visitors through again.

  5. 05

    Follow every visitor

    See each visitor's whole path, step by step with screenshots, and what it was thinking at every step. Ask any visitor a question.

The browser records relevant JavaScript errors and failed or slow app requests encountered during the run, attached to the step where they occurred. The visitors are simulated: they find problems, they do not predict how many real people will convert.

A stricter password rule adds a message the copy never named

Forms change after launch: a new password rule, a country list, a required tax field, a second step. Each new rule adds a message, and the old copy may not describe it. After each change, submit the form with each failure on purpose, one at a time, and read the message each time. Compare the wording with the last run, and check that the field named in the message is the one that is wrong.

Starter

Try it on one launch

$9 once
120 credits, never expire

About 4 tests of 5 visitors

  • Visitors on your landing page, signup and checkout
  • Where they left and why, with a fix to copy for each problem
  • Run it in the app or on every pull request
  • Ask any visitor a question, included
  • Test accounts and protected previews
Buy 120 credits

Builder

Test every build

$19 a month
500 credits every month

About 20 tests of 5 visitors

  • Everything in Starter
  • Credits refill each month, and what is left rolls over once
  • Cancel anytime
Choose Builder

Pro

Test every release, as a team

$49 a month
1,500 credits every month

About 60 tests of 5 visitors

  • Everything in Starter
  • Credits refill each month, and what is left rolls over once
  • Cancel anytime
Choose Pro

Scale

Test at scale, every day

$149 a month
6,000 credits every month

About 240 tests of 5 visitors

  • Everything in Starter
  • Credits refill each month, and what is left rolls over once
  • Priority support
  • Cancel anytime
Choose Scale
$0for your first test, with a free account (Google sign-in, no card). It includes 50 credits, enough for 10 visitors. After that a visitor uses 5 credits, and packs start at $9 for 120 credits.
See a sample report

Questions

Should every error use the same words?

Use the same pattern, not the same sentence. Every message should name the field and the change, so the visitor learns the form's style after one error. Vary the words only to make the change clearer, such as Enter a 5-digit ZIP code instead of Enter a valid zip.

Should I show a summary of all the errors at the top?

You can add a summary, but it should repeat the field messages, not replace them. A summary alone makes the visitor hunt for each box. Link each summary line to its field so a click takes the visitor straight to the problem.

How do I know whether a message is clear?

Read it without the form. Cover everything except the message and ask whether a stranger could say which field to change and what to type. The test can show the message a visitor saw at each step, with a screenshot, but it cannot tell you whether the wording reads clearly to every reader.

Do error messages need translating?

If your visitors read more than one language, translate the messages as carefully as the labels. A visitor who gets an English message on a German form may not know which field failed. Test each language version on its own form, with its own submit.

Should a message explain why a value was rejected?

Explain the rule when a visitor could not know it, such as a password length or a list of countries you ship to. Do not explain the internal check behind it, since that can help someone who wants to get around the form. A short reason beside the field is enough.

Keep reading

Send visitors and see what breaks first.

Your first test is free: sign in with Google and it starts right away. Last checked 2026-11-02.

5 visitors try to .