Formiqa/Templates/Bug Report Form Template
Free template · 9 fields included

Bug Report Form Template

Standardize bug reports with severity classification, browser details, reproduction steps, expected vs. actual behavior, and screenshot uploads. Collect actionable bug reports — not vague complaints.

No credit cardFree forever planCustomizable fields

A bug report form is the intake layer between the people who hit a defect and the developers who have to fix it. The core problem it solves is not collecting complaints — it is collecting reproducibility. Most raw bug reports fail on exactly one thing: an engineer reads them, cannot make the bug happen again, and the ticket dies in limbo. A structured form forces the three facts that make a report actionable — what the person did, what they expected, and what actually happened — so triage becomes a matter of prioritizing real issues instead of interrogating reporters over email.

A well-designed bug report separates the reproduction path from the symptom. This template does that with distinct Steps to Reproduce, Expected Behavior, and Actual Behavior fields rather than one catch-all box, and it enforces a 20-character minimum on the steps so 'it's broken' can't get through. It captures Severity as a fixed dropdown (Critical, High, Medium, Low) and Browser (Chrome, Firefox, Safari, Edge, Other), which is where a surprising share of front-end bugs actually live — a rendering issue that only appears in Safari is a different investigation than one that spans every browser. The Screenshot upload is optional on purpose: a picture of the broken state slashes reproduction time, but making it mandatory blocks someone trying to report a critical outage fast.

Deploy it wherever the person noticing the bug already is. Link it from an in-app Help or Feedback menu, drop it on a status or support page, or embed it in your docs so the report is filed with context instead of becoming a Slack message that scrolls away. Because every submission emails you on arrival, an incoming Critical report reaches your inbox in real time rather than waiting for someone to check a queue.

Fields included

9 pre-built fields, ready to customize.

#
Field label
Type
Required
1
Reporter Namee.g. Your name
Short text
Yes
2
Emaile.g. your@email.com
Email
Yes
3
Bug Titlee.g. Brief description of the bug
Short text
Yes
4
Severity
Dropdown
Yes
5
Browser
Dropdown
No
6
Steps to Reproducee.g. 1. Go to... 2. Click on... 3. See error
Long text
Yes
7
Expected Behaviore.g. What should happen?
Long text
Yes
8
Actual Behaviore.g. What actually happens?
Long text
Yes
9
Screenshot
File upload
No

All fields are fully customizable — add, remove, or reorder after opening the template.

Use cases

Who uses this template.

Public-facing bug reporting for a SaaS product, linked from an in-app Help or Feedback menu so users file structured reports instead of vague support tickets
Internal QA teams logging defects during a test cycle with consistent severity and browser metadata that feeds directly into triage
Beta and early-access programs where testers need one obvious place to report what broke, with screenshots attached
Agencies and freelancers giving clients a clean channel to report issues on a delivered site — no more bugs buried in email threads
Open-source or community projects collecting reproducible reports from non-technical users who don't have a GitHub account
Post-launch or hotfix monitoring, where a Critical-severity submission triggers an instant email alert so regressions surface within minutes
Best practices

How to get the most from this form.

Force reproduction steps, not a symptom dump

The single biggest cause of unfixable bugs is a report that describes the symptom but not the path to it. This template keeps Steps to Reproduce as a required field with a 20-character minimum and a numbered placeholder ('1. Go to… 2. Click… 3. See error'). That format cue alone dramatically raises the share of reports an engineer can act on without a follow-up.

Keep Expected and Actual as separate fields

Merging them into one box invites 'it doesn't work.' Two distinct fields — What should happen and What actually happens — force the reporter to articulate the discrepancy, which is the actual definition of a bug. It also gives the developer a built-in acceptance test: the fix is done when Actual matches Expected.

Define what each severity level means

Severity is subjective unless you anchor it. Everyone thinks their bug is Critical. Spell out the levels in your confirmation message — e.g. Critical = data loss or total outage, High = core feature broken with no workaround, Medium = broken with a workaround, Low = cosmetic. Consistent severity is what makes the dropdown useful for prioritizing the inbox.

Always ask for the browser, and consider asking for the build

The Browser dropdown exists because a huge class of front-end bugs are environment-specific — a layout that only breaks in Safari, a feature that fails on Edge. Knowing the browser narrows the investigation before an engineer opens the code. If you ship versioned releases, add a short text field for app version or build number; 'which version were you on' is the second question every developer asks.

Make screenshots prominent but never required

A screenshot of the broken state often replaces a paragraph of description and cuts reproduction time to seconds. Keep the upload visible and clearly labeled, but leave it optional — someone reporting a live Critical bug shouldn't be blocked hunting for a screen-capture tool. The field accepts JPG, PNG, and GIF, and an animated GIF is worth encouraging because it captures the sequence, not just the end state.

Capture the reporter's email so you can close the loop

The required Email field isn't just metadata — it lets you reply when you need one more detail or want to confirm a fix landed. Reporters who hear back file better reports next time. Route real-time email notifications to your triage owner so nothing sits unread, and reply from your own inbox once you've reproduced the issue.

FAQ

Common questions.

What makes a bug report actually usable for a developer?
Reproducibility. A developer needs to make the bug happen on their own machine before they can fix it, so the report has to contain the exact path — what you did, in order — plus what you expected and what actually occurred. This template structures all three as separate required fields and adds the browser and a screenshot so the engineer can reproduce the issue without a back-and-forth.
What's the difference between severity and priority in a bug report?
Severity is how bad the bug's impact is (data loss vs. a misaligned button); priority is how soon you'll fix it, which also weighs how many users are affected and business context. This form captures Severity from the reporter as a fixed dropdown — Critical, High, Medium, Low — and you set priority yourself during triage. Keeping severity a controlled dropdown rather than free text is what lets you scan and sort the inbox at a glance.
Can reporters attach a screenshot or a GIF of the bug?
Yes. The form includes an optional file upload that accepts JPG, PNG, and GIF up to 10 MB, so reporters can drop in a still of the broken state or an animated GIF showing the sequence. Uploads land in your dashboard alongside the rest of the submission, encrypted at rest, and are downloadable whenever you open the report. It's optional by design so an urgent report isn't blocked by hunting for a capture tool.
How do I get bug reports into Linear, Jira, or GitHub Issues?
Formiqa has no native issue-tracker integration, so there are two clean paths: export all submissions to CSV and bulk-import them, or wire submissions to your tracker with Zapier or Make so each new report opens a ticket automatically. Because the form already captures title, severity, steps, expected, and actual as discrete fields, those map neatly onto issue fields without reformatting.
Why require reproduction steps but leave the screenshot optional?
Because a bug with no steps is usually unfixable, while a bug with steps but no screenshot is still workable. The Steps to Reproduce field is required with a 20-character minimum precisely to stop 'it's broken' submissions, whereas forcing a screenshot would just add friction and delay urgent reports. It's a deliberate trade: mandatory where it determines whether the bug can be fixed, optional where it only speeds things up.
How do I make sure a Critical bug doesn't sit unnoticed in a queue?
Every submission triggers an email notification the moment it arrives, so an incoming report reaches your inbox in real time instead of waiting for someone to poll a dashboard. Route that notification to whoever owns triage, and use the Severity value in the subject line or your filters to flag Critical reports for immediate attention.
Can I embed this bug report form inside my app or docs?
Yes. Every published form has a shareable URL and an embed code, so you can link it from an in-app Help or Feedback menu, drop it on a support page, or iframe it into your documentation. Filing the report from inside the product means the person is already in the exact context where the bug occurred, which tends to produce more precise steps.

Use this template for free.

All 9 fields included. Customize and publish in minutes.