Compose a .gitignore from curated per-stack templates — deduped and ready to commit.
# .gitignore — generated with FreeToolHub node_modules/ npm-debug.log* yarn-error.log* .env .env.local coverage/ dist/ build/ .DS_Store .AppleDouble .LSOverride ._* .vscode/* !.vscode/settings.json !.vscode/extensions.json history/
The .gitignore is generated locally from templates. Nothing is uploaded.
Git matches patterns top-to-bottom: later rules can re-include earlier exclusions — that is why the VS Code template excludes .vscode/* then re-includes !.vscode/settings.json. A trailing slash (build/) restricts matches to directories; * globs within a path segment, and patterns with a slash are anchored to the repository root. Combining templates is safe because this generator dedupes identical lines across stacks — picking Node + macOS + VS Code yields one clean file, not three copies of the same rules.
Template blocks overlap heavily; the builder keeps the first occurrence of each unique line.
Dev starts a TypeScript monorepo on a Mac with teammates on Windows, all using VS Code, deploying to Cloudflare.
Generate .gitignore files online free from 12 stack templates, merged with duplicates removed.
Every real project spans several ecosystems at once: a Next.js app on Windows in VS Code needs runtime ignores, OS junk filters, and editor noise exclusion simultaneously. Instead of copying one template and hand-adding the rest, pick all that apply and get a merged, deduplicated file in one shot.
The generator stacks Node, Python, Go, Rust, React, Next.js, Django, Cloudflare, macOS, Windows, VS Code, and JetBrains templates, then removes duplicate rules that overlap between them. The result is one clean .gitignore that reads like a human wrote it - because the deduplication is what a careful human would have done anyway.
Start with your language runtime (Node, Python, Go, or Rust), add your framework if one applies (React, Next.js, Django), then add your editor (VS Code or JetBrains) and your OS (macOS or Windows). A typical web project uses four to five templates stacked together.
Templates overlap - Node, React, and Next.js all ignore node_modules, for example. The generator merges your selection into one file and removes duplicate rules, so you get a clean .gitignore without the repeated blocks that stacking raw templates would produce.
Yes, the runtime templates include .env patterns and common credential paths. But no generator can know the specific secrets of your project - always review the output before your first commit, and never rely on .gitignore alone as your only safeguard.
Why did the elephant paint its toenails red?
No paywalls, no signups, no data sold. Built by a solo developer who believes useful tools should be accessible to everyone.
☕Support me on Ko-fi— keep tools free100% of proceeds go towards hosting & building more free tools.