By Fatskills Exam Guides Team — the exam nerds behind 28,500+ quizzes and 2.1M practice questions across 500+ global exams.
A practical, portfolio-ready guide for technical writers, developers transitioning into writing, and writers modernizing their skills.
Error messages and in-product copy (microcopy) are the small but critical snippets of text that guide users when things go wrong or when they need quick instructions inside a product. Well-written microcopy reduces support tickets, improves user confidence, and prevents frustration. For example, a payment API’s error message like "Invalid card number (must be 16 digits)" is far more helpful than "Error: 400 Bad Request". Similarly, a cloud service’s onboarding tooltip—"Click ‘Deploy’ to launch your first instance (takes ~2 min)"—sets clear expectations and reduces abandonment.
"Invalid card number (must be 16 digits)"
"Error: 400 Bad Request"
"Click ‘Deploy’ to launch your first instance (takes ~2 min)"
"Drag files here to upload"
"Drop files."
"Your session expired. Refresh the page to log in again."
"Click the blue button"
"Click ‘Submit’"
"Try for free"
"Start your free trial"
"Don’t use ‘please’ in error messages"
"Error: Invalid email"
"Error: The email you entered is invalid. Example: [email protected]"
"Log in"
"Sign in"
Example: For an API error, check the HTTP status code (e.g., 401 Unauthorized) and the backend logic (e.g., "Missing API key").
401 Unauthorized
"Missing API key"
Draft clear, actionable text
"Payment failed."
"Payment declined. Your card was rejected by the bank. Try another card or contact your bank."
Microcopy: Be concise but helpful.
"Enter your email."
"Enter your email to reset your password (e.g., [email protected])."
Collaborate with UX/engineering
For APIs, update the OpenAPI spec (e.g., description: "The API key is missing or invalid. Include it in theAuthorizationheader.").
description: "The API key is missing or invalid. Include it in the
header."
Test with real users
"Oops!"
"Error"
Use Hotjar to see if users struggle with a tooltip or error message.
Document internally
For APIs, include error responses in the OpenAPI spec under responses: yaml responses: 401: description: "Unauthorized. The API key is missing or invalid."
responses
yaml responses: 401: description: "Unauthorized. The API key is missing or invalid."
Automate and enforce consistency
"Something went wrong."
"Your file is too large (max 10MB). Compress it and try again."
"You entered an invalid email."
"This email isn’t valid. Example: [email protected]."
"HTTP 500: Internal Server Error"
"We’re having trouble processing your request. Please try again later."
"Error: 404"
"Click the red button"
"Click the ‘Submit’ button."
Example: A GitHub PR where you updated an OpenAPI spec to add clearer error descriptions.
Highlight collaboration
Example: "Collaborated with UX to rewrite onboarding tooltips, reducing support tickets by 20%."
"Collaborated with UX to rewrite onboarding tooltips, reducing support tickets by 20%."
Know the difference between tools
Tutorial vs. How-to guide: A tutorial teaches concepts by building (e.g., "Build a weather app with our API"); a how-to solves a specific problem (e.g., "How to authenticate with OAuth").
"Build a weather app with our API"
"How to authenticate with OAuth"
Prepare for scenario questions
"A developer says your API error messages are unhelpful. How do you fix this?"
"I’d audit the OpenAPI spec, add detailed
fields for each error, and test endpoints in Postman to ensure messages match real responses."
Why: You can’t improve what you don’t understand.
Your team wants to localize microcopy for Spanish markets. What do you need to consider?
"Hit a home run"
"Iniciar sesión"
Why: Direct translations often fail to convey the intended meaning.
An engineer says, "Just use the HTTP status code in the error message." How do you respond?
404
"The page you’re looking for doesn’t exist. Check the URL and try again."
Problem + Cause + Solution
"Payment failed (your card was declined). Try another card or contact your bank."
"Uploading… 3/10 files"
"Please try again"
"Try again"
yaml responses: 400: description: "Invalid input. The `email` field must be a valid email address."
bold
Click Submit.
`code`
Enter your
aria-label
<button aria-label="Close modal">X</button>
"Avoid passive voice in error messages (e.g., ‘An error occurred’ → ‘We couldn’t process your request’)."
Join 4M+ learners. Unlock unlimited quizzes, wrong-answer tracking, flashcards + reminders, study guides, and 1-on-1 challenges.