Error Message Craft

Parent: Writing and Documentation · Published reference · snapshot 2026-09-08 · skill technical-writing-craft/references/error-message-craft.md

↓ Facts as markdownall context files

Error messages are the most-read text most software ever produces. They are also the worst-edited. The goal: tell the user what went wrong, why it went wrong, and what to do next.

These notes link each claim to its source. Some citations identify archived research reports that are no longer hosted on this site. A published reference means the content is available; it does not certify independent review or accuracy.Read the editorial policy and follow the sources before relying on a claim.

Overview

1. The "what / why / what to do next" triple

  • The triple does not have to be three separate sentences. For a short field validation: > "Email must include an @ symbol." [archived source: https://llms-explorer.com/sources/mdb-context-hub/error-message-craft/#1-the-what-why-what-to-do-next-triple]
  • For an API 5xx: > "We couldn't save your changes (database unreachable). Wait 30 seconds and retry; if this persists, contact support with request ID req_abc123." [archived source: https://llms-explorer.com/sources/mdb-context-hub/error-message-craft/#1-the-what-why-what-to-do-next-triple]
  • 2. No-blame language — the system owns the failure

    3. State the problem in user terms, not internal terms

    4. Error codes — naming conventions

    5. Provide a concrete next action, or admit you cannot

    6. Conservative punctuation

    7. i18n considerations

    8. NN/g hostile patterns — what never to ship

    9. Form-validation errors — inline, contextual, specific

    References

    Where this helps

    Project ideas

    Antipatterns

    Known issues

    Children

    Frontier under this node: Concrete next action or admit there is none, Conservative punctuation (exclamation marks, ALL CAPS, ellipses), Error code conventions and status-code-vs-error-code distinction, Form-validation errors (inline, contextual, specific), Internationalization (pluralization, register, length budget), NN/g hostile patterns to avoid, No-blame language (system owns the failure), Separate user-facing string from log string with correlation IDs, The what / why / what-to-do-next triple, User terms vs internal terms

    ← the whole tree · 3D view· how to read this page