Founding price: the first 100 buyers get Pro for life at $24 once (then $39).Founding: Pro for life $24 Get notified →
Free templates

GitHub issue template for bug reports (YAML form + Markdown)

GitHub lets you turn the "New issue" page into a form with required fields, dropdowns and tick boxes. Below is a complete bug report issue form you can commit as-is, the classic Markdown version, and a config.yml that routes security reports and support questions elsewhere. It is template T1 from our Bug Report & QA Kit.

Quick answer

Save the YAML below as .github/ISSUE_TEMPLATE/bug_report.yml on your default branch. Issue forms must start with name, description and body; labels in the form are only applied if they already exist in the repo. GitHub lists issue forms as public preview (checked 23 October 2026).

bug_report.yml (issue form)

.github/ISSUE_TEMPLATE/bug_report.ymlCommit as-is
name: Bug report
description: Something does not work as expected.
title: 'Bug: [Area]: [what goes wrong] when [trigger]'
labels:
- bug
- needs-triage
body:
- type: markdown
  attributes:
    value: |
      The default for anything that works incorrectly. If it fits a more specific template below, use that instead.
- type: input
  id: summary
  attributes:
    label: Summary
    description: 'One sentence: what breaks and who it affects.'
  validations:
    required: true
- type: textarea
  id: environment
  attributes:
    label: Environment
    description: Version or build, URL or screen, browser or device + OS, account/plan, feature flags.
    value: "Build: \nURL / screen: \nBrowser or device + OS: \nAccount / plan: \nFlags: \n"
  validations:
    required: true
- type: textarea
  id: steps
  attributes:
    label: Steps to reproduce
    description: Start from a known state. One action per step.
    value: "1. Logged in as \n2. \n3. \n"
  validations:
    required: true
- type: textarea
  id: expected
  attributes:
    label: Expected result
    description: What should happen. Link the spec or last working version if you can.
  validations:
    required: true
- type: textarea
  id: actual
  attributes:
    label: Actual result
    description: What happens instead. Paste the exact error text.
  validations:
    required: true
- type: dropdown
  id: frequency
  attributes:
    label: How often does it happen?
    options:
    - Always (every try)
    - Often (more than half of tries)
    - Sometimes (less than half)
    - Once so far
  validations:
    required: true
- type: dropdown
  id: severity
  attributes:
    label: Severity (see the severity guide)
    description: Triage may change it.
    options:
    - 'S1 Critical: data lost/exposed or core flow blocked, no workaround'
    - 'S2 Major: core feature wrong or failing for a group'
    - 'S3 Minor: works with an easy workaround'
    - 'S4 Cosmetic: looks or reads wrong only'
    - Not sure (triage will set it)
  validations:
    required: true
- type: textarea
  id: evidence
  attributes:
    label: Evidence
    description: Drag in a screen recording or screenshot. Add console errors, request IDs or log links.
  validations:
    required: false
- type: textarea
  id: logs
  attributes:
    label: Console or log output
    description: Paste text, not screenshots of text. Remove secrets and personal data.
    render: shell
  validations:
    required: false
- type: input
  id: workaround
  attributes:
    label: Workaround
    description: What users can do meanwhile, or "none known".
  validations:
    required: false
- type: checkboxes
  id: checks
  attributes:
    label: Before you submit
    options:
    - label: I searched existing issues and this is not a duplicate
      required: true
    - label: I removed passwords, tokens and personal data from attachments
      required: true

config.yml (optional)

Turns off blank issues and sends security reports and support questions to the right place. Replace OWNER/REPO and the support link.

.github/ISSUE_TEMPLATE/config.yml
blank_issues_enabled: false
contact_links:
- name: Report a security vulnerability (private)
  url: https://github.com/OWNER/REPO/security/advisories/new
  about: Please do not open a public issue for security problems.
- name: Customer support
  url: https://example.com/support
  about: Account or billing questions go to support. Replace this link.

bug_report.md (classic Markdown template)

Use this if you prefer a plain template, or for GitLab (.gitlab/issue_templates/Bug.md, without the front matter).

.github/ISSUE_TEMPLATE/bug_report.md
---
name: Bug report
about: Something does not work as expected.
title: "Bug: [Area]: [what goes wrong] when [trigger]"
labels: bug, needs-triage
---

### Summary (required)
<!-- One sentence: what breaks and who it affects. -->


### Environment (required)
<!-- Version or build, URL or screen, browser or device + OS, account/plan, feature flags. -->
Build: 
URL / screen: 
Browser or device + OS: 
Account / plan: 
Flags: 

### Steps to reproduce (required)
<!-- Start from a known state. One action per step. -->
1. Logged in as 
2. 
3. 

### Expected result (required)
<!-- What should happen. Link the spec or last working version if you can. -->


### Actual result (required)
<!-- What happens instead. Paste the exact error text. -->


### How often does it happen? (required)
<!-- Tick one -->
- [ ] Always (every try)
- [ ] Often (more than half of tries)
- [ ] Sometimes (less than half)
- [ ] Once so far

### Severity (see the severity guide) (required)
<!-- Triage may change it. -->
<!-- Tick one -->
- [ ] S1 Critical: data lost/exposed or core flow blocked, no workaround
- [ ] S2 Major: core feature wrong or failing for a group
- [ ] S3 Minor: works with an easy workaround
- [ ] S4 Cosmetic: looks or reads wrong only
- [ ] Not sure (triage will set it)

### Evidence
<!-- Drag in a screen recording or screenshot. Add console errors, request IDs or log links. -->


### Console or log output
<!-- Paste text, not screenshots of text. Remove secrets and personal data. -->
```shell

```

### Workaround
<!-- What users can do meanwhile, or "none known". -->


### Before you submit (required)
- [ ] I searched existing issues and this is not a duplicate
- [ ] I removed passwords, tokens and personal data from attachments

Why a form beats a blank issue

Record the video part

The Evidence field accepts drag-and-drop; a short clip of the bug saves a round of questions. Bobbin is a free Chrome extension that records your screen, a window or a tab with your microphone and an optional webcam bubble. No account, no watermark, no time limit, and nothing is uploaded: the file stays on your computer.

  1. Click the Bobbin icon in Chrome's toolbar and choose Record screen, window or tab.
  2. Pick your microphone and turn on the camera if you want the webcam bubble.
  3. Press Start recording, choose what to share in Chrome's picker, and wait for the 3-second countdown.
  4. Pause with Alt+Shift+P, stop with Alt+Shift+S, then press Download to save the file.

To keep other tabs and notifications out of it, share just the Chrome tab (the webcam bubble appears only in screen and window recordings). Bobbin saves MP4 where your browser supports it (Chrome 126 or newer), WebM otherwise, and tells you which it used.

File size: our 60-minute 1080p test came to about 246 MB (roughly 4 MB a minute) on a simple synthetic screen; busy real screens can be larger, so a 1–2 minute clip is usually small enough to attach.

From The Bug Report & QA Kit

The kit has 9 GitHub issue forms, config.yml, a PR template and a script that creates the labels. The full kit: 10 bug templates for GitHub, Jira, Linear and Markdown, 9 release checklists (126 checks), the severity guide, 8 bug-video scripts and trackers.

See the QA kit ($15, one-time) PDF + ZIP · 7-day refund · more free samples on the page

Checked on 23 October 2026 from their own pages: GitHub Docs: Syntax for issue forms. Features change; check the linked page before you rely on it.

Loom, Vidyard, Tella, Tango, Screencastify, Screenity, Zoom and Slack are trademarks of their respective owners. Bobbin is not affiliated with them. Prices and plan limits from their public pages as of 22 Oct 2026.

Frequently asked questions

Where do GitHub issue templates go?

In the .github/ISSUE_TEMPLATE folder of your repository, on the default branch. YAML files there become issue forms; .md files are Markdown templates.

What is the difference between bug_report.yml and bug_report.md?

The .yml file is an issue form with typed fields, dropdowns, checkboxes and required validation. The .md file pre-fills the issue body with text that people can delete.

Why aren't my labels applied?

GitHub only adds labels from the template if they already exist in the repository. Create bug and needs-triage first.

Can I disable blank issues?

Yes: set blank_issues_enabled: false in .github/ISSUE_TEMPLATE/config.yml, as in the example above.

Record your screen and camera. Keep the file.

Free, no account, no watermark, no time limit. Saves an MP4 on your computer.

Launching on the Chrome Web Store soon. The Install page has the link as soon as it is live.