What Is an Issue Template in GitHub?
A thorough, zero-prior-knowledge walkthrough of how GitHub helps teams collect the right information every time someone reports a bug or requests a feature — instead of guessing what's missing.
Imagine calling a plumber to report a leak, and they simply ask, “so, what’s wrong?” You might describe the water, but forget to mention which room, how long it’s been leaking, or whether you’ve already tried turning off the main valve — details the plumber actually needed from the very first call. Now imagine instead they hand you a short form: “Which room? How long? Have you shut off the water?” Suddenly the important details come out automatically, without either of you needing to remember to ask. An issue template does exactly this for a software project — it turns a blank, easy-to-get-wrong report into a guided form that reliably captures what a team actually needs. In this guide, we’ll build up this idea from zero — what an issue template is, why it exists, exactly how GitHub processes one behind the scenes, and how to design one that actually gets used.
1Core Concepts: What an Issue Template Actually Is
What it is: An issue template is a predefined structure that GitHub shows to someone before they create a new issue on a repository — guiding them to fill in specific sections, such as steps to reproduce a bug or the motivation behind a feature request, instead of starting from a completely blank text box.
Why it exists: When anyone can open an issue with no guidance at all, reports naturally end up wildly inconsistent — some overly brief (“it’s broken”), some missing crucial details, some mixing several unrelated problems into one report. An issue template exists to prompt the reporter, at the exact moment they’re writing, for the specific pieces of information the team actually needs to understand and act on the report.
Where it’s used: Issue templates appear on GitHub repositories of every size — a small personal project might use one simple bug-report template, while a large open-source project might offer several different templates (bug report, feature request, documentation issue) so reporters pick whichever matches their situation.
Think of an issue template like a hospital’s intake form. Instead of a nurse asking every new patient to freely describe whatever they feel like, the form specifically asks for symptoms, when they started, and any allergies — because experience has shown these are exactly the details needed to help quickly. An issue template plays the same role for a software team: it encodes hard-won experience about what information is actually useful, so every reporter provides it automatically.
Practical example: A user of an open-source photo-editing tool encounters a crash. Instead of opening a blank issue and writing “it crashed, please fix,” GitHub presents them with a bug-report template asking for the exact steps that led to the crash, the operating system they’re using, and the version of the software installed — information the maintainers would otherwise have to chase down through several back-and-forth comments.
2The Problem & Motivation Behind Issue Templates
In GitHub’s early years, issues were simply a blank title and a blank description box — completely open-ended. This worked reasonably well for small projects with a handful of contributors who already understood exactly what information mattered. But as open-source projects grew to attract contributors and users who had never interacted with the maintainers before, a predictable pattern emerged: many issues arrived missing exactly the details needed to investigate them, forcing maintainers to spend significant time simply asking follow-up questions before any actual problem-solving could begin.
This back-and-forth wasted time for everyone involved — the reporter had to wait, and the maintainer had to ask, wait, and ask again. Issue templates were introduced specifically to move that information-gathering step earlier, embedding it directly into the reporting process itself so the necessary details show up in the very first message.
Git itself has no concept of “issues” at all — issues, and therefore issue templates, are entirely a feature of the GitHub platform’s collaboration tools, built to support project management and communication around a Git repository, not a part of Git’s version-control mechanics.
The core problem issue templates solve: how do you reliably get the specific information a team needs from someone who may have never reported an issue before, without relying on that person already knowing what to include, and without maintainers having to repeatedly ask the same clarifying questions?
3Where Issue Templates Live & How GitHub Finds Them
Issue templates are stored as ordinary files inside the repository itself, in a special, reserved folder that GitHub specifically looks for. Because they’re just files in the repository, they’re version-controlled exactly like any other project file — changes to a template go through the same commit history, and can be reviewed through a pull request (as covered in a related guide) just like a code change would be.
There are two supported formats for these files: plain Markdown files with a small block of extra configuration at the top (specifying things like the template’s name and a default title), or a more structured format that lets maintainers define an actual interactive form — with distinct fields, dropdown menus, and checkboxes — rather than just a block of pre-written Markdown text for the reporter to fill in around.
GitHub scans for templates
Markdown-based or structured form
a repository can offer at once
Because a repository can contain more than one template file, GitHub can offer multiple distinct options — a reporter creating a new issue is shown a chooser screen listing every available template, so they can pick whichever one actually matches what they’re trying to report.
4Internal Working: What Happens When Someone Opens a New Issue
flowchart LR
A["User clicks New Issue"] --> B["GitHub checks the repository's template folder"]
B --> C{"Any templates configured?"}
C -->|No| D["Plain blank issue form is shown"]
C -->|Yes, one| E["That template is shown directly"]
C -->|Yes, multiple| F["Chooser screen lists all templates"]
F --> G["User selects the matching template"]
G --> H["Pre-filled or structured form is displayed"]
E --> H
H --> I["User completes the fields and submits"]
Step by step, in plain language: first, someone clicks the button to create a new issue on a repository. Second, GitHub checks whether that repository has any template files configured in its reserved folder. Third, if there are none, GitHub simply shows the traditional blank title-and-description box, exactly as it always did before templates existed. Fourth, if exactly one template exists, GitHub shows it immediately; if multiple exist, GitHub first shows a chooser screen listing each one — often with a short description of when to use it — so the reporter picks the option matching their situation. Fifth, once a template is selected, GitHub displays it: either pre-written Markdown headings and prompts the reporter fills in around, or, for the structured form format, distinct labeled fields, dropdowns, and checkboxes the reporter interacts with directly. Finally, the reporter completes the relevant sections and submits, creating a new issue whose content already follows the team’s intended structure.
Because this all happens automatically, based purely on files already committed to the repository, no ongoing manual effort is required from maintainers once a template is set up — every future reporter gets guided the same way, without anyone needing to remember to explain the process to them individually.
5Data Flow & Lifecycle From Report to Resolution
Reporter Selects a Template
A user encountering a bug chooses the “Bug Report” template from the chooser screen, rather than a blank issue.
Structured Information Is Captured
The reporter fills in the requested fields — steps to reproduce, expected versus actual behavior, environment details — as prompted by the template.
Maintainer Triages the Issue
Because the needed details are already present, a maintainer can quickly assess severity and priority without an initial round of clarifying questions.
Issue Is Labeled & Assigned
Some templates automatically apply labels (like “bug”) or route the issue to a specific team, based on which template was used.
Work Begins
A developer picks up the issue with all the context needed already available, often referencing the issue in the pull request that eventually fixes it.
Issue Is Closed
Once resolved, the issue is closed, but remains a permanent, searchable record — one that’s especially useful later precisely because it was well-structured from the start.
Notice how the value of a good template compounds: the same handful of upfront questions saves a small amount of back-and-forth on every single issue, and across hundreds or thousands of issues over a project’s lifetime, that adds up to a substantial amount of maintainer time saved.
6Markdown Templates vs. YAML Form Templates
The original, simpler style is a Markdown-based template: essentially a pre-written issue description containing headings and instructions, like “## Steps to Reproduce” followed by a blank line for the reporter to type under. It’s easy to create and edit, but it relies entirely on the reporter actually following the structure rather than deleting it or ignoring it.
The newer, more structured style — often called a form-based or “YAML” template, named after the configuration format used to define it — lets maintainers define genuinely separate input fields: a dropdown to select which version of the software is affected, a checkbox confirming the reporter searched for existing issues first, or a required text box that can’t be submitted empty. This format enforces structure far more strongly, since the reporter interacts with real form controls rather than freely editable text.
Markdown Template
- Simple to write and understand
- Feels familiar — just a pre-filled text box
- Easy for a reporter to accidentally delete sections
- Cannot enforce that a field is actually filled in
Form-Based (YAML) Template
- Distinct fields, dropdowns, and checkboxes
- Can mark specific fields as required before submission
- Produces more consistently structured issues
- Takes a bit more effort to design correctly upfront
A Markdown template can never truly force a reporter to provide something — the pre-written text is only a suggestion they can freely edit or remove. If a piece of information is absolutely essential to receive every time, a form-based template with a required field is the more reliable choice.
7Common Template Types Teams Create
Bug Report
Captures what went wrong, steps to reproduce it, expected versus actual behavior, and environment details like operating system or version.
Feature Request
Captures the problem the requester is trying to solve, their proposed solution, and any alternatives they considered.
Documentation Issue
Focuses specifically on unclear, missing, or incorrect documentation, distinct from a code bug report.
Security Vulnerability Report
Often deliberately routes reporters away from a public issue at all, instead pointing them to a private reporting channel, given how sensitive security details are.
Question / Support Request
Used by projects that want to separate genuine bugs from general usage questions, sometimes redirecting questions to a discussion forum instead.
Blank Issues Disabled
Not a template itself, but a configuration option some projects enable to require every new issue go through one of the defined templates, rather than allowing a free-form blank issue at all.
A project doesn’t need every one of these — a small personal project might get by with just a single, simple bug-report template, while a large, high-traffic open-source project may offer several, each carefully tuned for a specific kind of report.
8Automatic Labels, Assignees & Routing
A template can be configured to automatically apply one or more labels — the small, colored tags GitHub uses to categorize issues — the moment an issue is created from it. A bug-report template might automatically add a “bug” label, while a feature-request template automatically adds “enhancement,” saving a maintainer the small but repetitive task of labeling every incoming issue by hand.
Templates can similarly be configured to automatically assign a specific person or team as the default assignee, useful when a particular category of issue — say, anything related to a specific part of the codebase — should always start in front of the same group of people responsible for that area.
Routing by Template Choice
A large project with separate teams for its mobile app and its web dashboard offers two distinct bug-report templates — one for each product — each pre-applying a different label and a different default assignee, so a report is automatically routed toward the right team the moment it’s created, without anyone needing to manually triage which team should look at it first.
9Advantages, Disadvantages & Trade-offs
| Aspect | Advantage | Trade-off / Limitation |
|---|---|---|
| Report quality | Reliably captures the specific details maintainers actually need | Requires upfront effort to design the right questions |
| Maintainer time | Reduces repetitive back-and-forth asking for missing information | A poorly designed template can feel like unnecessary bureaucracy to reporters |
| Consistency | Every report of a given type follows the same, comparable structure | Markdown templates can’t force compliance — a determined reporter can ignore them |
| Automation | Can auto-apply labels and assignees, reducing manual triage work | Form-based templates take more time to configure correctly than plain text |
| Accessibility | Helps first-time contributors know exactly what’s expected of them | Too many required fields can discourage a quick, simple report |
The core trade-off to internalize is this: an issue template trades a small amount of one-time design effort — and a small amount of extra friction for the reporter — for a large, ongoing reduction in wasted back-and-forth communication. Getting the balance right means asking for what’s genuinely necessary, and no more.
10Security Considerations
Never design a bug-report template that asks reporters to paste raw configuration files, environment variables, or logs without warning them to remove sensitive values first. Reporters frequently copy-paste exactly what a template asks for without reviewing it closely, and logs or config output can easily contain passwords, tokens, or private URLs that shouldn’t become public.
Because issues on a public repository are visible to anyone, a dedicated security-vulnerability template — as mentioned in Chapter 7 — typically avoids collecting sensitive vulnerability details in a public issue at all. Instead, well-designed security templates redirect the reporter to a private reporting channel, so a genuine, unpatched vulnerability isn’t accidentally broadcast to the public, including to anyone who might exploit it, before the maintainers have had a chance to fix it.
It’s also worth remembering that, like any file in the repository, issue template files themselves go through the same code review process as other changes (covered in a related guide) before being merged — this matters because a form-based template can technically include some interactive behavior, so changes to it deserve the same scrutiny as any other configuration affecting how the project’s public-facing tools behave.
11Design Patterns & Anti-Patterns
The Minimal-Friction Pattern keeps a template short, asking only for the two or three pieces of information that are almost always needed, trusting maintainers to ask follow-up questions for anything unusual rather than trying to anticipate every possible case upfront.
The Multi-Template Chooser Pattern offers several distinct templates — bug, feature, documentation — each tightly focused on its own category, so reporters aren’t forced to skip irrelevant sections meant for a different kind of report.
The Guided-Checklist Pattern includes checkboxes confirming the reporter has already searched for existing issues or read the contribution guidelines, reducing duplicate reports and reports that don’t match the project’s actual scope.
The Situation
A maintainer, wanting to avoid ever missing a useful detail, designs a bug-report template with fifteen required fields covering every conceivable piece of context.
Why This Becomes a Problem
Reporters facing a long, demanding form often abandon it partway through, or fill in irrelevant fields with placeholder text just to get past them — producing noisy, low-quality reports despite the template’s good intentions.
The Better Pattern
Ask only for what’s genuinely necessary in the vast majority of cases, and rely on comments to gather anything unusual afterward — a short, respected template beats a long, resented one.
Common anti-patterns to avoid: the Ignored Template (a Markdown template so easy to delete that most reporters simply erase it and write a single unstructured line instead); the Never-Updated Template (a template that still references an old version numbering scheme or a discontinued product feature, confusing new reporters); and the One-Size-Fits-All Template (using a single bug-report template for feature requests too, forcing awkward, irrelevant answers).
12Best Practices & Common Mistakes
Start From Real Past Issues
Look at what information you’ve had to ask for repeatedly in past issues, and build the template around exactly that, rather than guessing.
Keep It as Short as Possible
Only require fields that are genuinely essential nearly every time — everything else can be a comment follow-up instead.
Offer More Than One Template When Needed
Split distinct categories — bugs, features, documentation — into separate templates rather than one template trying to serve every case.
Use Required Fields for Truly Essential Information
Reach for a form-based template with required fields when a piece of information is genuinely non-negotiable, rather than hoping a Markdown prompt is followed.
Revisit Templates Periodically
Update templates as the project evolves, so they never reference outdated version numbers, discontinued features, or old processes.
Common mistakes beginners make: copying a generic template from another project without adjusting it to their own project’s actual needs; requiring so many fields that reporters give up partway through; and never revisiting a template after initially setting it up, letting it grow stale as the project changes.
13Real-World & Industry Examples
Large Open-Source Frameworks
A widely used open-source programming framework typically offers separate bug-report and feature-request templates, with the bug-report version using required fields for the exact framework version and a minimal code example that reproduces the problem, since maintainers receive far too many reports to investigate each one without that baseline information already provided.
Enterprise Internal Tools
An internal engineering team building tools for their own company might use a simple, single template asking just for a description and the affected environment, since the audience is small, trusted, and colleagues can easily be asked follow-up questions directly if something’s missing.
Design-System and Component Libraries
A team maintaining a shared design system often uses a template with a dropdown listing each specific component, so that issues automatically arrive already categorized by which part of the library is affected, streamlining routing to the right sub-team.
Community-Driven Projects with High Volume
A project that regularly receives more issues than its small volunteer team can triage often disables blank issues entirely, forcing every report through a structured template, specifically to reduce the volume of low-quality, hard-to-act-on reports the team has to sift through by hand.
14Frequently Asked Questions
15Summary and Key Takeaways
What to Remember
- An issue template is a GitHub platform feature, not a Git feature — it guides someone creating a new issue toward providing specific, structured information.
- It exists to eliminate repetitive back-and-forth — capturing essential details upfront instead of maintainers repeatedly asking for missing context.
- Templates live as version-controlled files inside the repository itself, in a reserved folder GitHub automatically checks when someone starts a new issue.
- Two formats exist — simple pre-written Markdown text, or a more structured form with genuinely required fields, dropdowns, and checkboxes.
- A repository can offer multiple templates, and can even automatically apply labels or assignees based on which one is used.
- Sensitive details, especially security vulnerabilities, generally shouldn’t go through a public issue template — a private reporting channel is the safer path.
- The best templates ask only for what’s genuinely essential — a short, respected template consistently outperforms a long, exhaustive one that reporters abandon or ignore.