Bug report template you can copy and paste
A plain-text template that works in any tracker, a guide to each field, and a worked example.
A bug report template is a fixed set of fields every report fills in: title, summary, steps to reproduce, expected result, actual result, environment, evidence, frequency and priority. Using the same template for every report makes bugs faster to triage and reproduce, because developers always know where to find each detail. Copy the template below.
The template
Paste this into your tracker's issue template, a shared doc or an email. It is plain Markdown, so it renders well in most tools and stays readable where it does not.
## Title
[Where] [what goes wrong] when [trigger]
## Summary
One or two sentences: what is wrong and who it affects.
## Steps to reproduce
Starting point: [URL, signed in or out, account type]
1.
2.
3.
## Expected result
What should have happened.
## Actual result
What happened instead. Include any message shown on screen.
## Environment
- Browser and version:
- Operating system:
- Device and screen size:
- Account or role used:
- Build, release or environment (production, staging):
## Evidence
- Screenshot (problem marked):
- Recording:
- Console errors:
- Failed network requests (method, URL, status):
## Frequency
Every time / sometimes (about how often) / once
## Priority
Critical / High / Medium / Low, and whyWhat each field is for
| Field | Why it matters | Common mistake |
|---|---|---|
| Title | Lets someone triage the report without opening it | Naming the feature but not the failure |
| Steps to reproduce | The developer's first action is to follow them | Skipping the starting state, such as being signed in |
| Expected result | Shows whether it is a bug or a misunderstanding | Leaving it out because it seems obvious |
| Actual result | Describes the symptom precisely | Writing "it doesn't work" |
| Environment | Many bugs depend on browser, width or role | Writing "latest Chrome" instead of the version |
| Evidence | Errors and failed calls often point straight at the cause | A cropped screenshot with no URL visible |
| Frequency | Intermittent bugs need a different approach | Not saying it only happened once |
| Priority | Orders the queue | Marking everything Critical |
A filled-in example
Here is the template completed for a real-looking layout bug on a booking site.
## Title
Booking form: date picker hidden behind footer on small phones
## Summary
On narrow screens the calendar opens underneath the sticky footer,
so visitors cannot pick a date or complete a booking.
## Steps to reproduce
Starting point: https://example.com/book, signed out
1. Open the page on a phone about 360px wide.
2. Scroll to "Choose a date".
3. Tap the date field.
## Expected result
The calendar opens above the footer and every day can be tapped.
## Actual result
The calendar opens, but the bottom two rows are behind the footer
and cannot be tapped. Dates after the 21st cannot be chosen.
## Environment
- Browser and version: Chrome 130 (Android)
- Operating system: Android 14
- Device and screen size: Pixel 6a, 360 x 800 viewport
- Account or role used: none (signed out)
- Build, release or environment: production
## Evidence
- Screenshot (problem marked): attached, footer boxed in red
- Recording: none
- Console errors: none
- Failed network requests: none
## Frequency
Every time below roughly 400px wide. Fine on tablets and desktop.
## Priority
High: it blocks bookings for late-month dates on small phones.A short version for non-technical reporters
Clients and customers will not fill in nine fields. For them, ask three questions and collect the rest automatically or in a follow-up:
- What were you trying to do?
- What happened instead? (A screenshot is ideal.)
- Which page were you on?
A website feedback widget can answer the third question and the whole environment section for them. Flawsnap attaches the page URL, browser, device, console and network requests to every report automatically.
Adapting the template for a mobile app
Swap the browser fields for app version and build number, device model, OS version and light or dark mode. Add the screen name you were on, because apps have no URL. If the app was recently updated, say whether the bug appeared after the update.
Making the template stick
- Put it where reports are created: most trackers let you set a default issue template.
- Reject nothing for being incomplete, but reply with the missing field's name so the habit forms.
- Review the template every few months and remove any field nobody fills in.
- For guidance on writing each part well, read how to write a bug report.
Questions
- Which fields are essential if I want a shorter template?
- Title, steps to reproduce, expected result, actual result and a screenshot. With those five, most bugs can be reproduced. Environment details matter mostly for layout and browser-specific bugs, and are best captured automatically.
- Can I use this template in Jira, GitHub or Linear?
- Yes. It is plain Markdown, which those tools and most others render. Paste it into the tool's issue template settings so every new issue starts with it.
- Should the template differ for feature requests?
- Yes. A feature request has no steps to reproduce or actual result. Use a separate template that asks who needs it, what problem it solves and how they work around it today.
Try it on your own site
7-day free trial, then $9 a month for Starter or $19 for Pro, per organization, with unlimited team members.
Related
Updated