Stay organized with collections
Save and categorize content based on your preferences.
This self-study course helps you write clearer, more effective error messages,
whether they appear in IDEs, command lines, or GUIs. While this course contains
lessons for many error message scenarios, the majority of examples and guidance
focus on developer-facing error messages.
Target audience for this course
We've aimed this course at the following audiences:
Engineers
Program managers
Technical writers
We recommend taking Technical Writing
One before taking this
error messages course. After all, good error messages are just another form
of good technical writing. If you'd prefer to skip Technical Writing One for
now, that's okay—you can still benefit from this error messages course.
Why take this course?
Bad error messages frustrate users. Good error messages provide critical
information when things are not working as expected. Error messages are
often the main way developers interact with users when problems occur.
Some error messages are caused by invalid user inputs or misuse of certain
features and some are caused by product defects; all error messages require
users to figure out what to do next.
Data collected through Google support systems and UX research identified the
following common problems with bad error messages:
unactionable
vague
imprecise
confusing
inaccurate
unclear cause
unknown next steps
Conversely, good error messages provide the following benefits:
After completing this class, you will know how to do the following:
Write clearer, more helpful error messages.
Review your teammates' error messages.
Learning non-objectives
This course does not explain the mechanics of generating error messages.
For example, this course does not explain how to display error messages within
a GUI.
This course in ten seconds
Great error messages answer two questions as clearly and concisely as possible:
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Missing the information I need","missingTheInformationINeed","thumb-down"],["Too complicated / too many steps","tooComplicatedTooManySteps","thumb-down"],["Out of date","outOfDate","thumb-down"],["Samples / code issue","samplesCodeIssue","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-03-31 UTC."],[[["\u003cp\u003eThis self-study course focuses on writing clear and effective error messages, primarily for developers, with examples geared towards developer-facing scenarios.\u003c/p\u003e\n"],["\u003cp\u003eGood error messages are crucial for a positive user experience, providing actionable information and reducing support burdens by enabling user self-help.\u003c/p\u003e\n"],["\u003cp\u003eThis course teaches you to write and review error messages that clearly explain the problem and guide users towards a solution, but does not delve into the technical implementation of displaying them.\u003c/p\u003e\n"],["\u003cp\u003eThe ultimate goal of a good error message is to concisely answer two questions: "What went wrong?" and "How does the user fix it?".\u003c/p\u003e\n"]]],["This self-study course focuses on crafting effective error messages, primarily for developer-facing scenarios, applicable to engineers, program managers, and technical writers. It addresses common problems with bad error messages, like being unactionable or confusing, highlighting the benefits of good error messages, such as enabling self-help and reducing support workload. The course aims to teach how to write and review clearer, more helpful error messages, focusing on identifying what went wrong and how the user can fix it.\n"],null,["\u003cbr /\u003e\n\nThis self-study course helps you write clearer, more effective error messages,\nwhether they appear in IDEs, command lines, or GUIs. While this course contains\nlessons for many error message scenarios, the majority of examples and guidance\nfocus on developer-facing error messages.\n| **Note:** Not all guidelines presented in this course are appropriate in every situation for every target audience. Always aim error messages at the product's target audience.\n\nTarget audience for this course\n\nWe've aimed this course at the following audiences:\n\n- Engineers\n- Program managers\n- Technical writers\n\nWe recommend taking [Technical Writing\nOne](https://developers.google.com/tech-writing/overview) before taking this\nerror messages course. After all, good error messages are just another form\nof good technical writing. If you'd prefer to skip Technical Writing One for\nnow, that's okay---you can still benefit from this error messages course.\n\nWhy take this course?\n\nBad error messages frustrate users. Good error messages provide critical\ninformation when things are not working as expected. Error messages are\noften the main way developers interact with users when problems occur.\nSome error messages are caused by invalid user inputs or misuse of certain\nfeatures and some are caused by product defects; all error messages require\nusers to figure out what to do next.\n\nData collected through Google support systems and UX research identified the\nfollowing common problems with *bad* error messages:\n\n- unactionable\n- vague\n- imprecise\n- confusing\n- inaccurate\n- unclear cause\n- unknown next steps\n\nConversely, *good* error messages provide the following benefits:\n\n- Deliver the best user experience.\n- Are actionable.\n- Are universally accessible. (To learn more, take [Tech Writing for\n Accessibility.](/tech-writing/accessibility))\n- Enable users to help themselves.\n- Reduce the support workload.\n- Enable faster resolution of issues.\n\nLearning objectives\n\nAfter completing this class, you will know how to do the following:\n\n- Write clearer, more helpful error messages.\n- Review your teammates' error messages.\n\nLearning non-objectives\n\nThis course does not explain the mechanics of generating error messages.\nFor example, this course does not explain how to display error messages within\na GUI.\n\nThis course in ten seconds\n\nGreat error messages answer two questions as clearly and concisely as possible:\n\n- What went wrong?\n- How does the user fix that problem?\n\nYes, it's just that simple.\n\nAnd, it's just that hard.\n\n\u003cbr /\u003e\n\n\u003cbr /\u003e\n\n**Next unit:** [General error handling rules](/tech-writing/error-messages/error-handling)"]]