Bug Report Generator
Turn a messy bug into a clean, reproducible report.
- $19 Free
- 40 sec
- No signup
Describe expected vs actual
Add repro steps and environment
Copy the formatted bug report
You get: A structured, reproducible bug report ready to paste.
The bug
Core flow broken, no reasonable workaround
Markdown report
# Password reset email never arrives for Gmail addresses **Severity:** High - Core flow broken, no reasonable workaround ## Environment - App version: 2.4.1 - Browser: Chrome 128 on macOS 14.5 - Account type: free tier - Region: EU (Frankfurt) ## Steps to reproduce 1. Go to /login and click 'Forgot password' 2. Enter a @gmail.com address that has an account 3. Submit the form and wait 10 minutes 4. Check inbox, spam, and all mail folders ## Expected behavior A reset email arrives within 2 minutes, as it does for non-Gmail addresses. ## Actual behavior No email ever arrives for @gmail.com addresses. The UI shows the success toast, so the request is accepted, but nothing is delivered. @outlook.com addresses work fine. ## Logs / error output ``` 2026-09-14T10:32:11Z WARN mailer: provider returned 550 5.7.1 for gmail.com 2026-09-14T10:32:11Z INFO reset: token issued user=8821 (email suppressed) ```
Entirely client-side. Nothing is uploaded. Paste this into GitHub Issues, Jira, Linear, or straight into Claude Code to start debugging.
A good bug report is a reproduction, not a complaint
The difference between a bug that gets fixed today and one that sits open for a month is almost never the difficulty of the fix. It is the quality of the report. 'The login is broken' is a complaint - it tells the developer nothing about where to look, what to type, or how to know when it is fixed. A real bug report is a reproduction: it hands the developer the exact sequence that triggers the failure, states what should have happened, and states what actually happened instead. If they can reproduce it, they can almost always fix it.
This generator captures the seven fields that make a bug reproducible - a specific title, severity, environment, numbered steps, expected behavior, actual behavior, and logs - and emits clean Markdown ready to paste into any issue tracker. It also flags which fields are still missing, because the most common failure of a bug report is not being wrong, it is being incomplete.
The anatomy of a reproducible report
- Title - specific enough to be useful in a list of fifty. 'Reset email never arrives for Gmail' beats 'email bug'.
- Severity - how much it hurts and how urgent it is, so triage can rank it against everything else.
- Environment - version, OS, browser, account type, region. Half of hard bugs only reproduce in one environment.
- Steps to reproduce - numbered, exact, starting from a known state. This is the single most important field.
- Expected behavior - what should have happened, so there is no argument about whether it is even a bug.
- Actual behavior - what actually happened, described precisely, including what did work as a contrast.
- Logs - the error output, stack trace, or console messages that point at the failure.
Expected vs actual is the heart of it
Every bug is a gap between what should happen and what does. Stating both explicitly turns a vague 'it's broken' into a precise, checkable claim - and gives the developer an unambiguous definition of when the fix is done.
Reproduction steps are where reports live or die
A developer cannot fix what they cannot reproduce, so the steps field carries more weight than all the others combined. Good steps start from a known state ('a fresh incognito window, logged out'), list one action per line, and are specific about inputs ('enter a @gmail.com address that already has an account', not 'enter an email'). The test of a good repro is simple: could a developer who has never seen the bug follow your steps and watch it happen? If any step requires knowledge you have not written down, the repro is incomplete and the bug will bounce back to you with 'cannot reproduce'.
Environment is where the hard bugs hide
The bugs that eat days are the ones that only happen in one environment - one browser version, one operating system, one region, one account tier, one screen size. When the environment is missing from the report, the developer tests on their own machine, cannot reproduce it, and closes the issue. Then it comes back. Capturing the environment up front short-circuits that whole loop. If you do not know which environment detail matters, list everything you can - version, OS, browser, device, network, account type - and let the developer narrow it down.
Severity is a triage signal, not a feeling
Severity exists so the team can rank a new bug against everything already in the queue. Anchor it to impact, not frustration: critical means data loss, an outage, or a security hole and should stop other work; high means a core flow is broken with no reasonable workaround; medium means it is broken but there is a way around it; low means cosmetic or minor. Honest severity keeps trust in the system - if everything is filed as critical, nothing is, and real emergencies get lost in the noise.
Handing the bug report to Claude Code
A well-structured bug report is close to the ideal prompt for Claude Code, because it already contains everything the model needs to start debugging: the exact reproduction, the expected and actual behavior, the environment, and the error output. Paste the report in and ask it to form a hypothesis about the root cause before touching any code. The numbered steps let it trace the code path; the expected-versus-actual gap tells it precisely what to explain; and the logs often point straight at the failing line. A vague report forces the model to guess; a structured one lets it reason.
- Paste the report and ask 'What is your top hypothesis for the root cause, and what would confirm or rule it out?'
- Give it the relevant files and ask it to trace the reproduction steps through the code path.
- Have it propose the smallest fix that closes the expected-versus-actual gap, plus a test that would have caught the bug.
- Confirm the fix against the original steps to reproduce - the bug is only closed when those steps no longer trigger it.
Anti-patterns this tool prevents
- The one-liner - 'it's broken' with no steps, no environment, and no expected behavior.
- The essay - three paragraphs of narrative where seven labeled fields would be instantly scannable.
- The missing repro - a description of the symptom with no way to trigger it, guaranteeing a 'cannot reproduce' bounce.
- Everything is critical - severity inflation that destroys the team's ability to triage.
- No logs - the error output was right there in the console and never made it into the report.
Frequently asked questions
Is any of this uploaded or stored?
No. The report is assembled entirely in your browser with plain JavaScript. There is no server, no logging, and nothing persists. This matters because logs and environment details can be sensitive - they never leave your machine.
What format does it produce?
Standard Markdown with headings, numbered reproduction steps, and a fenced code block for logs. It pastes cleanly into GitHub Issues, GitLab, Jira, Linear, and any tool that renders Markdown.
What does the 'still missing' warning do?
It flags the fields a strong report needs that you have not filled in yet - title, repro steps, expected, actual, and environment. It is a nudge toward completeness, since incomplete reports are the number one reason bugs bounce back unfixed.
How detailed should reproduction steps be?
Detailed enough that someone who has never seen the bug can follow them and watch it happen. Start from a known state, one action per line, and be specific about inputs. If a step relies on unwritten knowledge, the repro is incomplete.
How do I choose a severity?
Anchor it to impact, not frustration. Critical is data loss, outage, or a security hole; high is a broken core flow with no workaround; medium is broken with a workaround; low is cosmetic. Honest severity keeps triage trustworthy.
Why is this a good prompt for Claude Code?
Because a structured report already contains everything needed to debug - the exact reproduction, the expected-versus-actual gap, the environment, and the logs. That lets the model reason toward a root cause instead of guessing from a vague symptom.
Liked this tool? The club is the next step.
Join Claude Code Club for $9/month. 650+ lessons, weekly updates, and the workflows behind every tool on this site.
- No experience needed
- Cancel anytime
- Updated weekly
