A bug report is a communication document. Its purpose is not just to record that something is wrong — it is to give another person enough information to reproduce the problem, understand the impact, and fix it efficiently. Poor bug reports create back-and-forth conversations, waste developer time, and sometimes result in the bug being closed as “cannot reproduce.” Good bug reports get prioritised and resolved.
Why Most Bug Reports Fail
The most common reasons bug reports get ignored or deprioritised:
- Too vague: “The app crashes sometimes” tells a developer almost nothing they can act on.
- Missing reproduction steps: Without knowing how to trigger the bug, engineers cannot confirm it exists or test a fix.
- No expected vs. actual behaviour: Without knowing what should happen, it is impossible to verify that a fix is correct.
- Wrong severity assessment: Over-stating severity causes noise; under-stating it causes important bugs to be missed.
- Buried in prose: A wall of text makes it harder to extract the key information quickly.
Key Vocabulary
- Reproduction steps (also: steps to reproduce, STR) — the exact sequence of actions needed to trigger the bug
- Expected behaviour — what the system should do according to the specification or intuition
- Actual behaviour — what the system actually does when the bug occurs
- Severity — the impact of the bug on the system or user (Critical, High, Medium, Low)
- Priority — how urgently the bug should be fixed, often set by the product owner
- Environment — the context in which the bug occurs (OS, browser, device, build version)
- Regression — a bug that was previously fixed but has reappeared
- Intermittent — a bug that does not occur consistently, making it harder to reproduce
- Blocker — a critical bug that prevents a user from completing an essential action
- Workaround — an alternative approach that lets the user achieve their goal despite the bug
The Standard Bug Report Structure
A well-written bug report follows a consistent structure. Every field has a purpose.
Title
The title should be specific and searchable. It should describe the problem, not the symptom in vague terms.
| Weak title | Strong title |
|---|---|
| Login broken | Login button unresponsive after password reset on iOS 17.4 |
| App crashes | App crashes when uploading image larger than 5MB on Android |
| Search doesn’t work | Search returns no results for queries containing apostrophes |
The formula is: [Component] [what goes wrong] [when/where/condition]
Description
The description provides context. Include:
- A one-to-two sentence summary of what is wrong
- When the issue was first noticed (especially for regressions)
- How frequently it occurs (always, intermittently, only under certain conditions)
Example: “The password reset flow does not redirect the user to the login page after they set a new password. Instead, the page reloads and shows the same form with a blank password field. This behaviour occurs consistently on iOS devices running Safari. First observed in build 4.2.1.”
Steps to Reproduce
This is the most critical section. Number your steps clearly. Be precise about which element you click, what data you enter, and what order events happen in.
Example:
- Open the app on an iPhone 14 running iOS 17.4 and Safari 17.
- Tap “Forgot your password?” on the login screen.
- Enter a registered email address and tap “Send reset link.”
- Open the email and tap the reset link.
- Enter a new password and tap “Set new password.”
- Observe the page behaviour.
Expected Behaviour
State what should happen in plain, direct English.
“After tapping ‘Set new password’, the user should be redirected to the login screen with a confirmation message: ‘Your password has been updated. Please log in.’”
Actual Behaviour
State exactly what happens instead.
“The page reloads and displays the password reset form again with both password fields empty. No confirmation message is shown. The new password has been saved (the user can log in manually), but the redirect does not occur.”
Environment
Include all relevant technical context:
- OS: iOS 17.4
- Browser/App version: Safari 17, App v4.2.1
- Device: iPhone 14 Pro
- Account type: Standard user (issue not reproduced on admin accounts)
- Network: WiFi and cellular (both affected)
Severity and Priority
Severity: High — The user cannot complete the flow without confusion. They may believe the password reset failed.
Priority: High — This affects the primary authentication recovery path.
Attachments
Always include:
- A screenshot showing the actual behaviour
- A screen recording if the bug is time-sensitive or involves a sequence of events
- Console logs or error messages if accessible
- A HAR file (network recording) for API-related bugs
Writing for an International Team
When writing bug reports for a global team, clarity is more important than eloquence. Use simple, direct sentences. Avoid idioms, sarcasm, or ambiguity.
Less clear: “The search seems to have gone haywire when I threw some special characters at it.”
More clear: “The search feature returns an error page (500) when the query contains the characters & or %.”
Use the active voice to describe both the user’s action and the system’s response:
- “The user taps ‘Submit’” (not “Submit is tapped by the user”)
- “The system displays a 404 error” (not “A 404 error is displayed”)
A Template to Copy and Use
**Title:** [Component] [problem] [condition]
**Description:**
[1-2 sentences explaining the problem and context]
**Steps to Reproduce:**
1.
2.
3.
**Expected Behaviour:**
[What should happen]
**Actual Behaviour:**
[What actually happens]
**Environment:**
- OS:
- Browser/App version:
- Device:
**Severity:** Critical / High / Medium / Low
**Frequency:** Always / Intermittent / Rare
**Attachments:**
[Screenshot / Video / Logs]
A well-written bug report is an act of respect for the engineers who will investigate it. It saves time, reduces frustration, and signals professional competence. The effort you invest in writing clearly is repaid many times over in faster, more accurate fixes.
Navigating Nuances: Precise Language for International Teams
Writing effective bug reports isn’t just about describing what’s broken; it’s about communicating clearly and precisely enough for your colleagues – especially those learning professional English – to understand the problem and implement a solution. A common hurdle for non-native speakers is using overly vague or informal language, which can lead to misinterpretations and delays in fixing bugs. Let’s look at some specific areas where careful phrasing makes all the difference.
Firstly, replace colloquialisms and idioms with their direct equivalents. Instead of saying “it’s throwing a fit,” which might be understood metaphorically but could confuse someone unfamiliar with that expression, use “the application is encountering an error.” Similarly, avoid phrases like “something’s not working right” – it’s far more precise to state: “The button does not respond when clicked.” This demonstrates attention to detail and avoids ambiguity. Pay particular attention to verbs; “fix” can be replaced with the more formal and descriptive “resolve,” “correct,” or “address.”
Another key area is describing steps to reproduce a bug. A typical request might be, “Try clicking the button.” That’s insufficient. Instead, provide a numbered sequence: “1. Navigate to the homepage. 2. Click on the ‘Submit’ button located in the top-right corner. 3. Observe that the page does not refresh and no confirmation message is displayed.” This level of detail provides developers with the exact instructions needed to replicate the issue. Remember, your goal isn’t just to point out a problem; it’s to empower someone else to solve it.
Finally, consider the tone of your report. While frustration is understandable when encountering bugs, avoid accusatory language or blaming specific individuals. Focus on the problem itself. Instead of “John broke it,” write: “The application fails to save changes after submitting a form.” A professional and objective tone fosters collaboration and avoids defensiveness. Utilizing phrases like “As a result…” or “Consequently…” helps to clearly articulate the impact of the bug. Remember, the aim is to facilitate a productive discussion and swift resolution.
Keep practising
Turn this article into muscle memory
Five-minute exercises with instant feedback — built from the same kind of real IT language.
What to read next
Frequently asked questions
What will I learn from "How to Write a Bug Report That Gets Fixed"?
This is a Intermediate-level Writing article covering bug-reports, writing, QA and communication. Learn how to write clear, actionable bug reports in English that developers can act on immediately — with templates, real examples, and common mistakes to avoid.
Is this article free to read?
Yes. Every article on CoderSlingo, including this one, is free to read with no account, sign-up, or paywall.
How is reading this article different from doing an exercise?
Articles like this one explain concepts and vocabulary in context through prose, while exercises are interactive drills — fill-in-the-blank, matching, and multiple-choice — that test and reinforce specific terms. Reading builds understanding; exercises build recall.
Can I practice the vocabulary used in this article?
Yes — this article's topic lines up with our bug-reports exercises. Use the "Practice this vocabulary" link below to jump straight into a matching drill.
How long does "How to Write a Bug Report That Gets Fixed" take to read?
About 8 min. Most CoderSlingo articles, including this one, are written to be read in one sitting, without needing a dictionary open in another tab.
Do I need to create an account to read or save this article?
No account is required to read any article. If you complete exercises elsewhere on the site, your progress is saved locally in your browser — no login needed.
What if I don't understand a technical term used in this article?
Check the site Glossary for plain-English definitions of common IT terms, or browse the #bug-reports tag page for other Writing articles that use the same vocabulary in different contexts.
Can I share or link to "How to Write a Bug Report That Gets Fixed"?
Yes — use the Twitter/X or LinkedIn share buttons at the end of the article, or copy the page URL directly. Attribution back to CoderSlingo is appreciated but the content is free to reference.
When was this Writing article published?
This article was published in 2026. New Writing articles are added regularly — visit the #bug-reports tag page to see the full, continuously updated list.
Where can I find more articles like this one?
See "How to Take Effective Meeting Notes in English", "How to Write a Meeting Follow-Up Email in English", "How to Write a Slack Thread Summary in English" in the Related Articles section below, or browse all Writing articles from the main Blog index.