What this builds
Pick the stacks and tools your project actually uses, and you get a ready-to-commit .gitignore. Node plus macOS plus VS Code? Three clicks. Each template drops in as its own labeled section so anyone reading the file later knows exactly why target/ or .DS_Store is in there.
Fourteen templates ship with the tool, sorted into five groups: languages (Node, Python, Java, Go, Rust), operating systems (macOS, Windows, Linux), editors (VS Code, JetBrains/IntelliJ, Visual Studio), build output (Vue/React/Vite/Next/Nuxt), and the catch-all stuff everyone forgets, logs and .env files.
Why a per-section file beats one giant blob
Ever opened a .gitignore someone copy-pasted from a forum and found 400 lines covering Xcode, Android, and Maven on a plain Node project? Noise. When you cherry-pick only what applies, the file stays short and honest. The section headers (’# ---- Node ----’, ’# ---- macOS ----’) make it trivial to delete a block later if you drop a dependency.
Here’s the part people sleep on: the env-files template. .env, .env.local, *.pem, secrets.json. Forgetting that one is how API keys end up on GitHub. GitGuardian scans millions of commits a month and still finds thousands of leaked secrets weekly. Catch it before the first push, not after.
How to use it
Click a template chip to toggle it on or off. The preview on the right rebuilds the moment you change the selection, so there’s no separate generate button to hunt for. Want everything? Hit Select all. Starting fresh? Clear wipes it.
When the file looks right, copy it to your clipboard or download it straight as .gitignore. Drop that into your repo root, run git status, and the ignored paths vanish from the staging list. Done.
A quick gotcha: .gitignore only affects files Git isn’t already tracking. If you committed node_modules/ last week, adding it here won’t untrack it. Run git rm -r --cached node_modules first, then commit the cleaned-up state.
Good to know
The templates lean on the patterns GitHub itself maintains in its public gitignore repo, trimmed to the rules that actually matter day to day. The VS Code block keeps settings.json and launch.json tracked (those are usually worth sharing) while ignoring the rest of .vscode/. Small touches like that save you a follow-up edit.
Everything happens in the page. Your selections never hit a server, nothing gets logged, and the file is generated by JavaScript running on your machine. Work offline if you want.
Common questions
Can I edit the output before downloading?
Not in the preview pane directly, but copy it into your editor and tweak away. The generated file is a plain starting point, not a locked contract.
Does it handle monorepos?
Yep. Select every stack in the repo, Node and Python and Go together, and you’ll get all three sections in one file. For per-package ignores, drop smaller .gitignore files inside each workspace folder.
Why is Cargo.lock ignored in the Rust template?
Because it’s library-style by default. If you’re building a binary or app, you usually want to commit Cargo.lock, so delete that line. Same logic applies to lockfiles in other ecosystems.
What about Git LFS or large media?
Those aren’t covered here. .gitignore excludes files from version control entirely; LFS is a separate setup for tracking large files. Use this tool for the standard junk and handle LFS in .gitattributes.
Is the order of templates fixed?
The output always follows a stable top-to-bottom order regardless of which chip you click first, so re-running the tool with the same choices gives you an identical file. Nice for keeping diffs clean.