.gitignore Generator

Build a .gitignore from curated stack, OS and editor templates, bundled locally so nothing is fetched from a server while you assemble the file.

Pick your stacks, OS and editors:

Languages & frameworks
Operating systems
Editors & IDEs
.gitignore
Select one or more templates above.

Generate a .gitignore

Pick the languages, frameworks, operating systems, and editors your project uses, and this tool assembles a ready-to-use .gitignore from curated templates — so build output, dependency folders, secrets, and OS cruft never end up in your repository. Combine as many as you need: a pattern an earlier template already wrote is not written again, and the Search templates box narrows the list by name or by group, such as Editors & IDEs. Lines of your own go in the box under the templates and come last, in a ### Custom ### section, so a ! line of yours can bring back a file a template ignores.

Everything runs in your browser from a bundled set of the most common ignore rules; nothing is fetched from a server. Copy the result, or download it and put it in your project root — Chrome and Edge save it as gitignore without the leading dot, so rename it to .gitignore there. With a template ticked, the file's first lines name the version of the bundled template set that built it and give a link that reopens the same picks; lines of your own are not in the link.

Frequently asked questions

Which templates are included?

The most-used stacks and environments — Node, Python, Java, Go, Rust, Ruby/Rails, PHP/Laravel, Unity, Android, Terraform, plus macOS, Windows, Linux, VS Code and JetBrains.

Where do I put the file?

Save it as .gitignore in your repository root; if the download arrives as gitignore, rename it (mv gitignore .gitignore, or ren gitignore .gitignore on Windows). You can combine several templates and edit the result freely.

What happens when the templates I pick share a pattern?

It is written once, under the first template that has it — Node and Python together write build/, dist/ and .env a single time. Comments, blank lines and every ! negation are kept, and after a negation a later copy is kept too, because .gitignore is last-match-wins and that copy may be what ignores the file again. Lines typed into Your own patterns (one per line, added last) are checked against the templates the same way, and come after them so a ! line of yours overrides theirs.

Are the templates grouped, and can the file explain its lines?

Yes. The picker is split into Languages & frameworks, Operating systems and Editors & IDEs, and Search templates still filters inside each group, hiding one it empties. Tick Explain each group of lines with a comment and a note goes above each group of a template’s lines — # Dependencies over node_modules/, # Folder view settings over .DS_Store. It starts unticked, so the file carries no notes, and once ticked it is kept in the address that Copy link copies. A note is dropped together with its lines when an earlier template already wrote them.