Gitignore Generator & Checker
Generate a .gitignore for common stacks, or check whether a path is actually ignored.
Choose stacks and press Generate.
How it works
Two directions of the same question, because they come up together: what should a new project's
.gitignore contain, and does an existing one actually cover a specific path. Generate mode assembles
a template from the stacks you pick; Check mode tests real paths against a pasted
.gitignore.
Checking uses git's own pattern grammar, not a regex approximation
A trailing / only matches a directory, a leading / anchors to the file's own location
rather than matching anywhere in the tree, ** behaves differently from a bare *, and a
later ! line can re-include a path a broader pattern excluded. Getting any of that wrong in a checker
is worse than not having one — a false "not ignored" is a credential that ends up committed. This uses the
`ignore` library (the same pattern engine ESLint's own ignore-file handling is built on) rather than a
hand-written approximation.
Templates are curated, not fetched
This tool makes no network request, so the per-stack templates are hand-written common entries rather than a live pull from GitHub's own template collection — enough to cover the usual build artefacts and local-only files for each stack, not a byte-for-byte mirror of any single source.
Example
Checking node_modules/react/index.js against a generated Node template reports it ignored, matched by
the node_modules/ rule — Check mode always names which pattern line decided the verdict, not just the
yes/no.
Frequently asked questions
How is Check mode different from eyeballing the .gitignore file?
Gitignore's pattern grammar has real edge cases — a trailing / matches only a directory, a leading / anchors to one location instead of matching anywhere, ** behaves differently from a bare *, and a later ! line can re-include a path a broader pattern excluded. This uses the ignore library, the same pattern engine ESLint's own ignore-file handling is built on, rather than a hand-written approximation that could report a false "not ignored" on a path that actually is.
Why does it name which pattern matched?
Because "ignored: yes" alone does not tell you which line to edit if the verdict is wrong. Every result names the specific pattern that decided it, so removing or negating that one line is a one-line fix instead of a guessing game across the whole file.
Can I combine multiple stacks?
Yes — check as many stack boxes as apply and Generate mode concatenates their sections under separate headers. A Node service with a JetBrains IDE and a Docker build picks all three rather than requiring three separate downloads merged by hand.
Related tools
Git URL Parser
Break a git remote URL into protocol, host, owner and repository.
LocalEnv File Converter
Convert between .env, JSON and YAML — the same config in three syntaxes.
LocalGitHub URL Parser
Break a github.com URL into owner, repo, ref, path and line range.
LocalCommit Message Formatter
Validate a Conventional Commits message, or build one from separate fields.
LocalSemVer Comparator
Compare two versions using SemVer 2.0.0 precedence, not string sort.
LocalSemVer Range Checker
Check whether a version satisfies a range like ^1.2.0 or ~2.0.0.
Local